:root {
    --ubo-purple-deep: #160018;
    --ubo-purple: #4b1559;
    --ubo-purple-soft: #7c3d8a;
    --ubo-gold: #d9b35f;
    --ubo-gold-soft: #f4dc9c;
    --ubo-cream: #fff8ec;
    --ubo-ink: #251424;
    --ubo-muted: #705d70;
    --ubo-white: #ffffff;
    --ubo-shadow: 0 24px 70px rgba(22, 0, 24, 0.22);
}

.ubo-sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

* {
    box-sizing: border-box;
}

body {
    margin: 0;
    background: var(--ubo-cream);
    color: var(--ubo-ink);
    font-family: "Inter", Arial, sans-serif;
    line-height: 1.6;
}

img {
    max-width: 100%;
    display: block;
}

a {
    color: inherit;
    text-decoration: none;
}

.ubo-site-header {
    position: sticky;
    top: 0;
    z-index: 10;
    background: rgba(22, 0, 24, 0.97);
    color: var(--ubo-white);
    box-shadow: 0 8px 28px rgba(22, 0, 24, 0.2);
}

.ubo-header-inner {
    width: min(1180px, calc(100% - 32px));
    min-height: 96px;
    margin: 0 auto;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 32px;
}

.ubo-admin-site-header .ubo-header-inner {
    min-height: 72px;
}

.ubo-admin-site-header .ubo-logo-image {
    width: 70px;
    height: 70px;
}

.ubo-admin-site-header .ubo-main-nav {
    gap: clamp(14px, 2vw, 26px);
    font-size: 0.9rem;
}

.ubo-admin-site-header .ubo-nav-link {
    padding: 10px 0;
}

.ubo-logo-link {
    flex: 0 0 auto;
}

.ubo-logo-image {
    width: 96px;
    height: 96px;
    object-fit: contain;
}

.ubo-main-nav {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: clamp(18px, 3vw, 42px);
    font-weight: 700;
}

.ubo-nav-link {
    position: relative;
    padding: 14px 0;
    color: rgba(255, 255, 255, 0.86);
    white-space: nowrap;
}

.ubo-nav-link::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 5px;
    height: 2px;
    background: var(--ubo-gold);
    transform: scaleX(0);
    transform-origin: center;
    transition: transform 180ms ease;
}

.ubo-nav-link:hover,
.ubo-nav-link-active {
    color: var(--ubo-gold-soft);
}

.ubo-admin-icon-nav-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 24px;
}

.ubo-admin-icon-nav-link svg {
    width: 18px;
    height: 18px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.8;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.ubo-nav-link:hover::after,
.ubo-nav-link-active::after {
    transform: scaleX(1);
}

.ubo-menu-toggle {
    display: none;
    width: 44px;
    height: 44px;
    border: 1px solid rgba(217, 179, 95, 0.45);
    border-radius: 8px;
    background: transparent;
    padding: 10px;
}

.ubo-menu-toggle span {
    display: block;
    height: 2px;
    margin: 5px 0;
    background: var(--ubo-gold-soft);
}

.ubo-social-strip {
    background: #2a0730;
}

.ubo-social-inner {
    width: min(1180px, calc(100% - 32px));
    margin: 0 auto;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 16px;
    padding: 10px 0;
    color: var(--ubo-gold-soft);
}

.ubo-social-links {
    display: flex;
    align-items: center;
    gap: 16px;
}

.ubo-social-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border: 1px solid rgba(244, 220, 156, 0.32);
    border-radius: 8px;
    color: var(--ubo-gold-soft);
    transition: color 180ms ease, border-color 180ms ease, background 180ms ease;
}

.ubo-social-link svg {
    width: 18px;
    height: 18px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.8;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.ubo-social-link:nth-child(2) svg,
.ubo-social-link:nth-child(3) svg {
    fill: currentColor;
    stroke: none;
}

.ubo-social-link:hover {
    color: var(--ubo-white);
    border-color: rgba(244, 220, 156, 0.72);
    background: rgba(244, 220, 156, 0.1);
}

.ubo-top-phone {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    min-height: 34px;
    color: var(--ubo-gold-soft);
    font-weight: 800;
    white-space: nowrap;
}

.ubo-top-phone svg {
    width: 18px;
    height: 18px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.ubo-top-phone:hover {
    color: var(--ubo-white);
}

.ubo-page-main {
    overflow: hidden;
}

.ubo-floating-actions {
    position: fixed;
    right: 4px;
    bottom: 96px;
    z-index: 20;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 12px;
}

.ubo-whatsapp-float {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border-radius: 8px;
    background: #25d366;
    color: var(--ubo-white);
    box-shadow: 0 14px 34px rgba(22, 0, 24, 0.28);
    transition: transform 180ms ease, box-shadow 180ms ease;
}

.ubo-feedback-float {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    min-height: 82px;
    min-width: 36px;
    padding: 8px 6px;
    border-radius: 8px;
    background: #2a0730;
    color: var(--ubo-gold-soft);
    border: 1px solid rgba(244, 220, 156, 0.62);
    font-weight: 800;
    box-shadow: 0 14px 34px rgba(22, 0, 24, 0.24);
    transition: transform 180ms ease, box-shadow 180ms ease, color 180ms ease;
    writing-mode: vertical-rl;
    text-orientation: upright;
}

.ubo-feedback-float svg {
    width: 16px;
    height: 16px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
    transform: rotate(90deg);
}

.ubo-feedback-float:hover {
    color: var(--ubo-white);
    background: var(--ubo-purple-deep);
    transform: translateY(-3px);
    box-shadow: 0 18px 40px rgba(22, 0, 24, 0.32);
}

.ubo-whatsapp-float svg {
    width: 22px;
    height: 22px;
    fill: currentColor;
}

.ubo-whatsapp-float:hover {
    transform: translateY(-3px);
    box-shadow: 0 18px 40px rgba(22, 0, 24, 0.34);
}

.ubo-hero-section {
    position: relative;
    min-height: 540px;
    display: flex;
    align-items: center;
    background-image: url("../images/hero-light-purple.png");
    background-size: cover;
    background-position: center;
    color: var(--ubo-purple-deep);
}

.ubo-hero-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, rgba(255, 248, 236, 0.74), rgba(211, 174, 232, 0.34) 48%, rgba(118, 67, 147, 0.08));
}

.ubo-hero-content {
    position: relative;
    width: min(1180px, calc(100% - 32px));
    margin: 0 auto;
    padding: 38px 0 72px;
    transform: translateY(-24px);
}

.ubo-eyebrow {
    margin: 0 0 12px;
    color: var(--ubo-gold);
    font-size: 0.78rem;
    font-weight: 800;
    letter-spacing: 0.16em;
    text-transform: uppercase;
}

.ubo-hero-content h1,
.ubo-section-heading h2,
.ubo-feature-content h2 {
    margin: 0;
    font-family: "Cinzel", Georgia, serif;
    letter-spacing: 0;
}

.ubo-hero-content h1 {
    max-width: 680px;
    font-size: clamp(2.2rem, 5.4vw, 4.6rem);
    line-height: 1.02;
}

.ubo-hero-text {
    max-width: 570px;
    margin: 26px 0 0;
    font-size: 1.16rem;
    color: #44294b;
}

.ubo-hero-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
    margin-top: 36px;
}

.ubo-primary-button,
.ubo-secondary-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 48px;
    padding: 13px 24px;
    border-radius: 8px;
    font-weight: 800;
}

.ubo-primary-button {
    background: #2a0730;
    color: var(--ubo-gold-soft);
}

.ubo-secondary-button {
    border: 1px solid rgba(75, 21, 89, 0.42);
    color: var(--ubo-purple-deep);
    background: rgba(255, 255, 255, 0.42);
}

.ubo-section {
    width: min(1180px, calc(100% - 32px));
    margin: 0 auto;
    padding: 84px 0;
}

.ubo-welcome-section {
    display: grid;
    grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
    gap: 56px;
    align-items: start;
}

.ubo-welcome-section .ubo-section-heading {
    transform: translateY(-12px);
}

.ubo-section-heading h2,
.ubo-feature-content h2 {
    color: var(--ubo-purple-deep);
    font-size: clamp(2rem, 4vw, 3.4rem);
    line-height: 1.12;
}

.ubo-section-intro,
.ubo-feature-content p {
    margin: 0;
    color: var(--ubo-muted);
    font-size: 1.08rem;
}

.ubo-services-section {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 24px;
    padding-top: 0;
}

.ubo-service-card {
    position: relative;
    overflow: hidden;
    min-height: 240px;
    padding: 32px;
    border-radius: 8px;
    background-color: var(--ubo-white);
    background-position: center;
    background-size: cover;
    border: 1px solid rgba(75, 21, 89, 0.12);
    box-shadow: var(--ubo-shadow);
}

.ubo-service-card::before {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, rgba(255, 248, 236, 0.96), rgba(255, 248, 236, 0.86) 46%, rgba(255, 248, 236, 0.62));
}

.ubo-service-card-foot-care {
    background-image: url("../images/service-foot-care.jpg");
}

.ubo-service-card-facials {
    background-image: url("../images/service-facials.jpg");
}

.ubo-service-card-head-spa {
    background-image: url("../images/service-head-spa.jpg");
}

.ubo-service-card h3 {
    position: relative;
    margin: 0 0 18px;
    color: var(--ubo-purple);
    font-family: "Cinzel", Georgia, serif;
    font-size: 1.55rem;
}

.ubo-service-card p {
    position: relative;
    max-width: 82%;
    margin: 0;
    color: var(--ubo-muted);
    font-weight: 600;
}

.ubo-popular-section {
    padding-top: 0;
}

.ubo-popular-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 24px;
    margin-top: 32px;
}

.ubo-popular-card {
    padding: 32px;
    border-radius: 8px;
    background: #f7ecfa;
    border: 1px solid rgba(75, 21, 89, 0.14);
}

.ubo-popular-card h3 {
    margin: 0 0 16px;
    color: var(--ubo-purple);
    font-family: "Cinzel", Georgia, serif;
    font-size: 1.45rem;
}

.ubo-popular-card p {
    margin: 0;
    color: var(--ubo-muted);
}

.ubo-news-section {
    background: var(--ubo-purple-deep);
    color: var(--ubo-white);
}

.ubo-news-inner {
    width: min(1180px, calc(100% - 32px));
    margin: 0 auto;
    padding: 82px 0;
}

.ubo-news-heading {
    display: flex;
    align-items: end;
    justify-content: space-between;
    gap: 32px;
    margin-bottom: 24px;
}

.ubo-news-heading h2 {
    margin: 0;
    max-width: 720px;
    font-family: "Cinzel", Georgia, serif;
    font-size: clamp(2rem, 4vw, 3.3rem);
    line-height: 1.12;
    letter-spacing: 0;
}

.ubo-news-link {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 44px;
    padding: 11px 18px;
    border: 1px solid rgba(244, 220, 156, 0.55);
    border-radius: 8px;
    color: var(--ubo-gold-soft);
    font-weight: 800;
}

.ubo-news-link:hover {
    color: var(--ubo-white);
    border-color: var(--ubo-gold-soft);
}

.ubo-news-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 22px;
}

.ubo-news-card {
    min-height: 260px;
    padding: 30px;
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.08);
    border: 1px solid rgba(244, 220, 156, 0.22);
}

.ubo-news-date {
    margin: 0 0 22px;
    color: var(--ubo-gold);
    font-size: 0.82rem;
    font-weight: 800;
    text-transform: uppercase;
}

.ubo-news-card h3 {
    margin: 0 0 16px;
    font-family: "Cinzel", Georgia, serif;
    font-size: 1.5rem;
    line-height: 1.2;
    letter-spacing: 0;
}

.ubo-news-card p:last-child {
    margin: 0;
    color: rgba(255, 255, 255, 0.78);
}

.ubo-feature-section {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(280px, 420px);
    gap: 48px;
    align-items: center;
    padding-top: 0;
}

.ubo-feature-list {
    display: grid;
    gap: 14px;
}

.ubo-feature-list span {
    padding: 18px 20px;
    border-left: 4px solid var(--ubo-gold);
    background: #f7ecfa;
    color: var(--ubo-purple-deep);
    font-weight: 800;
}

.ubo-feature-action {
    display: inline-flex;
    align-items: center;
    justify-content: flex-start;
    gap: 12px;
    min-height: 48px;
    width: 100%;
    margin: 6px 0;
    border: 1px solid rgba(244, 220, 156, 0.42);
    border-radius: 8px;
    padding: 14px 22px;
    font: inherit;
    font-weight: 800;
    line-height: 1.2;
    text-align: center;
    cursor: pointer;
    box-shadow: 0 14px 28px rgba(22, 0, 24, 0.16);
    transition: transform 160ms ease, box-shadow 160ms ease, color 160ms ease, background 160ms ease;
}

.ubo-feature-action svg {
    flex: 0 0 auto;
    width: 34px;
    height: 34px;
    padding: 7px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.12);
    fill: none;
    stroke: currentColor;
    stroke-width: 1.8;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.ubo-feature-action span {
    flex: 1;
    text-align: left;
}

.ubo-feature-action-offers {
    margin-top: 14px;
    background: linear-gradient(135deg, #2a0730, #4b1559);
    color: #f4dc9c;
}

.ubo-feature-action-vouchers {
    background: linear-gradient(135deg, #4b1559, #7c3d8a);
    color: #fff4cf;
}

.ubo-feature-action-membership {
    margin-bottom: 0;
    background: linear-gradient(135deg, #160018, #5e246b);
    color: #e8c777;
}

.ubo-feature-action:hover {
    color: var(--ubo-white);
    transform: translateY(-2px);
    box-shadow: 0 18px 36px rgba(22, 0, 24, 0.24);
}

.ubo-subscribe-popup {
    position: fixed;
    inset: 0;
    z-index: 90;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 20px;
}

.ubo-subscribe-popup-open {
    display: flex;
}

.ubo-subscribe-backdrop {
    position: absolute;
    inset: 0;
    border: 0;
    background: rgba(22, 0, 24, 0.58);
    cursor: pointer;
}

.ubo-subscribe-panel {
    position: relative;
    z-index: 1;
    width: min(460px, 100%);
    max-height: calc(100vh - 40px);
    overflow: auto;
    padding: 22px;
    border-radius: 8px;
    background: var(--ubo-white);
    border: 1px solid rgba(75, 21, 89, 0.14);
    box-shadow: 0 26px 80px rgba(22, 0, 24, 0.34);
}

.ubo-subscribe-head {
    display: flex;
    justify-content: space-between;
    align-items: start;
    gap: 14px;
    margin-bottom: 14px;
}

.ubo-subscribe-head h2 {
    margin: 0;
    color: var(--ubo-purple-deep);
    font-family: "Cinzel", Georgia, serif;
    font-size: 1.5rem;
    line-height: 1.15;
}

.ubo-subscribe-head button {
    border: 0;
    border-radius: 8px;
    padding: 8px 10px;
    background: var(--ubo-purple-deep);
    color: var(--ubo-gold-soft);
    font: inherit;
    font-weight: 800;
    cursor: pointer;
}

.ubo-subscribe-panel label {
    display: block;
    margin-top: 12px;
    color: var(--ubo-purple-deep);
    font-weight: 800;
}

.ubo-subscribe-panel label span {
    display: block;
    margin-bottom: 5px;
}

.ubo-subscribe-panel input {
    width: 100%;
    min-height: 42px;
    border: 1px solid rgba(75, 21, 89, 0.22);
    border-radius: 8px;
    padding: 9px 10px;
    color: var(--ubo-ink);
    font: inherit;
}

.ubo-subscribe-panel .ubo-primary-button {
    width: 100%;
    margin-top: 18px;
    border: 0;
    cursor: pointer;
    font: inherit;
}

.ubo-customer-membership-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 22px;
    min-height: 22px;
    margin-left: 6px;
    border-radius: 999px;
    background: var(--ubo-purple-deep);
    color: var(--ubo-gold-soft);
    font-size: 0.74rem;
    font-weight: 900;
}

.ubo-basic-page {
    min-height: 56vh;
    padding-top: 14px;
}

.ubo-basic-page h1 {
    margin: 0 0 48px;
    color: var(--ubo-purple-deep);
    font-family: "Cinzel", Georgia, serif;
    font-size: clamp(2.4rem, 6vw, 4.5rem);
    line-height: 1.08;
}

.ubo-basic-page p:last-child {
    max-width: 720px;
    margin: 0;
    color: var(--ubo-muted);
    font-size: 1.08rem;
}

.ubo-policy-content {
    max-width: 860px;
}

.ubo-policy-content h2 {
    margin: 28px 0 8px;
    color: var(--ubo-purple-deep);
    font-family: "Cinzel", Georgia, serif;
    font-size: 1.35rem;
    letter-spacing: 0;
}

.ubo-policy-content p {
    max-width: none;
    margin: 0 0 12px;
    color: var(--ubo-muted);
    font-size: 1rem;
}

.ubo-policy-content a {
    color: var(--ubo-purple-deep);
    font-weight: 800;
    text-decoration: underline;
    text-decoration-color: rgba(217, 179, 95, 0.85);
    text-underline-offset: 3px;
}

.ubo-feedback-page,
.ubo-admin-page {
    min-height: 60vh;
    padding-top: 14px;
}

.ubo-admin-page {
    padding-top: 28px;
}

.ubo-admin-page .ubo-feedback-intro {
    margin-bottom: 22px;
}

.ubo-admin-page .ubo-admin-appointment-intro {
    max-width: none;
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 12px 18px;
    align-items: end;
}

.ubo-admin-page .ubo-admin-appointment-intro .ubo-eyebrow,
.ubo-admin-page .ubo-admin-appointment-intro h1 {
    grid-column: 1;
}

.ubo-admin-appointment-tabs {
    grid-column: 2;
    grid-row: 1 / span 2;
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    justify-content: flex-end;
}

.ubo-admin-appointment-tabs a {
    min-height: 38px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 8px 12px;
    border-radius: 8px;
    background: var(--ubo-white);
    border: 1px solid rgba(75, 21, 89, 0.14);
    color: var(--ubo-purple-deep);
    font-weight: 800;
    font-size: 0.88rem;
}

.ubo-admin-appointment-tabs a.ubo-admin-filter-active {
    background: var(--ubo-purple-deep);
    border-color: var(--ubo-purple-deep);
    color: var(--ubo-gold-soft);
    box-shadow: 0 10px 22px rgba(22, 0, 24, 0.16);
}

.ubo-admin-page .ubo-feedback-intro h1 {
    margin-bottom: 8px;
    font-size: clamp(1.8rem, 3vw, 2.8rem);
}

.ubo-admin-page .ubo-eyebrow {
    margin-bottom: 6px;
    font-size: 0.72rem;
}

.ubo-login-body {
    min-height: 100vh;
    background:
        linear-gradient(135deg, rgba(255, 248, 236, 0.94), rgba(244, 220, 156, 0.34)),
        var(--ubo-cream);
}

.ubo-login-section {
    width: min(1180px, calc(100% - 32px));
    min-height: 100vh;
    margin: 0 auto;
    padding: 76px 0;
    display: flex;
    align-items: center;
    justify-content: center;
}

.ubo-login-form {
    width: min(100%, 420px);
    padding: 30px;
    border-radius: 8px;
    background: var(--ubo-white);
    border: 1px solid rgba(75, 21, 89, 0.12);
    box-shadow: var(--ubo-shadow);
}

.ubo-login-logo {
    width: 82px;
    height: 82px;
    margin: 0 auto 18px;
    object-fit: contain;
}

.ubo-login-form .ubo-eyebrow {
    text-align: center;
}

.ubo-login-form h1 {
    margin: 0 0 22px;
    color: var(--ubo-purple-deep);
    font-family: "Cinzel", Georgia, serif;
    font-size: 2rem;
    line-height: 1.15;
    text-align: center;
    letter-spacing: 0;
}

.ubo-login-form label {
    display: block;
    margin: 16px 0 8px;
    color: var(--ubo-purple-deep);
    font-weight: 800;
}

.ubo-login-form input {
    width: 100%;
    border: 1px solid rgba(75, 21, 89, 0.22);
    border-radius: 8px;
    padding: 13px 14px;
    color: var(--ubo-ink);
    font: inherit;
}

.ubo-login-form input:focus {
    outline: 3px solid rgba(217, 179, 95, 0.34);
    border-color: var(--ubo-gold);
}

.ubo-login-form .ubo-primary-button {
    width: 100%;
    margin-top: 22px;
    border: 0;
    cursor: pointer;
    font: inherit;
}

.ubo-feedback-intro {
    max-width: 850px;
    margin-bottom: 48px;
}

.ubo-feedback-intro h1 {
    margin: 0 0 18px;
    color: var(--ubo-purple-deep);
    font-family: "Cinzel", Georgia, serif;
    font-size: clamp(2.4rem, 6vw, 4.5rem);
    line-height: 1.08;
    letter-spacing: 0;
}

.ubo-feedback-intro p:last-child {
    margin: 0;
    color: var(--ubo-muted);
    font-size: 1.08rem;
}

.ubo-feedback-layout {
    display: grid;
    grid-template-columns: minmax(320px, 430px) minmax(0, 1fr);
    gap: 34px;
    align-items: start;
}

.ubo-feedback-form,
.ubo-approved-feedback,
.ubo-admin-feedback-card,
.ubo-empty-feedback {
    border-radius: 8px;
    background: var(--ubo-white);
    border: 1px solid rgba(75, 21, 89, 0.12);
    box-shadow: var(--ubo-shadow);
}

.ubo-feedback-form,
.ubo-approved-feedback {
    padding: 30px;
}

.ubo-feedback-form h2,
.ubo-approved-feedback h2 {
    margin: 0 0 22px;
    color: var(--ubo-purple-deep);
    font-family: "Cinzel", Georgia, serif;
    font-size: 1.55rem;
    letter-spacing: 0;
}

.ubo-feedback-form label,
.ubo-rating-fieldset legend {
    display: block;
    margin: 16px 0 8px;
    color: var(--ubo-purple-deep);
    font-weight: 800;
}

.ubo-feedback-form label span {
    color: var(--ubo-muted);
    font-weight: 600;
}

.ubo-feedback-form input,
.ubo-feedback-form textarea {
    width: 100%;
    border: 1px solid rgba(75, 21, 89, 0.22);
    border-radius: 8px;
    padding: 13px 14px;
    color: var(--ubo-ink);
    font: inherit;
}

.ubo-feedback-form textarea {
    resize: vertical;
}

.ubo-feedback-form input:focus,
.ubo-feedback-form textarea:focus {
    outline: 3px solid rgba(217, 179, 95, 0.34);
    border-color: var(--ubo-gold);
}

.ubo-rating-fieldset {
    margin: 16px 0 0;
    padding: 0;
    border: 0;
}

.ubo-rating-inputs {
    display: inline-flex;
    flex-direction: row-reverse;
    gap: 4px;
}

.ubo-rating-inputs input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}

.ubo-rating-inputs label {
    margin: 0;
    color: #d6c6d8;
    cursor: pointer;
    font-size: 2.1rem;
    line-height: 1;
}

.ubo-rating-inputs input:checked ~ label,
.ubo-rating-inputs label:hover,
.ubo-rating-inputs label:hover ~ label {
    color: #fbbc04;
}

.ubo-form-success,
.ubo-form-errors {
    margin-bottom: 18px;
    padding: 14px 16px;
    border-radius: 8px;
    font-weight: 700;
}

.ubo-form-success {
    background: #e7f7ec;
    color: #145c2c;
}

.ubo-form-errors {
    background: #fdebec;
    color: #8a1d2a;
}

.ubo-form-errors p {
    margin: 0;
}

.ubo-review-card {
    padding: 22px 0;
    border-top: 1px solid rgba(75, 21, 89, 0.12);
}

.ubo-review-summary {
    margin-bottom: 22px;
    padding: 18px;
    border-radius: 8px;
    background: #f7ecfa;
    text-align: center;
}

.ubo-review-summary .ubo-star-display {
    margin: 0 0 6px;
    font-size: 1.45rem;
}

.ubo-review-summary strong {
    display: block;
    color: var(--ubo-purple-deep);
    font-size: 2rem;
    line-height: 1.1;
}

.ubo-review-summary span {
    color: var(--ubo-muted);
    font-weight: 700;
}

.ubo-review-card:first-of-type {
    padding-top: 0;
    border-top: 0;
}

.ubo-review-card:last-child {
    padding-bottom: 0;
}

.ubo-review-topline,
.ubo-admin-feedback-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
}

.ubo-review-topline strong,
.ubo-admin-feedback-head strong {
    color: var(--ubo-purple-deep);
}

.ubo-review-topline span,
.ubo-admin-feedback-head span,
.ubo-admin-date {
    color: var(--ubo-muted);
    font-size: 0.92rem;
}

.ubo-star-display {
    margin: 8px 0 10px;
    color: #d6c6d8;
    font-size: 1.2rem;
    letter-spacing: 0;
}

.ubo-star-display .ubo-star-filled {
    color: #fbbc04;
}

.ubo-review-card h3,
.ubo-admin-feedback-card h2 {
    margin: 0 0 8px;
    color: var(--ubo-purple);
    font-family: "Cinzel", Georgia, serif;
    font-size: 1.25rem;
    letter-spacing: 0;
}

.ubo-review-card p,
.ubo-admin-feedback-card p {
    margin: 0;
    color: var(--ubo-muted);
}

.ubo-empty-feedback {
    padding: 22px;
}

.ubo-empty-feedback p {
    margin: 0;
    color: var(--ubo-muted);
}

.ubo-hidden-review {
    display: none;
}

.ubo-show-more-reviews {
    width: 100%;
    min-height: 44px;
    margin-top: 18px;
    border: 0;
    border-radius: 8px;
    background: var(--ubo-purple);
    color: var(--ubo-white);
    font: inherit;
    font-weight: 800;
    cursor: pointer;
}

.ubo-show-more-reviews:hover {
    background: var(--ubo-purple-deep);
}

.ubo-admin-feedback-list {
    display: grid;
    gap: 22px;
}

.ubo-admin-feedback-card {
    padding: 26px;
}

.ubo-admin-feedback-head > div {
    display: grid;
    gap: 3px;
}

.ubo-status-pill {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 30px;
    padding: 5px 10px;
    border-radius: 8px;
    font-weight: 800;
}

.ubo-status-pending {
    background: #fff3cd;
    color: #6a4d00;
}

.ubo-status-approved {
    background: #e7f7ec;
    color: #145c2c;
}

.ubo-status-hidden {
    background: #fdebec;
    color: #8a1d2a;
}

.ubo-status-new {
    background: #fff3cd;
    color: #6a4d00;
}

.ubo-status-read,
.ubo-status-replied {
    background: #e7f7ec;
    color: #145c2c;
}

.ubo-status-spam {
    background: #fdebec;
    color: #8a1d2a;
}

.ubo-admin-date {
    margin-top: 14px;
}

.ubo-admin-actions {
    position: relative;
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 10px;
}

.ubo-admin-feedback-head > .ubo-admin-enquiry-contact {
    flex: 1 1 auto;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 18px;
    min-width: 0;
}

.ubo-admin-feedback-head > .ubo-admin-enquiry-contact span {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    overflow-wrap: anywhere;
}

.ubo-admin-feedback-head > .ubo-admin-enquiry-contact strong {
    color: var(--ubo-purple-deep);
    white-space: nowrap;
}

.ubo-admin-enquiry-agent {
    color: var(--ubo-muted);
    font-size: 0.78rem;
    word-break: break-word;
}

.ubo-admin-enquiry-source {
    margin-top: 12px;
    padding: 10px 12px;
    border-radius: 8px;
    background: #f8f5f8;
    color: var(--ubo-ink);
}

.ubo-admin-enquiry-source strong {
    display: block;
    margin-bottom: 4px;
    color: var(--ubo-purple-deep);
}

.ubo-admin-enquiry-source p {
    margin: 0;
    color: var(--ubo-muted);
    font-size: 0.9rem;
}

.ubo-admin-enquiry-message-field {
    display: block;
    margin-top: 10px;
    color: var(--ubo-purple-deep);
    font-weight: 800;
    font-size: 0.82rem;
}

.ubo-admin-enquiry-message-field textarea {
    width: 100%;
    margin-top: 4px;
    border: 1px solid rgba(75, 21, 89, 0.22);
    border-radius: 8px;
    padding: 8px;
    color: var(--ubo-ink);
    font: inherit;
    font-size: 0.9rem;
    resize: vertical;
}

.ubo-admin-enquiry-toolbar {
    margin-top: 8px;
}

.ubo-admin-enquiry-toolbar .ubo-admin-approve {
    display: inline-flex;
    align-items: center;
}

.ubo-admin-enquiry-actions {
    align-items: center;
}

.ubo-admin-enquiry-actions form {
    display: inline-flex;
    flex-wrap: wrap;
    gap: 8px;
}

.ubo-admin-icon-action {
    width: 40px;
    height: 40px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 8px;
    border: 1px solid rgba(75, 21, 89, 0.18);
    background: var(--ubo-white);
    color: var(--ubo-purple-deep);
    cursor: pointer;
}

.ubo-admin-icon-action-primary {
    background: var(--ubo-purple-deep);
    color: var(--ubo-gold-soft);
}

.ubo-admin-icon-action-danger {
    background: #8e1f2f;
    color: var(--ubo-white);
    border-color: rgba(142, 31, 47, 0.32);
}

.ubo-admin-icon-action svg {
    width: 20px;
    height: 20px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.ubo-admin-customer-email-form {
    margin-bottom: 18px;
    padding: 14px;
    border-radius: 8px;
    background: var(--ubo-white);
    border: 1px solid rgba(75, 21, 89, 0.12);
    box-shadow: 0 10px 26px rgba(22, 0, 24, 0.1);
}

.ubo-admin-customer-table {
    overflow-x: auto;
    border-radius: 8px;
    border: 1px solid rgba(75, 21, 89, 0.12);
    background: var(--ubo-white);
    box-shadow: 0 10px 26px rgba(22, 0, 24, 0.1);
}

.ubo-admin-customer-table-head,
.ubo-admin-customer-table-row {
    display: grid;
    grid-template-columns: 52px minmax(130px, 0.95fr) minmax(170px, 1.25fr) minmax(96px, 0.68fr) 42px minmax(96px, 0.68fr) 54px minmax(168px, 0.8fr);
    min-width: 940px;
    align-items: center;
}

.ubo-admin-customer-table-head {
    background: #f8f5f8;
    color: var(--ubo-purple-deep);
    font-size: 0.82rem;
    font-weight: 900;
}

.ubo-admin-customer-table-head span,
.ubo-admin-customer-table-row > div {
    min-height: 48px;
    display: flex;
    align-items: center;
    padding: 8px 8px;
    border-bottom: 1px solid rgba(75, 21, 89, 0.09);
}

.ubo-admin-customer-table-row > div {
    color: var(--ubo-ink);
    font-size: 0.88rem;
    overflow-wrap: anywhere;
}

.ubo-admin-customer-table-row:last-child > div {
    border-bottom: 0;
}

.ubo-admin-customer-check {
    width: 18px;
    height: 18px;
    accent-color: var(--ubo-purple-deep);
}

.ubo-admin-customer-dob-form {
    display: flex;
    gap: 6px;
    align-items: center;
}

.ubo-admin-customer-delete-form {
    display: inline-flex;
    margin-left: 6px;
}

.ubo-admin-customer-dob-form input {
    width: 118px;
    min-height: 34px;
    border: 1px solid rgba(75, 21, 89, 0.22);
    border-radius: 8px;
    padding: 6px 7px;
    color: var(--ubo-ink);
    font: inherit;
    font-size: 0.84rem;
}

.ubo-admin-customer-dob-form .ubo-admin-icon-action,
.ubo-admin-customer-delete-form .ubo-admin-icon-action {
    flex: 0 0 34px;
    width: 34px;
    height: 34px;
}

.ubo-admin-customer-dob-form .ubo-admin-icon-action svg,
.ubo-admin-customer-delete-form .ubo-admin-icon-action svg {
    width: 18px;
    height: 18px;
}

.ubo-admin-settings-form {
    margin-bottom: 22px;
    padding: 16px;
    border-radius: 8px;
    background: var(--ubo-white);
    border: 1px solid rgba(75, 21, 89, 0.12);
    box-shadow: 0 10px 26px rgba(22, 0, 24, 0.1);
}

.ubo-admin-settings-section {
    margin-bottom: 18px;
}

.ubo-admin-settings-section h2 {
    margin: 0 0 10px;
    color: var(--ubo-purple-deep);
    font-family: "Cinzel", Georgia, serif;
    font-size: 1.18rem;
    letter-spacing: 0;
}

.ubo-admin-settings-section + .ubo-admin-settings-section {
    padding-top: 16px;
    border-top: 1px solid rgba(75, 21, 89, 0.1);
}

.ubo-roster-grid {
    display: grid;
    gap: 18px;
}

.ubo-roster-grid .ubo-admin-feedback-card h2 {
    margin-bottom: 14px;
}

.ubo-roster-hours-list,
.ubo-roster-list {
    display: grid;
    gap: 8px;
}

.ubo-roster-hour-row,
.ubo-roster-inline-form,
.ubo-roster-list-row {
    display: grid;
    gap: 8px;
    align-items: center;
}

.ubo-roster-hour-row {
    grid-template-columns: minmax(110px, 0.8fr) minmax(110px, 0.6fr) minmax(110px, 0.6fr) minmax(100px, 0.5fr);
}

.ubo-roster-inline-form {
    grid-template-columns: repeat(4, minmax(0, 1fr)) auto;
    margin-bottom: 12px;
}

.ubo-roster-list-row {
    grid-template-columns: minmax(110px, 0.7fr) minmax(150px, 1fr) minmax(140px, 1fr) minmax(100px, 0.7fr) auto;
    padding: 8px 0;
    border-top: 1px solid rgba(75, 21, 89, 0.1);
}

.ubo-roster-list-row:first-child {
    border-top: 0;
}

.ubo-roster-hour-row strong,
.ubo-roster-list-row strong {
    color: var(--ubo-purple-deep);
}

.ubo-roster-staff-week {
    padding: 12px 0;
    border-top: 1px solid rgba(75, 21, 89, 0.1);
}

.ubo-roster-staff-week:first-of-type {
    border-top: 0;
    padding-top: 0;
}

.ubo-roster-staff-week h3 {
    margin: 0 0 10px;
    color: var(--ubo-purple-deep);
    font-family: "Cinzel", Georgia, serif;
    font-size: 1.05rem;
}

.ubo-roster-staff-picker {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: end;
    margin-bottom: 12px;
}

.ubo-roster-staff-picker select {
    min-width: min(260px, 100%);
    min-height: 38px;
    border: 1px solid rgba(75, 21, 89, 0.22);
    border-radius: 8px;
    padding: 7px 8px;
    color: var(--ubo-ink);
    font: inherit;
    font-size: 0.9rem;
}

.ubo-roster-hour-row input,
.ubo-roster-inline-form input,
.ubo-roster-inline-form select {
    width: 100%;
    min-height: 38px;
    border: 1px solid rgba(75, 21, 89, 0.22);
    border-radius: 8px;
    padding: 7px 8px;
    color: var(--ubo-ink);
    font: inherit;
    font-size: 0.9rem;
}

.ubo-roster-hour-row label,
.ubo-roster-inline-form label {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: var(--ubo-purple-deep);
    font-weight: 800;
    font-size: 0.86rem;
}

.ubo-roster-hour-row input[type="checkbox"],
.ubo-roster-inline-form input[type="checkbox"] {
    width: 18px;
    min-height: 18px;
    accent-color: var(--ubo-purple-deep);
}

.ubo-hrm-add-staff-card {
    margin-bottom: 18px;
}

.ubo-hrm-add-staff-card summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    cursor: pointer;
    list-style: none;
}

.ubo-hrm-add-staff-card summary::-webkit-details-marker {
    display: none;
}

.ubo-hrm-add-staff-card summary span {
    color: var(--ubo-purple-deep);
    font-family: "Cinzel", Georgia, serif;
    font-size: 1.35rem;
    font-weight: 700;
}

.ubo-hrm-add-staff-card summary svg {
    width: 36px;
    height: 36px;
    padding: 8px;
    border-radius: 8px;
    background: var(--ubo-purple-deep);
    color: var(--ubo-gold-soft);
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
    transition: transform 160ms ease;
}

.ubo-hrm-add-staff-card[open] summary {
    margin-bottom: 14px;
}

.ubo-hrm-add-staff-card[open] summary svg {
    transform: rotate(45deg);
}

.ubo-hrm-table {
    overflow-x: auto;
    border-radius: 8px;
    border: 1px solid rgba(75, 21, 89, 0.12);
}

.ubo-hrm-table-head,
.ubo-hrm-table-row {
    display: grid;
    grid-template-columns: 150px 190px 120px 105px 90px 110px 95px 80px 90px 95px 170px 240px;
    min-width: 1540px;
    align-items: center;
}

.ubo-hrm-table-head {
    background: #f8f5f8;
    color: var(--ubo-purple-deep);
    font-size: 0.8rem;
    font-weight: 900;
}

.ubo-hrm-table-head span,
.ubo-hrm-table-row > div {
    min-height: 50px;
    display: flex;
    align-items: center;
    padding: 8px 10px;
    border-bottom: 1px solid rgba(75, 21, 89, 0.09);
}

.ubo-hrm-table-row > div {
    color: var(--ubo-ink);
    font-size: 0.86rem;
    overflow-wrap: anywhere;
}

.ubo-hrm-table-row:last-child > div {
    border-bottom: 0;
}

.ubo-hrm-table-row a {
    color: var(--ubo-purple-deep);
    font-weight: 900;
}

.ubo-hrm-edit-field {
    display: none;
    width: 100%;
    min-height: 34px;
    border: 1px solid rgba(75, 21, 89, 0.22);
    border-radius: 8px;
    padding: 6px 7px;
    color: var(--ubo-ink);
    font: inherit;
    font-size: 0.8rem;
}

.ubo-hrm-row-save,
.ubo-hrm-cancel-button {
    display: none;
}

.ubo-hrm-row-editing .ubo-hrm-display-value {
    display: none;
}

.ubo-hrm-row-editing .ubo-hrm-edit-field,
.ubo-hrm-row-editing .ubo-hrm-row-save,
.ubo-hrm-row-editing .ubo-hrm-cancel-button {
    display: inline-flex;
}

.ubo-hrm-row-editing .ubo-hrm-edit-button:disabled {
    opacity: 0.45;
    cursor: not-allowed;
}

.ubo-hrm-actions {
    gap: 6px;
}

.ubo-hrm-actions,
.ubo-hrm-actions form {
    display: inline-flex;
    align-items: center;
}

.ubo-hrm-actions form {
    gap: 5px;
}

.ubo-hrm-actions select {
    width: 104px;
    min-height: 34px;
    border: 1px solid rgba(75, 21, 89, 0.22);
    border-radius: 8px;
    padding: 6px;
    color: var(--ubo-ink);
    font: inherit;
    font-size: 0.78rem;
}

.ubo-hrm-history-list {
    display: grid;
    gap: 8px;
}

.ubo-hrm-history-row {
    display: grid;
    grid-template-columns: minmax(150px, 1fr) minmax(90px, 0.6fr) minmax(90px, 0.6fr) minmax(90px, 0.6fr) minmax(110px, 0.7fr);
    gap: 8px;
    align-items: center;
    padding: 10px 0;
    border-bottom: 1px solid rgba(75, 21, 89, 0.1);
    color: var(--ubo-muted);
}

.ubo-hrm-history-row:last-child {
    border-bottom: 0;
}

.ubo-sales-summary-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px;
    margin-bottom: 18px;
}

.ubo-sales-add-product summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    cursor: pointer;
    color: var(--ubo-purple);
    font-family: "Cinzel", Georgia, serif;
    font-size: 1.25rem;
    font-weight: 700;
    letter-spacing: 0;
}

.ubo-sales-add-product summary::-webkit-details-marker {
    display: none;
}

.ubo-sales-add-product summary::marker {
    content: "";
}

.ubo-sales-add-product summary strong {
    width: 36px;
    height: 36px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 8px;
    background: var(--ubo-purple-deep);
    color: var(--ubo-gold-soft);
    font-family: "Inter", Arial, sans-serif;
    font-size: 1.45rem;
    line-height: 1;
}

.ubo-sales-add-product[open] summary {
    margin-bottom: 14px;
}

.ubo-sales-add-product[open] summary strong {
    font-size: 0;
}

.ubo-sales-add-product[open] summary strong::after {
    content: "-";
    font-size: 1.45rem;
}

.ubo-sales-product-form-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 8px;
    align-items: end;
}

.ubo-sales-product-filter {
    display: grid;
    grid-template-columns: minmax(180px, 240px) minmax(220px, 1fr) auto auto;
    gap: 8px;
    align-items: end;
    margin: 10px 0 16px;
}

.ubo-sales-product-form-grid label,
.ubo-sales-product-filter label,
.ubo-sales-report-filter label {
    color: var(--ubo-purple-deep);
    font-weight: 800;
    font-size: 0.82rem;
}

.ubo-sales-product-form-grid span,
.ubo-sales-product-filter span,
.ubo-sales-report-filter span {
    display: block;
    margin-bottom: 4px;
}

.ubo-sales-product-form-grid input,
.ubo-sales-product-form-grid select,
.ubo-sales-product-filter input,
.ubo-sales-product-filter select,
.ubo-sales-report-filter input {
    width: 100%;
    min-height: 38px;
    border: 1px solid rgba(75, 21, 89, 0.22);
    border-radius: 8px;
    padding: 7px 8px;
    color: var(--ubo-ink);
    font: inherit;
    font-size: 0.88rem;
}

.ubo-sales-product-filter .ubo-admin-hide {
    min-height: 38px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.ubo-sales-active-field {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-height: 38px;
}

.ubo-sales-active-field span {
    margin: 0;
}

.ubo-sales-active-field input {
    width: 18px;
    min-height: 18px;
    accent-color: var(--ubo-purple-deep);
}

.ubo-sales-product-list,
.ubo-sales-order-list {
    display: grid;
    gap: 12px;
}

.ubo-sales-product-card,
.ubo-sales-order-row {
    padding: 14px;
    border-radius: 8px;
    border: 1px solid rgba(75, 21, 89, 0.12);
    background: #fffdf9;
}

.ubo-sales-product-card input:disabled,
.ubo-sales-product-card select:disabled,
.ubo-sales-product-card textarea:disabled {
    background: #f8f5f8;
    color: var(--ubo-muted);
    cursor: not-allowed;
}

.ubo-sales-product-editing {
    border-color: rgba(217, 179, 95, 0.7);
    box-shadow: 0 12px 28px rgba(217, 179, 95, 0.18);
}

.ubo-sales-product-editing .ubo-sales-save-button {
    box-shadow: 0 0 0 3px rgba(217, 179, 95, 0.2);
}

.ubo-sales-product-editing .ubo-sales-delete-button {
    border-color: rgba(133, 36, 36, 0.3);
    color: #852424;
    background: #fff5f5;
}

.ubo-sales-product-heading,
.ubo-sales-report-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 14px;
    margin-bottom: 12px;
}

.ubo-sales-product-heading strong,
.ubo-sales-order-row strong {
    color: var(--ubo-purple-deep);
}

.ubo-sales-report-filter {
    display: grid;
    grid-template-columns: minmax(140px, 1fr) minmax(140px, 1fr) auto;
    gap: 8px;
    align-items: end;
}

.ubo-sales-table {
    overflow-x: auto;
    border-radius: 8px;
    border: 1px solid rgba(75, 21, 89, 0.12);
}

.ubo-sales-table-head,
.ubo-sales-table-row {
    display: grid;
    grid-template-columns: minmax(220px, 1.4fr) minmax(150px, 0.85fr) minmax(80px, 0.35fr) minmax(100px, 0.45fr);
    min-width: 620px;
    align-items: center;
}

.ubo-sales-stock-head,
.ubo-sales-stock-row {
    grid-template-columns: minmax(220px, 1.4fr) minmax(150px, 0.85fr) minmax(100px, 0.45fr) minmax(80px, 0.35fr);
}

.ubo-sales-table-head {
    background: #f8f5f8;
    color: var(--ubo-purple-deep);
    font-size: 0.8rem;
    font-weight: 900;
}

.ubo-sales-table-head span,
.ubo-sales-table-row span {
    min-height: 44px;
    display: flex;
    align-items: center;
    padding: 8px 10px;
    border-bottom: 1px solid rgba(75, 21, 89, 0.09);
}

.ubo-sales-table-row:last-child span {
    border-bottom: 0;
}

.ubo-sales-order-row span {
    display: block;
    color: var(--ubo-muted);
    font-size: 0.88rem;
}

.ubo-sales-order-row p {
    margin-top: 6px;
}

.ubo-admin-inline-success {
    position: absolute;
    left: 0;
    bottom: calc(100% + 6px);
    z-index: 2;
    width: max-content;
    max-width: 100%;
    padding: 8px 12px;
    border-radius: 8px;
    background: #e7f7ec;
    color: #145c2c;
    font-weight: 800;
    font-size: 0.9rem;
    box-shadow: 0 10px 26px rgba(22, 0, 24, 0.16);
    transition: opacity 220ms ease, transform 220ms ease;
    pointer-events: none;
}

.ubo-admin-inline-success-hidden {
    opacity: 0;
    transform: translateY(-4px);
}

.ubo-admin-approve,
.ubo-admin-hide {
    min-height: 38px;
    padding: 8px 14px;
    border: 0;
    border-radius: 8px;
    font: inherit;
    font-size: 0.92rem;
    font-weight: 800;
    cursor: pointer;
}

.ubo-admin-approve {
    background: var(--ubo-gold);
    color: var(--ubo-purple-deep);
}

.ubo-admin-approve:disabled {
    background: #d8d0dc;
    color: #6f6475;
    cursor: not-allowed;
}

.ubo-admin-save-button.ubo-admin-form-dirty {
    background: var(--ubo-gold);
    color: var(--ubo-purple-deep);
    cursor: pointer;
}

.ubo-admin-select {
    min-height: 42px;
    border: 1px solid rgba(75, 21, 89, 0.22);
    border-radius: 8px;
    padding: 10px 12px;
    font: inherit;
}

.ubo-admin-hide {
    background: var(--ubo-purple-deep);
    color: var(--ubo-white);
}

.ubo-dashboard-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px;
    margin-bottom: 18px;
}

.ubo-dashboard-card {
    min-height: 86px;
    padding: 14px;
    border-radius: 8px;
    background: var(--ubo-white);
    border: 1px solid rgba(75, 21, 89, 0.12);
    box-shadow: 0 12px 30px rgba(22, 0, 24, 0.1);
}

.ubo-dashboard-card-clickable {
    cursor: pointer;
    transition: transform 160ms ease, box-shadow 160ms ease;
}

.ubo-dashboard-card-clickable:hover,
.ubo-dashboard-card-clickable:focus {
    outline: 3px solid rgba(217, 179, 95, 0.34);
    transform: translateY(-2px);
    box-shadow: 0 16px 34px rgba(22, 0, 24, 0.14);
}

.ubo-dashboard-card-alert {
    border-color: rgba(217, 179, 95, 0.72);
    background: linear-gradient(135deg, #fff8ec, rgba(244, 220, 156, 0.5));
    box-shadow: 0 16px 34px rgba(217, 179, 95, 0.24);
}

.ubo-dashboard-card-alert span {
    color: var(--ubo-purple-deep);
}

.ubo-dashboard-card span {
    display: block;
    color: var(--ubo-muted);
    font-size: 0.78rem;
    font-weight: 800;
}

.ubo-dashboard-card strong {
    display: block;
    margin-top: 6px;
    color: var(--ubo-purple-deep);
    font-family: "Cinzel", Georgia, serif;
    font-size: clamp(1.45rem, 3vw, 2.15rem);
    line-height: 1;
}

.ubo-dashboard-panels {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
}

.ubo-dashboard-panel,
.ubo-admin-appointment-row {
    border-radius: 8px;
    background: var(--ubo-white);
    border: 1px solid rgba(75, 21, 89, 0.12);
    box-shadow: 0 12px 30px rgba(22, 0, 24, 0.1);
}

.ubo-dashboard-panel {
    padding: 14px;
}

.ubo-dashboard-panel-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    margin-bottom: 10px;
}

.ubo-dashboard-panel-head h2 {
    margin: 0;
    color: var(--ubo-purple-deep);
    font-family: "Cinzel", Georgia, serif;
    font-size: 1.08rem;
}

.ubo-dashboard-panel-head a,
.ubo-admin-appointment-toolbar a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 38px;
    padding: 7px 10px;
    border-radius: 8px;
    background: var(--ubo-purple-deep);
    color: var(--ubo-gold-soft);
    font-weight: 800;
    white-space: nowrap;
}

.ubo-dashboard-appointment {
    padding: 9px 0;
    border-top: 1px solid rgba(75, 21, 89, 0.12);
}

.ubo-dashboard-appointment strong,
.ubo-admin-appointment-row strong {
    display: block;
    color: var(--ubo-purple-deep);
}

.ubo-dashboard-appointment strong.ubo-dashboard-appointment-line {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 7px;
}

.ubo-dashboard-appointment strong.ubo-dashboard-appointment-line span {
    display: inline;
    color: inherit;
    font-size: inherit;
}

.ubo-dashboard-appointment strong.ubo-dashboard-appointment-line i {
    width: 8px;
    height: 8px;
    flex: 0 0 8px;
    border-radius: 50%;
    background: var(--ubo-gold);
    box-shadow: 0 0 0 3px rgba(217, 179, 95, 0.18);
}

.ubo-dashboard-appointment span,
.ubo-admin-appointment-row span {
    display: block;
    color: var(--ubo-muted);
    font-size: 0.84rem;
}

.ubo-dashboard-appointment p,
.ubo-dashboard-empty {
    margin: 4px 0 0;
    color: var(--ubo-muted);
}

.ubo-admin-appointment-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin-bottom: 18px;
}

.ubo-admin-appointment-filters,
.ubo-admin-appointment-search {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
}

.ubo-admin-appointment-search {
    margin-left: auto;
}

.ubo-admin-appointment-search input {
    min-height: 38px;
    border: 1px solid rgba(75, 21, 89, 0.22);
    border-radius: 8px;
    padding: 8px 10px;
    color: var(--ubo-ink);
    font: inherit;
    font-size: 0.9rem;
}

.ubo-admin-appointment-toolbar a {
    background: var(--ubo-white);
    color: var(--ubo-purple-deep);
    border: 1px solid rgba(75, 21, 89, 0.18);
}

.ubo-admin-appointment-toolbar .ubo-admin-filter-active {
    background: var(--ubo-purple-deep);
    color: var(--ubo-gold-soft);
}

.ubo-admin-add-appointment {
    margin-bottom: 16px;
}

.ubo-admin-add-appointment summary {
    display: none;
}

.ubo-admin-add-appointment[open] {
    position: fixed;
    inset: 0;
    z-index: 60;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
    margin: 0;
}

.ubo-admin-add-appointment-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(22, 0, 24, 0.58);
}

.ubo-admin-add-appointment-panel {
    position: relative;
    z-index: 1;
    width: min(1040px, 100%);
    max-height: min(760px, calc(100vh - 48px));
    overflow: auto;
    padding: 18px;
    border-radius: 8px;
    background: var(--ubo-white);
    box-shadow: 0 26px 80px rgba(22, 0, 24, 0.34);
}

.ubo-admin-add-appointment-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    margin: -18px -18px 16px;
    padding: 14px 18px;
    border-bottom: 1px solid rgba(75, 21, 89, 0.12);
}

.ubo-admin-add-appointment-head h2 {
    margin: 0;
    color: var(--ubo-purple-deep);
    font-family: "Cinzel", Georgia, serif;
    font-size: 1.25rem;
}

.ubo-admin-add-appointment-head a {
    display: inline-flex;
    align-items: center;
    min-height: 36px;
    padding: 7px 12px;
    border-radius: 8px;
    background: var(--ubo-purple-deep);
    color: var(--ubo-gold-soft);
    font-weight: 800;
}

.ubo-admin-appointment-slot-check {
    display: grid;
    grid-template-columns: minmax(260px, 1.3fr) minmax(150px, 0.7fr) minmax(180px, 0.9fr) auto;
    gap: 10px;
    align-items: end;
    margin-bottom: 14px;
}

.ubo-admin-appointment-slot-check label {
    color: var(--ubo-purple-deep);
    font-size: 0.84rem;
    font-weight: 800;
}

.ubo-admin-appointment-slot-check input,
.ubo-admin-appointment-slot-check select {
    width: 100%;
    margin-top: 4px;
    min-height: 38px;
    border: 1px solid rgba(75, 21, 89, 0.22);
    border-radius: 8px;
    padding: 7px 8px;
    color: var(--ubo-ink);
    font: inherit;
    font-size: 0.9rem;
}

.ubo-admin-slot-results {
    margin-bottom: 10px;
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.ubo-admin-appointments-list {
    display: grid;
    gap: 12px;
}

.ubo-admin-appointment-card {
    padding: 14px;
    border-radius: 8px;
    background: var(--ubo-white);
    border: 1px solid rgba(75, 21, 89, 0.12);
    box-shadow: 0 10px 26px rgba(22, 0, 24, 0.1);
}

.ubo-admin-appointment-cancelled {
    background: #f8f5f8;
    border-color: rgba(138, 29, 42, 0.28);
}

.ubo-admin-appointment-cancelled .ubo-admin-appointment-topline > div:first-child strong {
    color: #8a1d2a;
}

.ubo-admin-appointment-topline {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 14px;
    align-items: start;
    margin-bottom: 10px;
}

.ubo-admin-appointment-topline strong {
    display: block;
    color: var(--ubo-purple-deep);
}

.ubo-admin-appointment-topline span {
    display: block;
    color: var(--ubo-muted);
    font-size: 0.86rem;
}

.ubo-admin-appointment-edit-grid {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 8px;
}

.ubo-admin-appointment-main-grid {
    grid-template-columns: minmax(150px, 1fr) minmax(190px, 1.1fr) minmax(120px, 0.85fr) minmax(140px, 0.9fr) minmax(130px, 0.85fr) minmax(110px, 0.75fr);
    margin-bottom: 8px;
}

.ubo-admin-appointment-status-grid {
    grid-template-columns: minmax(150px, 0.8fr) minmax(260px, 1.4fr) minmax(160px, 0.9fr);
    margin-bottom: 8px;
}

.ubo-admin-appointment-edit-grid.ubo-hrm-staff-form-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.ubo-admin-appointment-edit-grid label {
    color: var(--ubo-purple-deep);
    font-weight: 800;
    font-size: 0.82rem;
}

.ubo-admin-appointment-edit-grid input,
.ubo-admin-appointment-edit-grid select,
.ubo-admin-appointment-edit-grid button.ubo-admin-service-popup-button {
    width: 100%;
    margin-top: 4px;
    border: 1px solid rgba(75, 21, 89, 0.22);
    border-radius: 8px;
    padding: 7px 8px;
    color: var(--ubo-ink);
    font: inherit;
    font-size: 0.88rem;
}

.ubo-admin-appointment-edit-grid button.ubo-admin-service-popup-button {
    min-height: 36px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.ubo-admin-appointment-card [data-admin-editable]:disabled {
    background: #f5f1f6;
    color: #6f6475;
    cursor: not-allowed;
}

.ubo-admin-card-editing [data-admin-editable] {
    background: var(--ubo-white);
}

.ubo-admin-service-popup {
    position: fixed;
    z-index: 70;
    left: 50%;
    top: 50%;
    width: min(720px, calc(100% - 32px));
    max-height: min(720px, calc(100vh - 48px));
    overflow: auto;
    transform: translate(-50%, -50%);
    margin: 0;
    padding: 12px;
    border-radius: 8px;
    border: 1px solid rgba(75, 21, 89, 0.14);
    background: var(--ubo-white);
    box-shadow: 0 24px 70px rgba(22, 0, 24, 0.28);
}

.ubo-admin-service-popup[hidden] {
    display: none;
}

.ubo-admin-service-popup-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin-bottom: 10px;
}

.ubo-admin-service-popup-head strong {
    color: var(--ubo-purple-deep);
}

.ubo-admin-service-popup-head button {
    min-height: 34px;
    border: 0;
    border-radius: 8px;
    padding: 6px 10px;
    background: var(--ubo-purple-deep);
    color: var(--ubo-gold-soft);
    font: inherit;
    font-weight: 800;
    cursor: pointer;
}

.ubo-admin-service-selected {
    display: grid;
    gap: 4px;
    margin-bottom: 10px;
    padding: 10px;
    border-radius: 8px;
    background: #f8f5f8;
}

.ubo-admin-service-selected strong {
    color: var(--ubo-purple-deep);
    font-size: 0.86rem;
}

.ubo-admin-service-selected span {
    color: var(--ubo-ink);
    font-weight: 800;
    overflow-wrap: anywhere;
}

.ubo-admin-service-bottom {
    display: grid;
    gap: 10px;
    margin-top: 10px;
}

.ubo-admin-service-date-picker,
.ubo-admin-service-slot-picker {
    display: block;
    margin-bottom: 10px;
    color: var(--ubo-purple-deep);
    font-weight: 800;
    font-size: 0.86rem;
}

.ubo-admin-service-date-picker span,
.ubo-admin-service-slot-picker span {
    display: block;
    margin-bottom: 4px;
}

.ubo-admin-service-date-picker input,
.ubo-admin-service-slot-picker select {
    width: 100%;
    min-height: 38px;
    border: 1px solid rgba(75, 21, 89, 0.22);
    border-radius: 8px;
    padding: 7px 8px;
    color: var(--ubo-ink);
    font: inherit;
}

.ubo-admin-service-popup-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
}

.ubo-admin-service-popup-grid label {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    padding: 8px;
    border-radius: 8px;
    background: #f8f5f8;
    color: var(--ubo-ink);
    font-size: 0.86rem;
    font-weight: 800;
}

.ubo-admin-service-popup-grid input {
    margin-top: 3px;
    accent-color: var(--ubo-purple-deep);
}

.ubo-admin-service-popup p {
    margin: 10px 0 0;
    color: var(--ubo-muted);
    font-size: 0.86rem;
}

.ubo-admin-service-popup-actions {
    display: flex;
    gap: 8px;
    justify-content: flex-end;
    margin-top: 12px;
}

.ubo-admin-slot-ready {
    padding: 10px 12px;
    border-radius: 8px;
    background: #e7f7ec;
    color: #145c2c;
    font-size: 0.9rem;
    font-weight: 800;
}

.ubo-admin-slot-ready strong,
.ubo-admin-slot-ready span {
    display: block;
}

.ubo-admin-schedule-warning {
    flex-basis: 100%;
    padding: 10px 12px;
    border-radius: 8px;
    background: #fff3cd;
    color: #6a4d00;
    font-size: 0.9rem;
    font-weight: 800;
}

.ubo-admin-schedule-warning strong,
.ubo-admin-schedule-warning span {
    display: block;
}

.ubo-admin-schedule-warning label,
.ubo-admin-schedule-override {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin-top: 8px;
    color: var(--ubo-purple-deep);
    font-size: 0.86rem;
    font-weight: 800;
}

.ubo-admin-schedule-override {
    margin-top: 0;
}

.ubo-admin-appointment-row {
    display: grid;
    grid-template-columns: minmax(180px, 1.1fr) minmax(240px, 1.4fr) minmax(140px, 0.8fr) minmax(90px, 0.5fr);
    gap: 14px;
    align-items: center;
    padding: 16px;
}

.ubo-staff-appointment-card .ubo-admin-appointment-topline {
    margin-bottom: 0;
}

.ubo-staff-appointment-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 10px;
    color: var(--ubo-muted);
    font-size: 0.88rem;
}

.ubo-admin-appointment-payment {
    margin-top: 6px;
}

.ubo-dashboard-modal {
    position: fixed;
    inset: 0;
    z-index: 50;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 24px;
}

.ubo-dashboard-modal-open {
    display: flex;
}

.ubo-dashboard-modal-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(22, 0, 24, 0.58);
}

.ubo-dashboard-modal-panel {
    position: relative;
    z-index: 1;
    width: min(980px, 100%);
    max-height: min(760px, calc(100vh - 48px));
    overflow: auto;
    padding: 22px;
    border-radius: 8px;
    background: var(--ubo-white);
    box-shadow: 0 26px 80px rgba(22, 0, 24, 0.34);
}

.ubo-dashboard-modal-head {
    position: sticky;
    top: -22px;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    margin: -22px -22px 16px;
    padding: 18px 22px;
    background: var(--ubo-white);
    border-bottom: 1px solid rgba(75, 21, 89, 0.12);
}

.ubo-dashboard-modal-head h2,
.ubo-dashboard-modal-list h3 {
    margin: 0;
    color: var(--ubo-purple-deep);
    font-family: "Cinzel", Georgia, serif;
    letter-spacing: 0;
}

.ubo-dashboard-modal-head button {
    min-height: 38px;
    border: 0;
    border-radius: 8px;
    padding: 8px 12px;
    background: var(--ubo-purple-deep);
    color: var(--ubo-gold-soft);
    font: inherit;
    font-weight: 800;
    cursor: pointer;
}

.ubo-dashboard-modal-list {
    display: none;
}

.ubo-dashboard-modal-list-active {
    display: block;
}

.ubo-dashboard-modal-list h3 {
    margin-bottom: 14px;
    font-size: 1.3rem;
}

.ubo-dashboard-modal-appointment,
.ubo-dashboard-modal-customer,
.ubo-dashboard-modal-enquiry {
    display: grid;
    grid-template-columns: minmax(180px, 1.1fr) minmax(240px, 1.35fr) minmax(130px, 0.75fr) minmax(88px, 0.45fr);
    gap: 12px;
    align-items: center;
    padding: 14px 0;
    border-top: 1px solid rgba(75, 21, 89, 0.12);
}

.ubo-dashboard-modal-customer {
    grid-template-columns: minmax(220px, 1.4fr) minmax(150px, 0.9fr) minmax(80px, 0.4fr) minmax(120px, 0.6fr);
}

.ubo-dashboard-modal-enquiry {
    grid-template-columns: minmax(220px, 1.1fr) minmax(150px, 0.75fr) minmax(90px, 0.45fr);
}

.ubo-dashboard-modal-enquiry p {
    grid-column: 1 / -1;
    margin: 0;
    color: var(--ubo-muted);
    font-size: 0.9rem;
}

.ubo-dashboard-modal-appointment strong,
.ubo-dashboard-modal-customer strong,
.ubo-dashboard-modal-enquiry strong {
    display: block;
    color: var(--ubo-purple-deep);
}

.ubo-dashboard-modal-appointment span,
.ubo-dashboard-modal-customer span,
.ubo-dashboard-modal-enquiry span {
    display: block;
    color: var(--ubo-muted);
    font-size: 0.9rem;
}

.ubo-admin-service-toolbar {
    display: grid;
    grid-template-columns: minmax(220px, 280px) minmax(260px, 1fr) auto;
    gap: 16px;
    align-items: end;
    margin-bottom: 22px;
    padding: 20px;
    border-radius: 8px;
    background: var(--ubo-white);
    border: 1px solid rgba(75, 21, 89, 0.12);
    box-shadow: 0 14px 34px rgba(22, 0, 24, 0.1);
}

.ubo-admin-service-toolbar label,
.ubo-admin-add-service summary {
    color: var(--ubo-purple-deep);
    font-weight: 800;
}

.ubo-admin-service-toolbar select,
.ubo-admin-service-toolbar input {
    width: 100%;
    margin-top: 7px;
    min-height: 44px;
    border: 1px solid rgba(75, 21, 89, 0.22);
    border-radius: 8px;
    padding: 10px 12px;
    color: var(--ubo-ink);
    font: inherit;
}

.ubo-admin-service-count {
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 10px 14px;
    border-radius: 8px;
    background: rgba(244, 220, 156, 0.42);
    color: var(--ubo-purple-deep);
    font-weight: 800;
    white-space: nowrap;
}

.ubo-admin-add-service {
    margin-bottom: 26px;
}

.ubo-admin-add-service summary {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    margin-bottom: 14px;
    padding: 10px 16px;
    border-radius: 8px;
    background: var(--ubo-purple-deep);
    color: var(--ubo-gold-soft);
    cursor: pointer;
}

.ubo-admin-service-list {
    display: grid;
    gap: 12px;
}

.ubo-admin-service-card {
    padding: 14px;
    border-radius: 8px;
    background: var(--ubo-white);
    border: 1px solid rgba(75, 21, 89, 0.12);
    box-shadow: 0 10px 26px rgba(22, 0, 24, 0.1);
}

.ubo-admin-service-heading {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    margin-bottom: 10px;
}

.ubo-admin-service-heading strong {
    display: block;
    color: var(--ubo-purple-deep);
    font-size: 1rem;
    line-height: 1.25;
}

.ubo-admin-service-heading span {
    color: var(--ubo-muted);
    font-size: 0.9rem;
}

.ubo-admin-active-toggle {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: var(--ubo-purple-deep);
    font-weight: 800;
}

.ubo-admin-active-toggle input {
    width: 44px;
    height: 24px;
    appearance: none;
    border-radius: 999px;
    background: #d8d0dc;
    border: 1px solid rgba(75, 21, 89, 0.16);
    cursor: pointer;
    position: relative;
}

.ubo-admin-active-toggle input::after {
    content: "";
    position: absolute;
    top: 3px;
    left: 3px;
    width: 16px;
    height: 16px;
    border-radius: 50%;
    background: var(--ubo-white);
    box-shadow: 0 2px 6px rgba(22, 0, 24, 0.22);
    transition: transform 180ms ease;
}

.ubo-admin-active-toggle input:checked {
    background: var(--ubo-gold);
}

.ubo-admin-active-toggle input:checked::after {
    transform: translateX(20px);
}

.ubo-admin-service-grid {
    display: grid;
    grid-template-columns: minmax(170px, 1.3fr) minmax(125px, 0.85fr) 68px 68px 88px 88px minmax(78px, 0.45fr) minmax(145px, 0.95fr);
    gap: 8px;
    align-items: start;
}

.ubo-admin-service-grid label {
    display: contents;
}

.ubo-admin-field-title,
.ubo-admin-staff-fieldset legend {
    color: var(--ubo-purple-deep);
    font-weight: 800;
    font-size: 0.82rem;
    line-height: 1.2;
    white-space: nowrap;
}

.ubo-admin-field-title {
    grid-row: 1;
}

.ubo-admin-field-name .ubo-admin-field-title,
.ubo-admin-field-name input {
    grid-column: 1;
}

.ubo-admin-field-category .ubo-admin-field-title,
.ubo-admin-field-category select {
    grid-column: 2;
}

.ubo-admin-field-duration .ubo-admin-field-title,
.ubo-admin-field-duration input {
    grid-column: 3;
}

.ubo-admin-field-cost .ubo-admin-field-title,
.ubo-admin-field-cost input {
    grid-column: 4;
}

.ubo-admin-field-booking .ubo-admin-field-title,
.ubo-admin-field-booking input {
    grid-column: 5;
}

.ubo-admin-field-deposit .ubo-admin-field-title,
.ubo-admin-field-deposit input {
    grid-column: 6;
}

.ubo-admin-field-product .ubo-admin-field-title,
.ubo-admin-field-product select {
    grid-column: 7;
}

.ubo-admin-field-staff .ubo-admin-field-title,
.ubo-admin-field-staff .ubo-admin-staff-checklist {
    grid-column: 8;
}

.ubo-admin-field-description .ubo-admin-field-title,
.ubo-admin-field-description textarea {
    grid-column: 1 / 9;
}

.ubo-admin-field-description .ubo-admin-field-title {
    grid-row: 3;
    margin-top: 4px;
}

.ubo-admin-field-description textarea {
    grid-row: 4;
}

.ubo-admin-service-grid input,
.ubo-admin-service-grid select,
.ubo-admin-staff-checklist {
    grid-row: 2;
}

.ubo-admin-service-grid input,
.ubo-admin-service-grid select,
.ubo-admin-field-description textarea {
    width: 100%;
    border: 1px solid rgba(75, 21, 89, 0.22);
    border-radius: 8px;
    padding: 7px 8px;
    color: var(--ubo-ink);
    font: inherit;
    font-size: 0.88rem;
}

.ubo-admin-service-grid select[multiple] {
    min-height: 112px;
}

.ubo-admin-staff-checklist {
    min-height: 44px;
    max-height: 88px;
    padding: 6px 8px;
    overflow: auto;
    border: 1px solid rgba(75, 21, 89, 0.22);
    border-radius: 8px;
    background: var(--ubo-white);
}

.ubo-admin-staff-checklist label {
    display: flex;
    align-items: center;
    gap: 8px;
    min-height: 26px;
    margin: 0;
    color: var(--ubo-muted);
    font-weight: 800;
    font-size: 0.88rem;
}

.ubo-admin-staff-checklist input {
    width: 16px;
    height: 16px;
    margin: 0;
    accent-color: var(--ubo-purple);
}

.ubo-admin-field-description {
    display: contents;
}

.ubo-admin-field-description textarea {
    resize: vertical;
    min-height: 44px;
}

.ubo-admin-staff-fieldset {
    margin: 18px 0;
    padding: 0;
    border: 0;
}

.ubo-admin-staff-options {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 18px;
    margin-top: 8px;
}

.ubo-admin-staff-options label {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    color: var(--ubo-muted);
    font-weight: 800;
}

.ubo-admin-icon-delete {
    width: 38px;
    min-height: 38px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 0;
    border-radius: 8px;
    background: #fdebec;
    color: #8a1d2a;
    cursor: pointer;
}

.ubo-admin-icon-delete svg {
    width: 18px;
    height: 18px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.ubo-admin-service-hidden {
    display: none;
}

.ubo-contact-page {
    min-height: 60vh;
    padding-top: 14px;
}

.ubo-contact-intro {
    max-width: 820px;
    margin-bottom: 48px;
}

.ubo-contact-intro h1 {
    margin: 0 0 18px;
    color: var(--ubo-purple-deep);
    font-family: "Cinzel", Georgia, serif;
    font-size: clamp(1.25rem, 5vw, 4rem);
    line-height: 1.08;
    letter-spacing: -0.02em;
    white-space: nowrap;
}

.ubo-contact-intro p:last-child {
    margin: 0;
    color: var(--ubo-muted);
    font-size: 1.08rem;
}

.ubo-contact-layout {
    display: grid;
    grid-template-columns: minmax(320px, 430px) minmax(0, 1fr);
    gap: 34px;
    align-items: stretch;
}

.ubo-contact-form,
.ubo-contact-details {
    display: flex;
    flex-direction: column;
    min-height: 100%;
}

.ubo-contact-form,
.ubo-contact-details {
    border-radius: 8px;
    background: var(--ubo-white);
    border: 1px solid rgba(75, 21, 89, 0.12);
    box-shadow: var(--ubo-shadow);
    padding: 30px;
}

.ubo-contact-form h2,
.ubo-contact-details h2 {
    margin: 0 0 22px;
    color: var(--ubo-purple-deep);
    font-family: "Cinzel", Georgia, serif;
    font-size: 1.55rem;
    letter-spacing: 0;
}

.ubo-contact-form label {
    display: block;
    margin: 16px 0 8px;
    color: var(--ubo-purple-deep);
    font-weight: 800;
}

.ubo-contact-form input,
.ubo-contact-form textarea {
    width: 100%;
    border: 1px solid rgba(75, 21, 89, 0.22);
    border-radius: 8px;
    padding: 13px 14px;
    color: var(--ubo-ink);
    font: inherit;
}

.ubo-contact-form textarea {
    resize: vertical;
}

.ubo-contact-actions {
    display: flex;
    gap: 14px;
    padding-top: 24px;
}

.ubo-contact-actions .ubo-primary-button,
.ubo-secondary-form-button {
    flex: 1;
}

.ubo-secondary-form-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 48px;
    padding: 13px 24px;
    border: 1px solid rgba(75, 21, 89, 0.42);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.42);
    color: var(--ubo-purple-deep);
    font: inherit;
    font-weight: 800;
    cursor: pointer;
}

.ubo-contact-form input:focus,
.ubo-contact-form textarea:focus {
    outline: 3px solid rgba(217, 179, 95, 0.34);
    border-color: var(--ubo-gold);
}

.ubo-honeypot-field {
    position: absolute;
    left: -10000px;
    width: 1px;
    height: 1px;
    overflow: hidden;
}

.ubo-contact-info {
    color: var(--ubo-muted);
}

.ubo-contact-info strong {
    color: var(--ubo-purple-deep);
}

.ubo-contact-info p {
    margin: 12px 0 0;
}

.ubo-contact-info a {
    color: var(--ubo-purple);
    font-weight: 800;
}

.ubo-map-panel {
    flex: 1;
    overflow: hidden;
    margin-top: 24px;
    border-radius: 8px;
    border: 1px solid rgba(75, 21, 89, 0.12);
    min-height: 330px;
}

.ubo-map-panel iframe {
    width: 100%;
    height: 100%;
    border: 0;
    display: block;
}

.ubo-staff-page {
    min-height: 60vh;
    padding-top: 14px;
}

.ubo-staff-intro {
    max-width: 780px;
    margin-bottom: 48px;
}

.ubo-staff-intro h1 {
    margin: 0 0 18px;
    color: var(--ubo-purple-deep);
    font-family: "Cinzel", Georgia, serif;
    font-size: clamp(2.4rem, 6vw, 4.5rem);
    line-height: 1.08;
    letter-spacing: 0;
}

.ubo-staff-intro p {
    margin: 0;
    color: var(--ubo-muted);
    font-size: 1.08rem;
}

.ubo-staff-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 28px;
}

.ubo-staff-card {
    overflow: hidden;
    border-radius: 8px;
    background: var(--ubo-white);
    border: 1px solid rgba(75, 21, 89, 0.12);
    box-shadow: var(--ubo-shadow);
    padding-top: 28px;
    text-align: center;
}

.ubo-staff-heading {
    padding: 0 28px 20px;
}

.ubo-staff-heading .ubo-eyebrow {
    margin-bottom: 8px;
}

.ubo-staff-heading h2 {
    margin: 0;
    color: var(--ubo-purple-deep);
    font-family: "Cinzel", Georgia, serif;
    font-size: 1.65rem;
    letter-spacing: 0;
}

.ubo-staff-card img {
    width: min(220px, calc(100% - 56px));
    aspect-ratio: 1 / 1;
    margin: 0 auto;
    border-radius: 8px;
    object-fit: cover;
    object-position: center;
    box-shadow: 0 14px 34px rgba(22, 0, 24, 0.14);
}

.ubo-staff-content {
    padding: 28px;
    text-align: center;
}

.ubo-staff-content p:last-child {
    margin: 0;
    color: var(--ubo-muted);
}

.ubo-staff-credentials {
    margin: 18px 0;
    padding-left: 0;
    color: var(--ubo-muted);
    list-style-position: inside;
}

.ubo-staff-credentials li {
    margin: 7px 0;
}

.ubo-staff-hours {
    margin-top: 18px;
}

.ubo-staff-hours strong {
    color: var(--ubo-purple-deep);
}

.ubo-staff-hours .ubo-staff-credentials {
    margin-top: 8px;
}

.ubo-therapies-page,
.ubo-booking-page {
    min-height: 60vh;
    padding-top: 14px;
}

.ubo-therapies-page {
    padding-top: 14px;
    padding-bottom: 104px;
}

.ubo-therapies-intro,
.ubo-booking-intro {
    max-width: 930px;
    margin-bottom: 32px;
}

.ubo-therapies-intro {
    margin-bottom: 24px;
}

.ubo-therapies-intro h1,
.ubo-booking-intro h1 {
    margin: 0;
    color: var(--ubo-purple-deep);
    font-family: "Cinzel", Georgia, serif;
    font-size: clamp(2.4rem, 6vw, 4.5rem);
    line-height: 1.08;
    letter-spacing: 0;
}

.ubo-therapies-intro p,
.ubo-booking-intro p {
    margin: 12px 0 0;
    color: var(--ubo-muted);
    font-size: 1.08rem;
}

.ubo-therapy-view-switcher {
    display: inline-flex;
    gap: 6px;
    margin-bottom: 24px;
    padding: 5px;
    border: 1px solid rgba(75, 21, 89, 0.14);
    border-radius: 10px;
    background: var(--ubo-white);
    box-shadow: 0 8px 22px rgba(42, 7, 48, 0.08);
}

.ubo-therapy-view-button {
    min-height: 42px;
    padding: 9px 18px;
    border: 0;
    border-radius: 7px;
    background: transparent;
    color: var(--ubo-purple-deep);
    cursor: pointer;
    font: inherit;
    font-weight: 800;
}

.ubo-therapy-view-button:hover,
.ubo-therapy-view-button:focus-visible {
    background: #f7ecfa;
}

.ubo-therapy-view-button.is-active {
    background: var(--ubo-purple-deep);
    color: var(--ubo-gold-soft);
}

.ubo-therapy-basket {
    position: sticky;
    top: 150px;
    z-index: 5;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    margin-top: -8px;
    margin-bottom: 32px;
    padding: 11px 18px;
    border-radius: 8px;
    background: var(--ubo-purple-deep);
    color: var(--ubo-white);
    box-shadow: var(--ubo-shadow);
}

.ubo-therapy-basket span {
    display: block;
    color: var(--ubo-gold-soft);
    font-weight: 700;
}

.ubo-basket-link-disabled {
    opacity: 0.58;
    cursor: not-allowed;
    pointer-events: auto;
}

.ubo-therapy-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 24px;
}

.ubo-therapy-grid[data-view="all"] {
    grid-template-columns: minmax(0, 1fr);
}

.ubo-therapy-grid[data-view="all"] .ubo-therapy-card-head {
    cursor: default;
}

.ubo-therapy-grid[data-view="all"] .ubo-therapy-card-head::after {
    display: none;
}

.ubo-therapy-card,
.ubo-booking-summary,
.ubo-booking-form {
    border-radius: 8px;
    background: var(--ubo-white);
    border: 1px solid rgba(75, 21, 89, 0.12);
    box-shadow: var(--ubo-shadow);
}

.ubo-therapy-card {
    overflow: hidden;
}

.ubo-therapy-card-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    padding: 28px;
    background: #f7ecfa;
    cursor: pointer;
    list-style: none;
}

.ubo-therapy-card-head::-webkit-details-marker {
    display: none;
}

.ubo-therapy-card-head::after {
    content: "+";
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 34px;
    width: 34px;
    height: 34px;
    border-radius: 8px;
    background: #2a0730;
    color: var(--ubo-gold-soft);
    font-size: 1.3rem;
    font-weight: 800;
}

.ubo-therapy-card[open] .ubo-therapy-card-head::after {
    content: "-";
}

.ubo-therapy-card-head strong {
    color: var(--ubo-purple-deep);
    white-space: nowrap;
}

.ubo-therapy-card-head h2,
.ubo-booking-summary h2,
.ubo-booking-form h2 {
    margin: 0 0 12px;
    color: var(--ubo-purple-deep);
    font-family: "Cinzel", Georgia, serif;
    font-size: 1.55rem;
    letter-spacing: 0;
}

.ubo-therapy-card-head p,
.ubo-treatment-row p,
.ubo-booking-summary p,
.ubo-payment-note p {
    margin: 0;
    color: var(--ubo-muted);
}

.ubo-treatment-list {
    display: grid;
}

.ubo-treatment-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 18px;
    padding: 24px 28px;
    border-top: 1px solid rgba(75, 21, 89, 0.1);
}

.ubo-treatment-row h3 {
    margin: 0 0 8px;
    color: var(--ubo-purple);
    font-size: 1.08rem;
}

.ubo-treatment-row span {
    display: inline-flex;
    margin: 12px 8px 0 0;
    color: var(--ubo-purple-deep);
    font-weight: 800;
}

.ubo-treatment-action {
    display: grid;
    justify-items: end;
    align-content: start;
    gap: 6px;
    min-width: 120px;
}

.ubo-treatment-action strong {
    color: var(--ubo-purple-deep);
    font-size: 1.2rem;
}

.ubo-treatment-action small {
    color: var(--ubo-muted);
}

.ubo-add-treatment {
    min-height: 38px;
    padding: 8px 14px;
    border: 0;
    border-radius: 8px;
    background: #2a0730;
    color: var(--ubo-gold-soft);
    font: inherit;
    font-weight: 800;
    cursor: pointer;
}

.ubo-add-treatment.ubo-treatment-added {
    background: var(--ubo-gold);
    color: var(--ubo-purple-deep);
}

.ubo-booking-layout {
    display: grid;
    grid-template-columns: minmax(300px, 420px) minmax(0, 1fr);
    gap: 32px;
    align-items: start;
}

.ubo-booking-summary,
.ubo-booking-form {
    padding: 30px;
}

.ubo-booking-service {
    display: block;
    gap: 4px;
    padding: 14px 0;
    border-top: 1px solid rgba(75, 21, 89, 0.1);
}

.ubo-booking-service strong {
    color: var(--ubo-purple-deep);
}

.ubo-booking-service span,
.ubo-booking-totals {
    color: var(--ubo-muted);
}

.ubo-remove-treatment {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin-top: 10px;
    width: 36px;
    height: 36px;
    border: 1px solid rgba(138, 29, 42, 0.22);
    border-radius: 8px;
    background: #fdebec;
    color: #8a1d2a;
    cursor: pointer;
}

.ubo-remove-treatment svg {
    width: 18px;
    height: 18px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.ubo-booking-totals {
    margin-top: 18px;
    padding-top: 18px;
    border-top: 2px solid rgba(75, 21, 89, 0.12);
    font-weight: 800;
}

.ubo-booking-summary-actions {
    display: grid;
    gap: 10px;
    margin-top: 22px;
}

.ubo-booking-summary-actions .ubo-primary-button,
.ubo-booking-summary-actions .ubo-secondary-form-button {
    width: 100%;
}

.ubo-booking-form label,
.ubo-slot-fieldset legend {
    display: block;
    margin: 16px 0 8px;
    color: var(--ubo-purple-deep);
    font-weight: 800;
}

.ubo-booking-form input {
    width: 100%;
    border: 1px solid rgba(75, 21, 89, 0.22);
    border-radius: 8px;
    padding: 13px 14px;
    color: var(--ubo-ink);
    font: inherit;
}

.ubo-slot-fieldset {
    margin: 18px 0;
    padding: 0;
    border: 0;
}

.ubo-slot-placeholder {
    margin: 18px 0;
    padding: 16px;
    border-radius: 8px;
    background: #f7ecfa;
}

.ubo-slot-placeholder strong {
    color: var(--ubo-purple-deep);
}

.ubo-slot-placeholder p {
    margin: 6px 0 0;
    color: var(--ubo-muted);
}

.ubo-slot-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(96px, 1fr));
    gap: 10px;
}

.ubo-slot-grid label {
    margin: 0;
}

.ubo-slot-grid input {
    position: absolute;
    opacity: 0;
}

.ubo-slot-grid span {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 42px;
    border-radius: 8px;
    border: 1px solid rgba(75, 21, 89, 0.22);
    color: var(--ubo-purple-deep);
    cursor: pointer;
}

.ubo-slot-grid input:checked + span {
    background: #2a0730;
    color: var(--ubo-gold-soft);
}

.ubo-payment-note {
    margin: 18px 0;
    padding: 16px;
    border-radius: 8px;
    background: #f7ecfa;
}

.ubo-payment-note strong {
    color: var(--ubo-purple-deep);
}

.ubo-shop-page {
    min-height: 60vh;
    padding-top: 14px;
    padding-bottom: 104px;
}

.ubo-shop-intro {
    max-width: 930px;
    margin-bottom: 48px;
}

.ubo-shop-intro h1 {
    margin: 0;
    color: var(--ubo-purple-deep);
    font-family: "Cinzel", Georgia, serif;
    font-size: clamp(2.4rem, 6vw, 4.5rem);
    line-height: 1.08;
    letter-spacing: 0;
}

.ubo-shop-intro p {
    margin: 12px 0 0;
    color: var(--ubo-muted);
    font-size: 1.08rem;
}

.ubo-shop-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(300px, 390px);
    gap: 32px;
    align-items: start;
}

.ubo-shop-toolbar,
.ubo-shop-summary {
    border-radius: 8px;
    background: var(--ubo-white);
    border: 1px solid rgba(75, 21, 89, 0.12);
    box-shadow: var(--ubo-shadow);
}

.ubo-shop-toolbar {
    position: sticky;
    top: 150px;
    z-index: 5;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    margin-bottom: 26px;
    padding: 14px 18px;
    background: var(--ubo-purple-deep);
    color: var(--ubo-white);
}

.ubo-shop-toolbar span {
    display: block;
    color: var(--ubo-gold-soft);
    font-weight: 700;
}

.ubo-product-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 24px;
}

.ubo-product-card {
    overflow: hidden;
    border-radius: 8px;
    background: var(--ubo-white);
    border: 1px solid rgba(75, 21, 89, 0.12);
    box-shadow: var(--ubo-shadow);
}

.ubo-product-card img {
    display: block;
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: contain;
    background: #f7f5f7;
}

.ubo-product-content {
    padding: 22px;
}

.ubo-product-brand {
    display: inline-flex;
    margin-bottom: 10px;
    color: var(--ubo-purple);
    font-weight: 800;
    text-transform: uppercase;
    font-size: 0.78rem;
}

.ubo-product-content h2 {
    margin: 0 0 10px;
    color: var(--ubo-purple-deep);
    font-family: "Cinzel", Georgia, serif;
    font-size: 1.25rem;
    letter-spacing: 0;
}

.ubo-product-content p {
    margin: 0;
    color: var(--ubo-muted);
}

.ubo-product-meta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    margin: 18px 0;
}

.ubo-product-meta strong {
    color: var(--ubo-purple-deep);
    font-size: 1.2rem;
}

.ubo-product-meta span {
    color: var(--ubo-muted);
    font-weight: 700;
}

.ubo-add-product,
.ubo-shop-submit {
    width: 100%;
}

.ubo-add-product {
    min-height: 42px;
    border: 0;
    border-radius: 8px;
    background: #2a0730;
    color: var(--ubo-gold-soft);
    font: inherit;
    font-weight: 800;
    cursor: pointer;
}

.ubo-add-product.ubo-product-added {
    background: var(--ubo-gold);
    color: var(--ubo-purple-deep);
}

.ubo-shop-summary {
    position: sticky;
    top: 150px;
    padding: 28px;
}

.ubo-shop-summary h2,
.ubo-shop-form h2 {
    margin: 0 0 18px;
    color: var(--ubo-purple-deep);
    font-family: "Cinzel", Georgia, serif;
    font-size: 1.55rem;
    letter-spacing: 0;
}

.ubo-shop-items {
    display: grid;
    gap: 12px;
    color: var(--ubo-muted);
}

.ubo-shop-item {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 12px;
    align-items: start;
    padding: 12px 0;
    border-top: 1px solid rgba(75, 21, 89, 0.1);
}

.ubo-shop-item strong,
.ubo-shop-item span {
    display: block;
}

.ubo-shop-item strong {
    color: var(--ubo-purple-deep);
}

.ubo-shop-item span {
    color: var(--ubo-muted);
}

.ubo-remove-shop-item {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border: 1px solid rgba(138, 29, 42, 0.22);
    border-radius: 8px;
    background: #fdebec;
    color: #8a1d2a;
    cursor: pointer;
}

.ubo-remove-shop-item svg {
    width: 17px;
    height: 17px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.ubo-shop-total {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    margin: 18px 0 22px;
    padding-top: 18px;
    border-top: 2px solid rgba(75, 21, 89, 0.12);
    color: var(--ubo-purple-deep);
    font-weight: 800;
}

.ubo-shop-form label {
    display: block;
    margin: 16px 0 8px;
    color: var(--ubo-purple-deep);
    font-weight: 800;
}

.ubo-shop-form input {
    width: 100%;
    border: 1px solid rgba(75, 21, 89, 0.22);
    border-radius: 8px;
    padding: 13px 14px;
    color: var(--ubo-ink);
    font: inherit;
}

.ubo-shop-form input:focus {
    outline: 3px solid rgba(217, 179, 95, 0.34);
    border-color: var(--ubo-gold);
}

.ubo-shop-policy-note {
    margin: 16px 0 12px;
    color: var(--ubo-muted);
    font-size: 0.88rem;
    line-height: 1.5;
}

.ubo-shop-policy-note a {
    color: var(--ubo-purple-deep);
    font-weight: 800;
    text-decoration: underline;
    text-decoration-color: rgba(217, 179, 95, 0.85);
    text-underline-offset: 3px;
}

.ubo-shop-collection-note {
    margin: 12px 0;
    padding: 12px;
    border-radius: 8px;
    background: #f8f5f8;
    border-left: 4px solid var(--ubo-gold);
}

.ubo-shop-collection-note strong {
    display: block;
    color: var(--ubo-purple-deep);
    font-weight: 900;
}

.ubo-shop-collection-note p {
    margin: 4px 0 0;
    color: var(--ubo-muted);
    font-size: 0.9rem;
    line-height: 1.5;
}

.ubo-shop-submit:disabled {
    opacity: 0.58;
    cursor: not-allowed;
}

.ubo-site-footer {
    background: var(--ubo-purple-deep);
    color: rgba(255, 255, 255, 0.88);
}

.ubo-footer-inner {
    width: min(1180px, calc(100% - 32px));
    margin: 0 auto;
    padding: 22px 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
}

.ubo-footer-copy,
.ubo-footer-details p {
    margin: 3px 0 0;
}

.ubo-footer-details {
    text-align: right;
}

.ubo-footer-policy-links {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 1px;
    font-size: 0.86rem;
    font-weight: 800;
}

.ubo-footer-policy-links a {
    color: var(--ubo-gold-soft);
}

.ubo-footer-policy-links a:hover {
    color: var(--ubo-white);
    text-decoration: underline;
    text-underline-offset: 3px;
}

.ubo-cookie-consent {
    position: fixed;
    right: 18px;
    bottom: 18px;
    z-index: 100;
    width: min(430px, calc(100% - 36px));
}

.ubo-cookie-panel {
    padding: 16px;
    border-radius: 8px;
    background: var(--ubo-white);
    border: 1px solid rgba(75, 21, 89, 0.14);
    box-shadow: 0 24px 70px rgba(22, 0, 24, 0.28);
}

.ubo-cookie-panel strong {
    display: block;
    margin-bottom: 6px;
    color: var(--ubo-purple-deep);
    font-family: "Cinzel", Georgia, serif;
    font-size: 1.1rem;
}

.ubo-cookie-panel p {
    margin: 0;
    color: var(--ubo-muted);
    font-size: 0.9rem;
}

.ubo-cookie-options {
    display: grid;
    gap: 8px;
    margin-top: 12px;
    padding: 10px;
    border-radius: 8px;
    background: #f8f5f8;
    color: var(--ubo-purple-deep);
    font-size: 0.88rem;
    font-weight: 800;
}

.ubo-cookie-options label {
    display: flex;
    align-items: center;
    gap: 8px;
}

.ubo-cookie-options input {
    accent-color: var(--ubo-purple-deep);
}

.ubo-cookie-actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 8px;
    margin-top: 14px;
}

.ubo-cookie-actions button {
    min-height: 38px;
    border: 1px solid rgba(75, 21, 89, 0.16);
    border-radius: 8px;
    padding: 8px 12px;
    background: #f8f5f8;
    color: var(--ubo-purple-deep);
    font: inherit;
    font-weight: 800;
    cursor: pointer;
}

.ubo-cookie-actions button:last-child {
    background: var(--ubo-purple-deep);
    color: var(--ubo-gold-soft);
}

.ubo-admin-body .ubo-footer-inner {
    min-height: auto;
    padding: 16px 0;
}

.ubo-admin-body .ubo-footer-copy,
.ubo-admin-body .ubo-footer-details p {
    margin-top: 4px;
    font-size: 0.82rem;
}

@media (max-width: 900px) {
    .ubo-header-inner {
        min-height: 86px;
    }

    .ubo-logo-image {
        width: 82px;
        height: 82px;
    }

    .ubo-menu-toggle {
        display: block;
    }

    .ubo-main-nav {
        position: absolute;
        top: 86px;
        left: 0;
        right: 0;
        display: none;
        flex-direction: column;
        align-items: stretch;
        gap: 0;
        padding: 14px 24px 22px;
        background: rgba(22, 0, 24, 0.98);
    }

    .ubo-main-nav.ubo-main-nav-open {
        display: flex;
    }

    .ubo-nav-link {
        padding: 16px 0;
        border-bottom: 1px solid rgba(244, 220, 156, 0.16);
    }

    .ubo-hero-section {
        min-height: 500px;
        background-position: 63% center;
    }

    .ubo-hero-overlay {
        background: linear-gradient(90deg, rgba(255, 248, 236, 0.84), rgba(211, 174, 232, 0.5));
    }

    .ubo-welcome-section,
    .ubo-feature-section,
    .ubo-services-section,
    .ubo-feedback-layout,
    .ubo-dashboard-grid,
    .ubo-dashboard-panels,
    .ubo-sales-summary-grid,
    .ubo-admin-appointment-row,
    .ubo-contact-layout,
    .ubo-staff-grid,
    .ubo-therapy-grid,
    .ubo-booking-layout,
    .ubo-shop-layout,
    .ubo-product-grid,
    .ubo-popular-grid,
    .ubo-news-grid {
        grid-template-columns: 1fr;
    }

    .ubo-section {
        padding: 64px 0;
    }

    .ubo-news-heading {
        align-items: flex-start;
        flex-direction: column;
    }

    .ubo-admin-service-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .ubo-sales-product-form-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .ubo-sales-product-filter {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .ubo-admin-add-appointment[open] {
        align-items: stretch;
        justify-content: stretch;
        padding: 12px;
    }

    .ubo-admin-add-appointment-panel {
        width: 100%;
        max-height: calc(100vh - 24px);
        max-height: calc(100dvh - 24px);
        -webkit-overflow-scrolling: touch;
        overscroll-behavior: contain;
    }

    .ubo-admin-appointment-slot-check {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .ubo-admin-appointment-slot-check button {
        min-height: 38px;
    }

    .ubo-admin-appointment-edit-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .ubo-admin-appointment-main-grid,
    .ubo-admin-appointment-status-grid,
    .ubo-admin-service-popup-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .ubo-admin-appointment-edit-grid.ubo-hrm-staff-form-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .ubo-admin-slot-results {
        grid-template-columns: 1fr;
    }

    .ubo-admin-service-toolbar {
        grid-template-columns: 1fr;
    }

    .ubo-sales-report-head {
        flex-direction: column;
    }

    .ubo-sales-report-filter {
        width: 100%;
        grid-template-columns: repeat(2, minmax(0, 1fr)) auto;
    }

    .ubo-dashboard-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .ubo-therapy-basket {
        top: 140px;
    }

    .ubo-shop-summary {
        position: static;
    }

    .ubo-shop-toolbar {
        top: 140px;
    }
}

@media (max-width: 560px) {
    .ubo-header-inner {
        width: min(100% - 24px, 1180px);
        gap: 16px;
    }

    .ubo-social-inner {
        width: min(100% - 24px, 1180px);
        flex-wrap: wrap;
        gap: 10px;
    }

    .ubo-social-links {
        gap: 10px;
    }

    .ubo-top-phone {
        width: 100%;
    }

    .ubo-floating-actions {
        right: 4px;
        bottom: 104px;
        gap: 10px;
    }

    .ubo-whatsapp-float {
        width: 34px;
        height: 34px;
    }

    .ubo-feedback-float {
        min-height: 78px;
        min-width: 34px;
        padding: 7px 5px;
        font-size: 0.82rem;
    }

    .ubo-hero-content {
        width: min(100% - 24px, 1180px);
        padding: 32px 0 58px;
        transform: translateY(-16px);
    }

    .ubo-hero-text {
        font-size: 1rem;
    }

    .ubo-primary-button,
    .ubo-secondary-button {
        width: 100%;
    }

    .ubo-contact-actions {
        flex-direction: column;
    }

    .ubo-therapy-basket,
    .ubo-shop-toolbar,
    .ubo-treatment-row {
        grid-template-columns: 1fr;
        align-items: start;
    }

    .ubo-therapy-basket,
    .ubo-shop-toolbar {
        flex-direction: column;
        align-items: stretch;
        top: 166px;
    }

    .ubo-product-meta {
        align-items: flex-start;
        flex-direction: column;
    }

    .ubo-treatment-action {
        justify-items: start;
    }

    .ubo-therapy-card-head {
        align-items: flex-start;
        flex-direction: column;
    }

    .ubo-therapy-card-head strong {
        white-space: normal;
    }

    .ubo-admin-service-heading {
        flex-direction: column;
    }

    .ubo-admin-service-grid {
        grid-template-columns: 1fr;
    }

    .ubo-sales-summary-grid,
    .ubo-sales-product-form-grid,
    .ubo-sales-product-filter,
    .ubo-sales-report-filter {
        grid-template-columns: 1fr;
    }

    .ubo-sales-product-heading,
    .ubo-sales-report-head {
        flex-direction: column;
    }

    .ubo-admin-add-appointment[open] {
        padding: 0;
    }

    .ubo-admin-add-appointment-panel {
        min-height: 100vh;
        max-height: 100vh;
        min-height: 100dvh;
        max-height: 100dvh;
        border-radius: 0;
        padding: 14px;
        -webkit-overflow-scrolling: touch;
        overscroll-behavior: contain;
    }

    .ubo-admin-add-appointment-head {
        position: sticky;
        top: 0;
        z-index: 2;
        gap: 10px;
        margin: -14px -14px 12px;
        padding: 12px 14px;
        background: var(--ubo-white);
    }

    .ubo-admin-add-appointment-head h2 {
        font-size: 1.05rem;
    }

    .ubo-admin-add-appointment-head a {
        min-height: 34px;
        padding: 6px 10px;
        font-size: 0.86rem;
    }

    .ubo-admin-appointment-slot-check,
    .ubo-admin-appointment-topline,
    .ubo-admin-appointment-edit-grid,
    .ubo-admin-appointment-main-grid,
    .ubo-admin-appointment-status-grid,
    .ubo-admin-service-popup-grid {
        grid-template-columns: 1fr;
    }

    .ubo-admin-page .ubo-admin-appointment-intro {
        grid-template-columns: 1fr;
    }

    .ubo-admin-page .ubo-admin-appointment-intro .ubo-eyebrow,
    .ubo-admin-page .ubo-admin-appointment-intro h1,
    .ubo-admin-appointment-tabs {
        grid-column: 1;
    }

    .ubo-admin-appointment-tabs {
        grid-row: auto;
        justify-content: flex-start;
    }

    .ubo-admin-appointment-edit-grid.ubo-hrm-staff-form-grid {
        grid-template-columns: 1fr;
    }

    .ubo-admin-appointment-slot-check {
        gap: 8px;
    }

    .ubo-admin-appointment-slot-check button,
    .ubo-admin-actions .ubo-admin-approve,
    .ubo-admin-actions .ubo-admin-hide {
        width: 100%;
        justify-content: center;
    }

    .ubo-admin-appointment-card {
        padding: 12px;
    }

    .ubo-admin-actions {
        align-items: stretch;
        flex-direction: column;
    }

    .ubo-admin-enquiry-actions {
        align-items: center;
        flex-direction: row;
        flex-wrap: nowrap;
        gap: 8px;
        overflow-x: auto;
        padding-bottom: 2px;
    }

    .ubo-admin-enquiry-actions form {
        display: inline-flex;
        flex: 0 0 auto;
        flex-wrap: nowrap;
        gap: 8px;
    }

    .ubo-admin-enquiry-actions .ubo-admin-icon-action {
        flex: 0 0 40px;
    }

    .ubo-admin-enquiry-actions .ubo-admin-hide {
        flex: 0 0 auto;
        min-width: 68px;
        padding: 8px 12px;
    }

    .ubo-admin-customer-email-form {
        padding: 12px;
    }

    .ubo-admin-customer-table-head,
    .ubo-admin-customer-table-row {
        grid-template-columns: 52px 132px 176px 112px 42px 100px 58px 184px;
        min-width: 856px;
    }

    .ubo-admin-customer-table-head span,
    .ubo-admin-customer-table-row > div {
        min-height: 44px;
        padding: 7px 8px;
        font-size: 0.82rem;
    }

    .ubo-admin-customer-dob-form {
        gap: 5px;
    }

    .ubo-admin-customer-dob-form input {
        width: 96px;
        min-height: 32px;
        font-size: 0.8rem;
    }

    .ubo-admin-customer-dob-form .ubo-admin-icon-action,
    .ubo-admin-customer-delete-form .ubo-admin-icon-action {
        flex-basis: 32px;
        width: 32px;
        height: 32px;
    }

    .ubo-roster-hour-row,
    .ubo-roster-inline-form,
    .ubo-roster-list-row {
        grid-template-columns: 1fr;
    }

    .ubo-roster-inline-form .ubo-admin-approve,
    .ubo-roster-hour-row .ubo-admin-approve {
        width: 100%;
        justify-content: center;
    }

    .ubo-admin-schedule-override {
        justify-content: center;
    }

    .ubo-section {
        width: min(100% - 24px, 1180px);
        padding: 52px 0;
    }

    .ubo-login-section {
        width: min(100% - 24px, 1180px);
        padding: 52px 0;
    }

    .ubo-login-form {
        padding: 24px;
    }

    .ubo-news-inner {
        width: min(100% - 24px, 1180px);
        padding: 58px 0;
    }

    .ubo-service-card {
        min-height: auto;
        padding: 26px;
    }

    .ubo-service-card p {
        max-width: 100%;
    }

    .ubo-popular-card {
        padding: 26px;
    }

    .ubo-news-card {
        min-height: auto;
        padding: 26px;
    }

    .ubo-feedback-form,
    .ubo-approved-feedback,
    .ubo-admin-feedback-card,
    .ubo-contact-form,
    .ubo-contact-details {
        padding: 24px;
    }

    .ubo-review-topline,
    .ubo-admin-feedback-head {
        flex-direction: column;
    }

    .ubo-footer-inner {
        width: min(100% - 24px, 1180px);
        align-items: flex-start;
        flex-direction: column;
    }

    .ubo-dashboard-grid {
        grid-template-columns: 1fr;
    }

    .ubo-footer-details {
        text-align: left;
    }

    .ubo-footer-policy-links {
        align-items: flex-start;
    }
}
