:root {
    /* Platform names for the shared design tokens (tokens.css); fallbacks cover a page that loads app.css alone. */
    --ink: var(--rp-ink, #1d2726);
    --muted: var(--rp-muted, #5b6462);
    --line: var(--rp-line, #dce3e1);
    --soft: var(--rp-soft, #f2f5f4);
    --surface: var(--rp-surface, #ffffff);
    --teal: var(--rp-primary, #0f6b62);
    --teal-dark: var(--rp-primary-pressed, #0a554e);
    --teal-soft: var(--rp-primary-soft, #eef7f5);
    --orange: var(--rp-accent, #f0a030);
    --red: var(--rp-danger, #c33a3a);
    --danger: var(--rp-danger, #c33a3a);
    --blue: var(--rp-info, #2c6f9f);
    --focus-ring: var(--rp-primary-ring, rgba(15, 107, 98, .18));
    /* ESdesire company colours, used only by the ESdesire Solutions page. */
    --esd-green: #80b737;
    --esd-green-dark: #5f8d25;
    --esd-purple: #8b4486;
    --esd-blue: #118bbd;
    --sidebar: var(--rp-sidebar, #14201e);
    --tenant-primary: var(--rp-primary, #0f6b62);
    --tenant-accent: var(--rp-accent, #f0a030);
    --shadow: 0 10px 30px rgba(22, 37, 34, .09);
    --radius-xs: var(--rp-radius-xs, 3px);
    --radius-sm: var(--rp-radius-sm, 4px);
    --radius-md: var(--rp-radius-md, 6px);
    --radius-lg: var(--rp-radius-lg, 8px);
    color-scheme: light;
    font-family: var(--rp-font-sans, Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif);
    font-size: 16px;
    line-height: 1.45;
    color: var(--ink);
    background: var(--soft);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; min-width: 320px; background: var(--soft); }
button, input, select, textarea { font: inherit; letter-spacing: 0; }
button, select { cursor: pointer; }
a { color: inherit; text-decoration: none; }
svg { width: 1.1rem; height: 1.1rem; stroke-width: 1.8; flex: 0 0 auto; }
h1, h2, h3, p { margin-top: 0; }
h1 { margin-bottom: .35rem; font-size: 1.75rem; line-height: 1.18; letter-spacing: 0; }
h2 { margin-bottom: .3rem; font-size: 1.15rem; line-height: 1.25; letter-spacing: 0; }
small { color: var(--muted); }
.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; }
.eyebrow { margin-bottom: .35rem; color: var(--teal); font-size: .72rem; line-height: 1; font-weight: 800; text-transform: uppercase; letter-spacing: 0; }

.button, .icon-button {
    border: 1px solid transparent;
    border-radius: var(--radius-sm);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    min-height: 2.55rem;
    padding: .62rem .9rem;
    font-weight: 750;
    transition: background .16s ease, border-color .16s ease, color .16s ease, transform .16s ease;
}
.button:hover, .icon-button:hover { transform: translateY(-1px); }
.button.primary { background: var(--tenant-primary); color: #fff; }
.button.primary:hover { background: var(--teal-dark); }
.button.secondary { background: #fff; border-color: var(--line); color: var(--ink); }
.button.secondary:hover { border-color: #aebbb8; background: #f9fbfa; }
.button.danger { background: #fff; border-color: #e7bbbb; color: #a52e2e; }
.button.wide { width: 100%; }
.icon-button { width: 2.55rem; padding: 0; background: #fff; border-color: var(--line); color: var(--muted); }
.icon-button:hover { color: var(--ink); border-color: #aebbb8; }
.text-link { display: inline-flex; align-items: center; gap: .4rem; color: var(--teal); font-weight: 750; }
.text-link:hover { text-decoration: underline; }

label { display: grid; gap: .42rem; color: #394543; font-size: .82rem; font-weight: 750; }
input, select, textarea {
    width: 100%;
    min-height: 2.55rem;
    padding: .62rem .72rem;
    border: 1px solid #cdd7d5;
    border-radius: var(--radius-sm);
    background: #fff;
    color: var(--ink);
    outline: none;
}
textarea { resize: vertical; }
input:focus, select:focus, textarea:focus { border-color: var(--tenant-primary); box-shadow: 0 0 0 3px var(--focus-ring); }
input:disabled, select:disabled, textarea:disabled { background: var(--soft); color: var(--muted); cursor: not-allowed; }
.button:disabled, .icon-button:disabled { opacity: .5; cursor: not-allowed; }
.button:disabled:hover, .icon-button:disabled:hover { transform: none; }
a:focus-visible, button:focus-visible, summary:focus-visible, [tabindex]:focus-visible { outline: 2px solid var(--teal); outline-offset: 2px; }
label small { font-size: .72rem; font-weight: 500; }
.checkbox-row { grid-template-columns: auto 1fr; align-items: center; }
.checkbox-row input, .checkbox-grid input { width: 1rem; min-height: 1rem; accent-color: var(--teal); }

.brand-lockup { display: inline-flex; align-items: center; gap: .7rem; min-width: 0; color: #fff; }
.brand-lockup.dark { color: var(--ink); }
.brand-lockup > span:last-child { display: grid; min-width: 0; }
.brand-lockup strong { font-size: .96rem; white-space: nowrap; }
.brand-lockup small { color: #98a7a4; font-size: .68rem; white-space: nowrap; }
.brand-logo { width: 2.35rem; height: 2.35rem; flex: 0 0 auto; border-radius: var(--radius-md); object-fit: contain; background: #fff; }
.restpos-brand-icon { width: 2.65rem; height: 2.4rem; flex: 0 0 auto; display: block; border-radius: var(--radius-md); object-fit: contain; }

.notice { display: flex; align-items: center; gap: .65rem; border: 1px solid; border-radius: var(--radius-sm); padding: .72rem .85rem; margin-bottom: 1rem; font-size: .86rem; font-weight: 650; }
.notice.success { border-color: #b9dbcf; background: #edf8f4; color: #12634f; }
.notice.error { border-color: #edc3c3; background: #fff2f2; color: #9f3030; }
.notice.info { border-color: color-mix(in srgb, var(--rp-info, #2c6f9f) 28%, #fff); background: var(--rp-info-soft, #e3eef6); color: var(--rp-info-pressed, #245d86); }
.notice.open, .notice.warning { border-color: color-mix(in srgb, var(--rp-accent, #f0a030) 40%, #fff); background: var(--rp-accent-soft, #fdf1dc); color: var(--rp-accent-ink, #945515); }
/* Notes (docs/USER_GUIDE.md): Requires = needs something first, Depends on = another setting decides it, Limited = capped by plan, role or device. */
.notice.note { align-items: flex-start; border-inline-start-width: 4px; color: var(--ink); font-weight: 500; line-height: 1.5; }
.notice.note > i, .notice.note > svg { flex: 0 0 auto; width: 1rem; height: 1rem; margin-top: .15rem; }
.notice.note .note-kind { display: inline-block; margin-inline-end: .4rem; padding: 0 .4rem; border-radius: var(--radius-xs); background: color-mix(in srgb, currentColor 12%, transparent); font-size: .72rem; font-weight: 700; line-height: 1.35rem; white-space: nowrap; }
.notice.note .text-link { margin-inline-start: .35rem; font-weight: 650; white-space: nowrap; }
.notice.requires { border-color: color-mix(in srgb, var(--rp-accent, #f0a030) 40%, #fff); border-inline-start-color: var(--rp-accent, #f0a030); background: var(--rp-accent-soft, #fdf1dc); }
.notice.requires > i, .notice.requires > svg, .notice.requires .note-kind { color: var(--rp-accent-ink, #945515); }
.notice.depends { border-color: color-mix(in srgb, var(--rp-info, #2c6f9f) 28%, #fff); border-inline-start-color: var(--rp-info, #2c6f9f); background: var(--rp-info-soft, #e3eef6); }
.notice.depends > i, .notice.depends > svg, .notice.depends .note-kind { color: var(--rp-info-pressed, #245d86); }
.notice.limited { border-color: color-mix(in srgb, var(--rp-slate, #5d6d7e) 25%, #fff); border-inline-start-color: var(--rp-slate, #5d6d7e); background: var(--rp-slate-soft, #eef1f4); }
.notice.limited > i, .notice.limited > svg, .notice.limited .note-kind { color: var(--rp-slate-pressed, #4c5a68); }
.notes-stack { display: grid; gap: .5rem; margin-bottom: 1rem; }
.notes-stack > .notice { margin-bottom: 0; }
.status-dot { display: inline-block; width: .55rem; height: .55rem; border-radius: 50%; background: #2f855a; box-shadow: 0 0 0 3px rgba(47, 133, 90, .15); }

/* Public pages */
.public-body { min-height: 100vh; background: #edf1f0; }
.panel-heading, .section-heading { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.panel-heading p, .panel-heading h2, .section-heading p, .section-heading h2 { margin-bottom: 0; }
.panel-heading .eyebrow, .section-heading .eyebrow { margin-bottom: .35rem; }

/* ESdesire Solutions */
.solutions-page { overflow: hidden; background: #fff; color: #111; font-family: Roboto, Inter, ui-sans-serif, system-ui, sans-serif; }
.solutions-frame { width: min(1440px, calc(100% - 6rem)); margin-inline: auto; }
.solutions-nav { position: fixed; inset: 0 0 auto; z-index: 60; height: 4.5rem; display: flex; align-items: center; justify-content: space-between; gap: 2rem; padding-inline: max(3rem, calc((100vw - 1440px) / 2)); border-bottom: 1px solid rgba(255, 255, 255, .1); background: rgba(5, 5, 5, .82); color: #fff; backdrop-filter: blur(18px) saturate(1.2); }
.solutions-brand { display: inline-flex; align-items: center; gap: .9rem; min-width: 0; }
.solutions-brand img { width: auto; height: 2.75rem; display: block; object-fit: contain; }
.solutions-brand span { padding-left: .9rem; border-left: 1px solid rgba(255, 255, 255, .25); color: #fff; font-size: .74rem; font-weight: 750; letter-spacing: .08em; text-transform: uppercase; }
.solutions-nav .solutions-brand span { padding-top: 10px; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; letter-spacing: .02em; text-transform: none; }
.solutions-links { display: flex; align-items: center; gap: 1.8rem; font-size: .83rem; font-weight: 650; }
.solutions-links > a:not(.solutions-nav-cta):hover { color: var(--esd-green); }
.solutions-nav-cta, .solutions-button { min-height: 2.75rem; display: inline-flex; align-items: center; justify-content: center; gap: .55rem; padding: .72rem 1rem; border: 1px solid transparent; font-size: .78rem; font-weight: 800; transition: background .25s ease, color .25s ease, border-color .25s ease, transform .25s ease; }
.solutions-nav-cta { background: var(--esd-green); color: #0d1408; }
.solutions-nav-cta:hover { background: #98d24b; }
.solutions-button:hover { transform: translateY(-2px); }
.solutions-button.green { background: var(--esd-green); color: #0d1408; }
.solutions-button.green:hover { background: #98d24b; }
.solutions-button.outline { border-color: rgba(255, 255, 255, .35); color: #fff; }
.solutions-button.outline:hover { border-color: #fff; background: #fff; color: #111; }
.solutions-button.dark { background: #080808; color: #fff; }
.solutions-button.dark:hover { background: #252525; }
.solutions-menu-button { display: none; width: 2.6rem; height: 2.6rem; place-items: center; padding: 0; border: 1px solid rgba(255, 255, 255, .2); background: transparent; color: #fff; }
.solutions-hero { position: relative; isolation: isolate; min-height: 740px; display: grid; align-content: end; padding: 10rem 0 3rem; background: #050505; color: #fff; }
.solutions-orbit { position: absolute; z-index: -1; border-radius: 50%; filter: blur(1px); opacity: .16; }
.solutions-orbit-green { width: 38rem; height: 38rem; left: -24rem; top: 4rem; background: radial-gradient(circle, var(--esd-green), transparent 68%); }
.solutions-orbit-purple { width: 34rem; height: 34rem; right: -18rem; bottom: -12rem; background: radial-gradient(circle, var(--esd-purple), transparent 68%); }
.solutions-hero-grid { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(300px, .6fr); gap: clamp(3rem, 8vw, 9rem); align-items: end; }
.solutions-kicker { margin: 0 0 1.2rem; color: var(--esd-green); font-size: .7rem; font-weight: 850; letter-spacing: .16em; text-transform: uppercase; }
.solutions-hero h1, .solutions-page h2 { font-family: Outfit, Inter, ui-sans-serif, system-ui, sans-serif; }
.solutions-hero h1 { margin: 0; font-size: clamp(4rem, 7.2vw, 6.8rem); font-weight: 900; line-height: .9; letter-spacing: -.035em; text-transform: uppercase; }
.solutions-hero h1 span { display: block; }
.solutions-hero h1 span:nth-child(2) { padding-left: 10%; }
.solutions-hero h1 span:nth-child(3) { padding-left: 4%; }
.solutions-hero h1 em { color: var(--esd-green); font-style: normal; }
.solutions-hero-copy { padding-bottom: .45rem; }
.solutions-dash { width: 2.6rem; height: 3px; display: block; margin-bottom: 1.4rem; background: var(--esd-green); }
.solutions-hero-copy p { margin-bottom: 2rem; color: #c7cbc9; font-size: 1rem; line-height: 1.7; }
.solutions-hero-foot { display: grid; grid-template-columns: repeat(4, 1fr); margin-top: 5.5rem; border-top: 1px solid rgba(255, 255, 255, .14); }
.solutions-hero-foot span { padding: 1rem 1.2rem; border-right: 1px solid rgba(255, 255, 255, .14); color: #9fa5a2; font-size: .67rem; font-weight: 750; letter-spacing: .12em; text-transform: uppercase; }
.solutions-hero-foot span:first-child { padding-left: 0; }
.solutions-hero-foot span:last-child { border-right: 0; }
.solutions-statement { padding: clamp(5rem, 9vw, 9rem) 0; background: #fff; }
.solutions-statement p { max-width: 1200px; margin: 0 auto; color: #090909; font-family: Outfit, Inter, ui-sans-serif, system-ui, sans-serif; font-size: clamp(2.8rem, 6vw, 5.5rem); font-weight: 900; line-height: 1; letter-spacing: -.035em; text-align: center; text-transform: uppercase; }
.solutions-capabilities { padding: 7rem 0; background: #f3f3f1; }
.solutions-section-intro { display: grid; grid-template-columns: 150px minmax(0, 1fr) minmax(280px, .5fr); gap: 3rem; align-items: end; margin-bottom: 4rem; }
.solutions-section-intro .solutions-kicker { align-self: start; color: var(--esd-green-dark); }
.solutions-section-intro h2, .solutions-pos h2, .solutions-contact h2 { margin: 0; font-size: clamp(2.8rem, 5vw, 4.8rem); font-weight: 900; line-height: .98; letter-spacing: -.035em; text-transform: uppercase; }
.solutions-section-intro > p:last-child { margin: 0; color: #606663; line-height: 1.7; }
.solutions-service-list { border-bottom: 1px solid #cfd3d1; }
.solutions-service-list article { position: relative; display: grid; grid-template-columns: 70px minmax(260px, .7fr) minmax(300px, 1fr) 3rem; gap: 2rem; align-items: center; min-height: 9.5rem; padding: 1.5rem; border-top: 1px solid #cfd3d1; transition: background .25s ease, padding .25s ease; }
.solutions-service-list article::before { content: ""; position: absolute; inset: -1px auto auto 0; width: 5rem; height: 3px; background: currentColor; }
.solutions-service-list article:hover { padding-inline: 2rem 1rem; background: #fff; }
.solutions-service-list article > span { color: #848a87; font-size: .68rem; font-weight: 850; }
.solutions-service-list h3 { margin: 0; font-family: Outfit, Inter, ui-sans-serif, system-ui, sans-serif; font-size: clamp(1.35rem, 2.1vw, 2rem); line-height: 1.1; }
.solutions-service-list p { max-width: 620px; margin: 0; color: #656b68; font-size: .87rem; line-height: 1.65; }
.solutions-service-list article > svg { width: 1.55rem; height: 1.55rem; justify-self: end; }
.solutions-service-list .green { color: var(--esd-green-dark); }
.solutions-service-list .purple { color: var(--esd-purple); }
.solutions-service-list .blue { color: var(--esd-blue); }
.solutions-service-list .orange { color: #be6d2a; }
.solutions-service-list article p { color: #656b68; }
.solutions-service-list article h3 { color: #151716; }
.solutions-pos { padding: 7rem 0; background: #050505; color: #fff; }
.solutions-pos-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(300px, .5fr); gap: 6rem; align-items: end; margin-bottom: 4.5rem; }
.solutions-pos-grid > p { margin: 0; color: #a8adaa; line-height: 1.75; }
.solutions-stats { display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid #313432; border-bottom: 1px solid #313432; }
.solutions-stats > div { padding: 2rem; border-right: 1px solid #313432; }
.solutions-stats > div:first-child { padding-left: 0; }
.solutions-stats > div:last-child { border-right: 0; }
.solutions-stats dt { font-family: Outfit, Inter, ui-sans-serif, system-ui, sans-serif; font-size: clamp(2.2rem, 4vw, 4rem); font-weight: 850; }
.solutions-stats > div:nth-child(1) dt { color: var(--esd-green); }
.solutions-stats > div:nth-child(2) dt { color: #d895d3; }
.solutions-stats > div:nth-child(3) dt { color: #78c9ec; }
.solutions-stats > div:nth-child(4) dt { color: #efb477; }
.solutions-stats dd { margin: .35rem 0 0; color: #8f9692; font-size: .68rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.solutions-approach { padding: 7rem 0; background: #fff; }
.solutions-process { display: grid; grid-template-columns: repeat(4, 1fr); margin-block: 0; padding: 0; border-top: 1px solid #d1d5d3; border-bottom: 1px solid #d1d5d3; list-style: none; }
.solutions-process li { min-height: 18rem; padding: 2rem; border-right: 1px solid #d1d5d3; }
.solutions-process li:first-child { padding-left: 0; }
.solutions-process li:last-child { border-right: 0; }
.solutions-process span { color: #8c928f; font-size: .68rem; font-weight: 850; }
.solutions-process h3 { margin: 5rem 0 .8rem; font-family: Outfit, Inter, ui-sans-serif, system-ui, sans-serif; font-size: 1.4rem; }
.solutions-process p { margin: 0; color: #676d6a; font-size: .83rem; line-height: 1.65; }
.solutions-process li:nth-child(1) h3 { color: var(--esd-green-dark); }
.solutions-process li:nth-child(2) h3 { color: var(--esd-purple); }
.solutions-process li:nth-child(3) h3 { color: var(--esd-blue); }
.solutions-process li:nth-child(4) h3 { color: #b96725; }
.solutions-contact { padding: 7rem 0; background: var(--esd-green); color: #0a0d08; }
.solutions-contact .solutions-kicker { color: #243217; }
.solutions-contact-grid { display: grid; grid-template-columns: 150px minmax(0, 1.1fr) minmax(280px, .46fr); gap: 3rem; align-items: end; }
.solutions-contact-grid > div > p { margin-bottom: 1.5rem; color: #26351a; line-height: 1.65; }
.solutions-footer { padding: 3.2rem 0 1.6rem; background: #050505; color: #fff; }
.solutions-footer-main { display: grid; grid-template-columns: 1fr 1fr auto; gap: 3rem; align-items: center; }
.solutions-footer-main p { margin: 0; color: #929895; font-size: .8rem; }
.solutions-footer nav { display: flex; gap: 1.3rem; font-size: .75rem; font-weight: 700; }
.solutions-footer nav a:hover, .solutions-footer-bottom a:hover { color: var(--esd-green); }
.solutions-footer-bottom { display: flex; justify-content: space-between; gap: 2rem; margin-top: 2.5rem; padding-top: 1.4rem; border-top: 1px solid #2b2e2c; color: #7f8582; font-size: .7rem; }

@media (max-width: 1000px) {
    .solutions-frame { width: min(100% - 3rem, 900px); }
    .solutions-nav { padding-inline: 1.5rem; }
    .solutions-hero-grid, .solutions-pos-grid { grid-template-columns: 1fr; gap: 3rem; }
    .solutions-hero-copy { max-width: 560px; }
    .solutions-section-intro { grid-template-columns: 120px 1fr; }
    .solutions-section-intro > p:last-child { grid-column: 2; }
    .solutions-service-list article { grid-template-columns: 50px minmax(220px, .7fr) minmax(260px, 1fr) 2rem; gap: 1.3rem; }
    .solutions-contact-grid { grid-template-columns: 120px 1fr; }
    .solutions-contact-grid > div { grid-column: 2; }
}

@media (max-width: 760px) {
    .solutions-menu-button { display: grid; }
    .solutions-links { position: absolute; top: calc(100% + 1px); left: 0; right: 0; display: none; align-items: stretch; gap: .15rem; padding: 1rem; border-bottom: 1px solid #292c2a; background: #0c0d0c; box-shadow: 0 18px 45px rgba(0, 0, 0, .35); }
    .solutions-links.open { display: grid; }
    .solutions-links > a { min-height: 2.8rem; display: flex; align-items: center; padding-inline: .8rem; }
    .solutions-links .solutions-nav-cta { justify-content: center; }
    .solutions-hero { min-height: 680px; padding-top: 8.5rem; }
    .solutions-hero h1 span:nth-child(2), .solutions-hero h1 span:nth-child(3) { padding-left: 0; }
    .solutions-hero-foot { grid-template-columns: repeat(2, 1fr); margin-top: 4rem; }
    .solutions-hero-foot span:nth-child(2) { border-right: 0; }
    .solutions-hero-foot span:nth-child(-n+2) { border-bottom: 1px solid rgba(255, 255, 255, .14); }
    .solutions-section-intro, .solutions-contact-grid { grid-template-columns: 1fr; gap: 1.4rem; }
    .solutions-section-intro > p:last-child, .solutions-contact-grid > div { grid-column: auto; }
    .solutions-service-list article { grid-template-columns: 42px 1fr 2rem; align-items: start; gap: 1rem; padding: 1.5rem .4rem; }
    .solutions-service-list article:hover { padding-inline: .8rem 0; }
    .solutions-service-list article p { grid-column: 2 / 4; }
    .solutions-stats, .solutions-process { grid-template-columns: repeat(2, 1fr); }
    .solutions-stats > div:nth-child(2), .solutions-process li:nth-child(2) { border-right: 0; }
    .solutions-stats > div:nth-child(-n+2) { border-bottom: 1px solid #313432; }
    .solutions-process li:nth-child(-n+2) { border-bottom: 1px solid #d1d5d3; }
    .solutions-stats > div:first-child, .solutions-process li:first-child { padding-left: 2rem; }
    .solutions-process li { min-height: 15rem; }
    .solutions-footer-main { grid-template-columns: 1fr; gap: 1.4rem; }
    .solutions-footer nav { flex-wrap: wrap; }
}

@media (max-width: 520px) {
    .solutions-frame { width: calc(100% - 2rem); }
    .solutions-nav { height: 4.1rem; padding-inline: 1rem; }
    .solutions-brand img { height: 2.2rem; }
    .solutions-brand span { font-size: .63rem; }
    .solutions-hero { min-height: 650px; padding-top: 7.5rem; }
    .solutions-hero h1 { font-size: clamp(3.15rem, 16vw, 4.5rem); }
    .solutions-statement, .solutions-capabilities, .solutions-pos, .solutions-approach, .solutions-contact { padding-block: 5rem; }
    .solutions-service-list article { grid-template-columns: 34px 1fr auto; }
    .solutions-stats, .solutions-process { grid-template-columns: 1fr; }
    .solutions-stats > div, .solutions-stats > div:first-child { padding: 1.6rem 0; border-right: 0; border-bottom: 1px solid #313432; }
    .solutions-process li, .solutions-process li:first-child { padding: 1.6rem 0; border-right: 0; border-bottom: 1px solid #d1d5d3; }
    .solutions-stats > div:last-child, .solutions-process li:last-child { border-bottom: 0; }
    .solutions-process li { min-height: 12rem; }
    .solutions-process h3 { margin-top: 3rem; }
    .solutions-footer-bottom { flex-direction: column; gap: .5rem; }
}
.lead-status-form select { min-height: 2rem; padding-block: .3rem; font-size: .72rem; }
.platform-content > .data-section + .data-section { margin-top: 1rem; }

.restaurant-public { min-height: 100vh; background: #f2f5f4; }
.restaurant-public > header { display: flex; align-items: center; justify-content: space-between; padding: 1.25rem 3rem; border-bottom: 1px solid var(--line); }
.restaurant-brand { display: flex; align-items: center; gap: .7rem; font-size: 1rem; }
.restaurant-brand > span { width: 2.4rem; height: 2.4rem; border-radius: var(--radius-sm); display: grid; place-items: center; background: var(--tenant-primary); color: #fff; font-weight: 900; }
.restaurant-brand > img { width: 2.4rem; height: 2.4rem; border-radius: var(--radius-sm); object-fit: contain; background: #fff; }
.restaurant-intro { max-width: 1180px; margin: auto; min-height: calc(100vh - 82px); display: grid; grid-template-columns: 1fr .8fr; gap: 7rem; align-items: center; padding: 4rem 2rem; }
.restaurant-intro h1 { max-width: 680px; font-size: 3.5rem; }
.restaurant-intro > div:first-child > p:last-child { color: var(--muted); font-size: 1.08rem; }
.restaurant-content-section { width: min(1180px, calc(100% - 2rem)); margin: 0 auto; padding: 3rem 1rem; border-top: 1px solid var(--line); }
.restaurant-content-section > p { max-width: 760px; color: var(--muted); line-height: 1.75; }
.restaurant-service-grid,.restaurant-location-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 1rem; }
.restaurant-service-grid article,.restaurant-location-grid article { padding: 1.2rem; border: 1px solid var(--line); border-radius: var(--radius-md); background: #fff; }
.restaurant-service-grid svg { color: var(--tenant-primary); }
.restaurant-gallery { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: .75rem; }
.restaurant-gallery img { width: 100%; height: 240px; object-fit: cover; border-radius: var(--radius-md); }
.restaurant-location-grid dl { display: grid; gap: .25rem; margin-top: 1rem; }
.restaurant-location-grid dl div { display: flex; justify-content: space-between; gap: 1rem; font-size: .82rem; }
.restaurant-location-grid dd { margin: 0; color: var(--muted); }
.restaurant-contact { display: flex; align-items: center; justify-content: space-between; gap: 2rem; }
.public-gallery-admin { display: grid; gap: .5rem; margin-top: 1rem; }
.public-gallery-admin article { display: grid; grid-template-columns: 72px 1fr auto; align-items: center; gap: .75rem; padding: .5rem; border: 1px solid var(--line); border-radius: var(--radius-md); }
.public-gallery-admin img { width: 72px; height: 56px; object-fit: cover; border-radius: var(--radius-sm); }
.public-logo-preview { display: flex; align-items: center; gap: .8rem; padding: .75rem; border: 1px solid var(--line); border-radius: var(--radius-md); background: #f7f9f8; }
.public-logo-preview img { width: 72px; height: 72px; object-fit: contain; border-radius: var(--radius-sm); background: #fff; }
.public-gallery-admin small { display: block; color: var(--muted); }
.location-list { border-left: 4px solid var(--tenant-primary); background: #fff; box-shadow: var(--shadow); }
.location-list article { display: grid; grid-template-columns: auto 1fr; gap: .8rem; padding: 1.2rem; border-bottom: 1px solid var(--line); }
.location-list article:last-child { border: 0; }
.location-list article > div { display: grid; }

/* Authentication */
.auth-page { --tenant-primary: var(--teal); min-height: 100vh; display: grid; grid-template-columns: minmax(380px, .92fr) minmax(420px, 1.08fr); }
.auth-context { position: relative; isolation: isolate; overflow: hidden; padding: 2.3rem clamp(2rem, 6vw, 6rem); background: #18201e; color: #fff; display: flex; flex-direction: column; justify-content: space-between; gap: 5rem; }
.auth-context::before { content: ""; position: absolute; z-index: -2; inset: 0; background: url('/assets/restaurant-pos-hero.webp') center / cover no-repeat; transform: scale(1.015); }
.auth-context::after { content: ""; position: absolute; z-index: -1; inset: 0; background: linear-gradient(145deg, rgba(11, 19, 17, .95), rgba(17, 28, 25, .84) 58%, rgba(34, 42, 40, .9)); }
.admin-auth .auth-context::after { background: linear-gradient(145deg, rgba(9, 24, 22, .96), rgba(12, 48, 44, .9) 60%, rgba(27, 30, 29, .92)); }
.auth-brand { display: inline-flex; align-items: center; align-self: flex-start; gap: .85rem; }
.auth-brand img { width: 2.15rem; height: 2.15rem; display: block; border-radius: var(--radius-md); object-fit: contain; }
.auth-brand > span { display: grid; padding-left: .85rem; border-left: 1px solid rgba(255, 255, 255, .3); }
.auth-brand strong { font-size: .88rem; }
.auth-brand small { color: #b9c5c2; font-size: .65rem; }
.auth-context h1 { max-width: 620px; font-size: 2.9rem; }
.auth-message > p:last-child { max-width: 580px; margin-bottom: 0; color: #c6d0ce; }
.auth-portal-link { width: min(430px, 100%); display: grid; grid-template-columns: 2.5rem minmax(0, 1fr) auto; align-items: center; gap: .85rem; padding: .85rem 1rem; border: 1px solid rgba(255, 255, 255, .18); border-radius: var(--radius-md); background: rgba(255, 255, 255, .07); color: #fff; backdrop-filter: blur(12px); transition: transform .2s ease, border-color .2s ease, background .2s ease; }
.auth-portal-link:hover { transform: translateY(-2px); border-color: rgba(124, 194, 183, .55); background: rgba(255, 255, 255, .11); }
.auth-portal-icon { width: 2.5rem; height: 2.5rem; display: grid; place-items: center; border-radius: var(--radius-sm); background: rgba(72, 164, 151, .2); color: var(--rp-teal-200, #aedbd3); }
.auth-portal-link > span:nth-child(2) { min-width: 0; display: grid; gap: .12rem; }
.auth-portal-link strong { font-size: .8rem; }
.auth-portal-link small { overflow: hidden; color: #aebbb8; font-size: .65rem; text-overflow: ellipsis; white-space: nowrap; }
.auth-portal-link > svg { width: 1rem; height: 1rem; color: #aab4b1; }
.auth-form-wrap { display: grid; place-items: center; padding: 2rem; background: #f6f8f7; }
.auth-form { width: min(410px, 100%); display: grid; gap: 1.15rem; }
.auth-form-heading { margin-bottom: .35rem; }
.auth-form h2 { font-size: 1.65rem; }
.auth-form-heading > p:last-child { margin: .35rem 0 0; color: var(--muted); font-size: .84rem; }
.auth-form .button.primary { min-height: 2.9rem; }
.auth-form input:focus { border-color: var(--tenant-primary); box-shadow: 0 0 0 3px color-mix(in srgb, var(--tenant-primary) 14%, transparent); }
.auth-help { margin: -.2rem 0 0; color: var(--muted); text-align: center; font-size: .72rem; }
.auth-help a { text-decoration: underline; text-underline-offset: 2px; }

/* Application shell */
.app-shell { min-height: 100vh; display: grid; grid-template-columns: 230px minmax(0, 1fr); }
.sidebar { position: sticky; top: 0; height: 100vh; display: flex; flex-direction: column; padding: 1.1rem .8rem; background: var(--sidebar); color: #d4dddb; z-index: 20; }
.sidebar .brand-lockup { padding: .2rem .55rem 1.25rem; border-bottom: 1px solid #36413f; }
.primary-nav { display: grid; gap: .18rem; padding-top: 1rem; }
.primary-nav a { min-height: 2.6rem; display: flex; align-items: center; gap: .72rem; padding: .55rem .7rem; border-radius: var(--radius-sm); color: #bfc9c7; font-size: .84rem; font-weight: 700; }
.primary-nav a:hover { background: #2b3734; color: #fff; }
.primary-nav a.active { background: var(--tenant-primary); color: #fff; }
.sidebar-foot { margin-top: auto; display: flex; align-items: center; gap: .7rem; padding: .85rem .6rem; border-top: 1px solid #36413f; }
.sidebar-foot > span:last-child { display: grid; font-size: .75rem; }
.sidebar-foot small { color: #879692; }
.workspace { min-width: 0; }
.topbar { position: sticky; top: 0; z-index: 15; min-height: 4.25rem; display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .7rem 1.4rem; border-bottom: 1px solid var(--line); background: rgba(255, 255, 255, .96); }
.context-selectors, .topbar-actions { display: flex; align-items: center; gap: .65rem; }
.context-selectors select { min-height: 2.25rem; padding-top: .4rem; padding-bottom: .4rem; font-size: .82rem; font-weight: 700; }
.context-name { font-weight: 850; }
.context-divider { color: #a0aaa8; }
.user-summary { display: grid; text-align: right; font-size: .78rem; }
.user-summary small { font-size: .68rem; }
.main-content { padding: 1.4rem; }

.page-header { display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem; margin-bottom: 1.35rem; }
.page-header.compact { align-items: center; }
.page-header > .button { flex: 0 0 auto; }
.page-header p:last-child { margin-bottom: 0; color: var(--muted); font-size: .86rem; }
.section-heading { margin-bottom: 1rem; }
.section-heading > span { color: var(--muted); font-size: .78rem; }
.metric-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .8rem; margin-bottom: 1.2rem; }
.metric-grid article { min-width: 0; display: flex; align-items: center; gap: .8rem; padding: 1rem; border: 1px solid var(--line); border-radius: var(--radius-md); background: #fff; }
.metric-grid article > div { min-width: 0; display: grid; }
.metric-grid small { font-size: .72rem; font-weight: 750; }
.metric-grid strong { overflow-wrap: anywhere; font-size: 1.35rem; }
.metric-grid span:last-child { color: var(--muted); font-size: .68rem; }
.metric-icon { width: 2.7rem; height: 2.7rem; border-radius: var(--radius-sm); display: grid; place-items: center; }
.metric-icon.teal { background: #e5f3f0; color: var(--teal); }
.metric-icon.orange { background: #fff0df; color: #ad641d; }
.metric-icon.blue { background: #e6f0f7; color: var(--blue); }
.metric-icon.red { background: #f9e8e8; color: var(--red); }
.data-section, .settings-section { padding: 1.05rem; border: 1px solid var(--line); border-radius: var(--radius-md); background: #fff; }

.table-wrap { max-width: 100%; overflow-x: auto; }
table { width: 100%; border-collapse: collapse; font-size: .8rem; }
th { padding: .65rem .7rem; border-bottom: 1px solid #bac7c4; color: #65716f; text-align: left; font-size: .69rem; text-transform: uppercase; letter-spacing: 0; white-space: nowrap; }
td { padding: .72rem .7rem; border-bottom: 1px solid #e7eceb; vertical-align: middle; }
tbody tr:last-child td { border-bottom: 0; }
tbody tr:hover { background: #f8faf9; }
.numeric { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.empty-cell { padding: 3rem; color: var(--muted); text-align: center; }
.subtext { display: block; font-size: .68rem; }
.status { display: inline-flex; align-items: center; gap: .4rem; border-radius: var(--radius-sm); padding: .25rem .55rem; background: #edf1f0; color: #55615f; font-size: .68rem; font-style: normal; font-weight: 800; white-space: nowrap; }
.status.open, .status.queued { background: #fff1df; color: #945515; }
.status.ready, .status.active { background: #e5f5ee; color: #156848; }
.status.completed, .status.served { background: #edf1f0; color: #4d5c59; }
.status.low, .status.unavailable, .status.inactive { background: #f9e7e7; color: #9d3333; }
.status.large { padding: .45rem .8rem; font-size: .78rem; }

dialog { border: 0; border-radius: var(--radius-lg); padding: 0; box-shadow: 0 22px 70px rgba(13, 27, 24, .28); }
dialog::backdrop { background: rgba(20, 29, 27, .56); }
.form-dialog { width: min(480px, calc(100% - 2rem)); }
.form-dialog.wide-dialog { width: min(760px, calc(100% - 2rem)); }
.form-dialog form { display: grid; gap: 1rem; padding: 1.2rem; }
.form-dialog .dialog-static { display: grid; gap: 1rem; padding: 1.2rem; }
.form-dialog .dialog-static > header, .form-dialog .dialog-static > footer { display: flex; align-items: center; justify-content: space-between; gap: .7rem; }
.form-dialog .dialog-static > footer { justify-content: flex-end; padding-top: .85rem; border-top: 1px solid var(--line); }
.platform-staff-dialog { max-height: min(720px, calc(100vh - 2rem)); overflow-y: auto; }
.form-dialog .platform-staff-dialog > form { display: grid; gap: .8rem; padding: 1rem 0 0; border-top: 1px solid var(--line); }
.platform-staff-dialog > form > p { margin: 0; color: var(--muted); line-height: 1.55; }
.form-dialog .platform-staff-dialog > form > footer { padding-top: 0; border-top: 0; }
.form-dialog header, .form-dialog footer { display: flex; align-items: center; justify-content: space-between; gap: .7rem; }
.form-dialog footer { justify-content: flex-end; padding-top: .85rem; border-top: 1px solid var(--line); }
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .8rem; }
.span-2 { grid-column: span 2; }
.order-title { display: flex; align-items: center; gap: .8rem; }
.positive { color: #13704e; }
.negative { color: #aa3d3d; }
.person-cell { display: flex; align-items: center; gap: .65rem; }
.person-cell > span { width: 2.15rem; height: 2.15rem; display: grid; place-items: center; border-radius: var(--radius-sm); background: #e5efed; color: var(--teal-dark); font-size: .65rem; font-weight: 900; }
.person-cell > div { display: grid; }
.tag-list { display: flex; flex-wrap: wrap; gap: .3rem; }
.tag-list span { padding: .2rem .4rem; border: 1px solid var(--line); border-radius: var(--radius-sm); background: #f7f9f8; font-size: .66rem; }
.checkbox-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: .5rem; }
.checkbox-grid label { display: flex; align-items: center; gap: .5rem; padding: .55rem; border: 1px solid var(--line); border-radius: var(--radius-sm); }
fieldset { border: 0; padding: 0; margin: 0; }
legend { margin-bottom: .45rem; color: #394543; font-size: .82rem; font-weight: 750; }
.settings-layout { display: grid; grid-template-columns: 180px minmax(0, 1fr); gap: 1rem; align-items: start; }
.settings-nav { position: sticky; top: 5.4rem; display: grid; border-left: 2px solid var(--line); }
.settings-nav a { padding: .55rem .8rem; color: var(--muted); font-size: .78rem; font-weight: 700; }
.settings-nav a:hover, .settings-nav a.active { color: var(--teal-dark); border-left: 2px solid var(--teal); margin-left: -2px; }
.settings-content { display: grid; gap: 1rem; }
.settings-section form { display: grid; gap: 1rem; }
.form-actions { display: flex; justify-content: flex-end; padding-top: .8rem; border-top: 1px solid var(--line); }
.muted-section { background: #f8faf9; }
.domain-placeholder { display: flex; align-items: center; gap: .8rem; padding: .9rem; border: 1px dashed #bcc8c5; }
.domain-placeholder > span { min-width: 0; display: grid; }
.domain-placeholder code { margin-left: auto; overflow-wrap: anywhere; color: var(--teal-dark); font-size: .72rem; }

/* Platform administration */
.platform-body { min-height: 100vh; background: #f2f5f4; color: var(--ink); }
.platform-shell { min-height: 100vh; display: grid; grid-template-columns: 240px minmax(0, 1fr); }
.platform-sidebar { position: sticky; top: 0; height: 100vh; display: flex; flex-direction: column; padding: 1rem; background: var(--sidebar); color: #fff; }
.platform-sidebar .primary-nav { margin-top: 2rem; }
.platform-sidebar .sidebar-foot { margin-top: auto; }
.platform-workspace { min-width: 0; }
.platform-topbar { min-height: 4.25rem; display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .7rem 1.4rem; border-bottom: 1px solid var(--line); background: #fff; }
.platform-topbar > span { display: grid; }
.platform-topbar small { font-size: .68rem; }
.platform-content { padding: 1.4rem; }
.status.suspended, .status.pending { background: #fff0df; color: #945515; }
.status-form { display: flex; align-items: center; gap: .55rem; }
.status-form select { min-width: 130px; }
.platform-detail-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; align-items: start; }
.platform-detail-grid .span-full { grid-column: 1 / -1; }
.platform-record-list { display: grid; }
.platform-record-list > div { min-height: 4.3rem; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: .7rem; padding: .65rem 0; border-bottom: 1px solid var(--line); }
.platform-record-list > div:last-child { border-bottom: 0; }
.platform-record-list > div > span:nth-child(2) { min-width: 0; display: grid; }
.platform-record-list small { overflow-wrap: anywhere; font-size: .68rem; }
.record-icon { width: 2.3rem; height: 2.3rem; display: grid; place-items: center; border-radius: var(--radius-sm); background: #e6efed; color: var(--teal-dark); }
.compact-empty { display: flex !important; grid-template-columns: none !important; justify-content: center; color: var(--muted); }

@media (max-width: 1100px) {
    .metric-grid { grid-template-columns: repeat(2, 1fr); }
    .platform-shell { grid-template-columns: 205px minmax(0, 1fr); }
}

@media (max-width: 850px) {
    .app-shell { grid-template-columns: 1fr; }
    .sidebar { position: fixed; left: -245px; width: 230px; transition: left .2s ease; box-shadow: var(--shadow); }
    .sidebar.open { left: 0; }
    .topbar { padding: .6rem .8rem; }
    .user-summary { display: none; }
    .main-content { padding: 1rem; }
    .restaurant-intro { min-height: 0; grid-template-columns: 1fr; gap: 2rem; }
    .restaurant-intro h1 { font-size: 2.7rem; }
    .auth-page { grid-template-columns: 1fr; }
    .auth-context { min-height: 370px; gap: 3rem; }
    .settings-layout { grid-template-columns: 1fr; }
    .settings-nav { position: static; display: flex; overflow-x: auto; border-left: 0; border-bottom: 1px solid var(--line); }
    .settings-nav a:hover, .settings-nav a.active { margin: 0; border-left: 0; border-bottom: 2px solid var(--teal); }
    .platform-shell { grid-template-columns: 1fr; }
    .platform-sidebar { position: static; width: auto; height: auto; display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 1rem; }
    .platform-sidebar .primary-nav { margin: 0; display: flex; justify-content: flex-end; }
    .platform-sidebar .sidebar-foot { display: none; }
    .platform-detail-grid { grid-template-columns: minmax(0, 1fr); }
    .platform-detail-grid > * { min-width: 0; }
    .platform-detail-grid .span-full { grid-column: auto; }
}

@media (max-width: 600px) {
    h1 { font-size: 1.45rem; }
    .page-header { flex-wrap: wrap; align-items: flex-start; }
    .page-header > .button { min-width: 2.55rem; }
    .metric-grid { grid-template-columns: 1fr; }
    .context-divider, .context-name { display: none; }
    .context-selectors select { max-width: 145px; }
    .restaurant-public > header { padding: 1rem; }
    .restaurant-intro { padding: 3rem 1rem; }
    .restaurant-intro h1 { font-size: 2.2rem; }
    .auth-context { padding: 1.5rem; }
    .auth-context h1 { font-size: 2rem; }
    .auth-form-wrap { padding: 2rem 1rem; }
    .form-grid { grid-template-columns: 1fr; }
    .span-2 { grid-column: auto; }
    .checkbox-grid { grid-template-columns: 1fr; }
    .domain-placeholder { align-items: flex-start; flex-wrap: wrap; }
    .domain-placeholder code { width: 100%; margin: 0; }
    .platform-sidebar { grid-template-columns: 1fr; gap: .6rem; }
    .platform-sidebar .primary-nav { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .3rem; }
    .platform-sidebar .primary-nav a { justify-content: center; gap: .4rem; padding: .5rem .4rem; text-align: center; font-size: .78rem; line-height: 1.2; }
    .platform-topbar { padding: .65rem .8rem; }
    .platform-topbar > span small { display: none; }
    .platform-content { padding: 1rem; }
    .status-form { width: 100%; }
    .status-form select { min-width: 0; }
}

/* Legacy restaurant management shell (AdminLTE-inspired, implemented locally). */
.pos-admin-shell { --legacy-purple: #0f6b62; --legacy-purple-soft: rgba(15, 107, 98, .1); background: #f4f7f6; color: #1d2726; }
.pos-admin-shell .app-shell { grid-template-columns: 270px minmax(0, 1fr); }
.pos-admin-shell .sidebar { width: 270px; padding: .65rem; border-inline-end: 1px solid #eaeaea; background: #fff; color: #5b6462; box-shadow: 0 0 18px rgba(34, 41, 47, .04); }
.pos-admin-shell .sidebar .brand-lockup { min-height: 64px; padding: .55rem .75rem 1rem; border-bottom: 1px solid #e8eeec; color: #283230; }
.pos-admin-shell .sidebar .brand-lockup small { color: #8a9794; }
.pos-admin-shell .primary-nav { min-height: 0; overflow-y: auto; scrollbar-width: thin; gap: .15rem; padding: .65rem .2rem 1rem; }
.pos-admin-shell .nav-section-label { margin: .85rem .7rem .25rem; color: #a09ba9; font-size: .63rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.pos-admin-shell .primary-nav a { min-height: 2.45rem; padding: .5rem .75rem; border-radius: var(--radius-sm); color: #5b6462; font-size: .81rem; font-weight: 550; }
.pos-admin-shell .primary-nav a svg { color: #777282; }
.pos-admin-shell .primary-nav a:hover { background: #f2f5f4; color: #1d2726; }
.pos-admin-shell .primary-nav a.active { background: var(--teal); color: #fff; }
.pos-admin-shell .primary-nav a.active svg { color: #fff; }
.pos-admin-shell .sidebar-foot { margin-top: .35rem; padding: .75rem; border-top: 1px solid #e8eeec; color: #5b6462; }
.pos-admin-shell .sidebar-foot small { color: #8a9794; }
.pos-admin-shell .topbar { min-height: 4.4rem; padding: .65rem 1.25rem; border-color: #eaeaea; background: rgba(255, 255, 255, .98); box-shadow: 0 2px 12px rgba(34, 41, 47, .035); }
.pos-admin-shell .main-content { padding: 1.5rem; }
.pos-admin-shell { --tenant-primary: var(--legacy-purple); --tenant-accent: #f0a030; }
/* One primary button style everywhere: flat RestPOS teal, whatever colour a restaurant chose for its public page. */
.pos-admin-shell .button.primary, .pos-login-card .button.primary { background: var(--teal); }
.pos-admin-shell .button.primary:hover, .pos-login-card .button.primary:hover { background: var(--teal-dark); }
.pos-login-card input:focus, .pos-login-card select:focus { border-color: var(--teal); box-shadow: 0 0 0 3px var(--focus-ring); }
.pos-admin-shell .data-section,
.pos-admin-shell .settings-section,
.pos-admin-shell .metric-grid article { border-color: #e5e4ea; box-shadow: 0 2px 12px rgba(34, 41, 47, .035); }
.pos-admin-shell .user-summary { min-width: 120px; padding: .3rem .45rem; border-radius: var(--radius-sm); }
.pos-admin-shell .user-summary:hover { background: #f4f7f6; }
.pos-quick-action { display: inline-flex; align-items: center; gap: .4rem; min-height: 2.3rem; padding: .48rem .7rem; border-radius: var(--radius-sm); background: var(--legacy-purple-soft); color: var(--legacy-purple); font-size: .75rem; font-weight: 750; }
.pos-quick-action:hover { box-shadow: 0 5px 15px rgba(15, 107, 98, .18); }

.locale-switcher { position: relative; z-index: 30; }
.locale-switcher summary { min-height: 2.3rem; display: flex; align-items: center; gap: .4rem; padding: .45rem .65rem; border: 1px solid #dce3e1; border-radius: var(--radius-sm); background: #fff; color: #5b6462; cursor: pointer; font-size: .75rem; font-weight: 650; list-style: none; }
.locale-switcher summary::-webkit-details-marker { display: none; }
.locale-switcher summary svg:last-child { width: .8rem; }
.locale-menu { position: absolute; inset-block-start: calc(100% + .35rem); inset-inline-end: 0; width: 185px; padding: .35rem; border: 1px solid #dce3e1; border-radius: var(--radius-sm); background: #fff; box-shadow: 0 8px 25px rgba(34, 41, 47, .12); }
.locale-menu button { width: 100%; padding: .55rem .65rem; border: 0; border-radius: var(--radius-xs); background: transparent; color: #5b6462; text-align: start; font-size: .78rem; }
.locale-menu button:hover, .locale-menu button.active { background: var(--legacy-purple-soft, rgba(15, 107, 98, .1)); color: var(--legacy-purple, #0f6b62); }

/* Legacy-style staff and waiter entry surfaces. */
.pos-login-page { --legacy-purple: #0f6b62; --legacy-purple-soft: rgba(15, 107, 98, .1); position: relative; min-height: 100vh; display: grid; place-items: center; padding: 5.5rem 1.25rem 2rem; overflow: hidden; background: linear-gradient(rgba(10, 30, 28, .76), rgba(10, 30, 28, .84)), url('/assets/restaurant-pos-hero.webp') center / cover no-repeat; }
.pos-login-toolbar { position: absolute; inset: 1.2rem 1.35rem auto; display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.pos-login-logo { display: inline-flex; align-items: center; gap: .65rem; color: #fff; }
.pos-login-logo strong { font-size: .9rem; }
.pos-login-logo .restpos-brand-icon { width: 2.15rem; height: 2.15rem; }
.pos-login-toolbar .locale-switcher summary { border-color: rgba(255, 255, 255, .22); background: rgba(255, 255, 255, .12); color: #fff; backdrop-filter: blur(8px); }
.pos-login-card { width: min(420px, 100%); padding: 1.65rem; border: 1px solid rgba(255, 255, 255, .65); border-radius: var(--radius-md); background: rgba(255, 255, 255, .97); box-shadow: 0 18px 60px rgba(10, 10, 20, .35); }
.pos-login-heading { display: grid; justify-items: center; margin-bottom: 1.25rem; text-align: center; }
.pos-login-heading h1 { margin: .7rem 0 .25rem; color: #283230; font-size: 1.45rem; }
.pos-login-heading p { margin: 0; color: var(--muted); font-size: .8rem; }
.pos-login-icon { width: 3.15rem; height: 3.15rem; display: grid; place-items: center; border-radius: 50%; background: var(--legacy-purple-soft); color: var(--legacy-purple); }
.pos-login-icon svg { width: 1.45rem; height: 1.45rem; }
.pos-login-card .auth-form { width: 100%; gap: .9rem; }
.pos-login-links { display: grid; gap: .15rem; margin-top: 1rem; padding-top: .85rem; border-top: 1px solid var(--line); }
.pos-login-links a { display: flex; align-items: center; gap: .45rem; padding: .42rem; color: var(--muted); font-size: .75rem; font-weight: 650; }
.pos-login-links a:hover { color: var(--teal); }
.pos-login-legal { display: flex; flex-wrap: wrap; justify-content: center; gap: .3rem .9rem; margin: .85rem 0 0; font-size: .72rem; }
.pos-login-legal a { color: var(--muted); text-decoration: underline; text-underline-offset: 2px; }
.pos-login-legal a:hover { color: var(--teal); }
.pos-login-card .auth-help { margin-top: .85rem; }
.pos-outlet-list { display: grid; gap: .6rem; }
.pos-launch-progress { position: relative; display: block; height: 4px; overflow: hidden; border-radius: 2px; background: var(--teal-soft); }
.pos-launch-progress::after { content: ""; position: absolute; inset: 0 auto 0 0; width: 40%; border-radius: 2px; background: var(--teal); animation: pos-launch-progress 1.2s ease-in-out infinite; }
@keyframes pos-launch-progress { from { transform: translateX(-100%); } to { transform: translateX(250%); } }
@media (prefers-reduced-motion: reduce) { .pos-launch-progress::after { width: 100%; animation: none; opacity: .5; } }
.pin-field { direction: ltr; letter-spacing: .35em; text-align: center; font-variant-numeric: tabular-nums; }

.profile-security-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; align-items: start; }
.profile-security-grid .data-section:first-child { grid-column: 1 / -1; }
.security-form { display: grid; gap: .85rem; }
.security-form .button { justify-self: start; }
.pin-removal { margin-top: 1rem; padding-top: 1rem; border-top: 1px solid var(--line); }

/* Bidirectional shell support. */
.rtl { text-align: right; }
.rtl .pos-admin-shell { text-align: right; }
.pos-admin-shell.rtl .app-shell { grid-template-columns: minmax(0, 1fr) 270px; }
.pos-admin-shell .app-shell.single-column { grid-template-columns: minmax(0, 1fr); }
.pos-admin-shell.rtl .app-shell.single-column .workspace { grid-column: auto; }
.topbar-links { display: flex; flex-wrap: wrap; gap: .25rem 1rem; }
.topbar-links a { color: #5b6462; font-weight: 600; text-decoration: none; padding: .35rem 0; border-bottom: 2px solid transparent; }
.topbar-links a.active, .topbar-links a:hover { color: var(--legacy-purple); border-bottom-color: currentColor; }
.pos-admin-shell.rtl .sidebar { grid-column: 2; grid-row: 1; border-inline-start: 1px solid #eaeaea; border-inline-end: 0; }
.pos-admin-shell.rtl .workspace { grid-column: 1; grid-row: 1; }
.rtl th { text-align: right; }
.rtl .numeric { text-align: left; }
.rtl .user-summary { text-align: left; }
.rtl .pos-login-links svg { transform: scaleX(-1); }

@media (max-width: 900px) {
    /* Phone topbar: brand, outlet and actions on one row; the page links scroll on a second row. */
    .pos-admin-shell .topbar { flex-wrap: wrap; gap: .5rem .65rem; padding: .6rem .8rem; }
    .pos-admin-shell .context-selectors { flex: 1 1 0; min-width: 0; }
    .pos-admin-shell .context-selectors form { flex: 1 1 auto; min-width: 0; }
    .pos-admin-shell .context-selectors select { width: 100%; max-width: 100%; }
    .pos-admin-shell .topbar-actions { flex: 0 0 auto; gap: .45rem; }
    .pos-admin-shell .topbar-links { order: 3; flex: 1 1 100%; flex-wrap: nowrap; gap: 1.1rem; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
    .pos-admin-shell .topbar-links::-webkit-scrollbar { display: none; }
    .pos-admin-shell .topbar-links a { flex: 0 0 auto; white-space: nowrap; font-size: .84rem; }
    .pos-admin-shell .app-shell, .pos-admin-shell.rtl .app-shell { grid-template-columns: 1fr; }
    .pos-admin-shell .sidebar { position: fixed; inset-inline-start: -285px; inset-inline-end: auto; width: 270px; transition: inset-inline-start .2s ease; }
    .pos-admin-shell .sidebar.open { inset-inline-start: 0; }
    .pos-admin-shell.rtl .sidebar { grid-column: auto; grid-row: auto; }
    .pos-admin-shell.rtl .workspace { grid-column: auto; grid-row: auto; }
    .profile-security-grid { grid-template-columns: 1fr; }
    .profile-security-grid .data-section:first-child { grid-column: auto; }
}

@media (max-width: 600px) {
    .pos-quick-action span, .locale-switcher summary span { display: none; }
    .locale-switcher summary { width: 2.55rem; justify-content: center; padding: 0; }
    .pos-login-page { padding-inline: .8rem; }
    .pos-login-toolbar { inset-inline: .8rem; }
    .pos-login-card { padding: 1.25rem; }
}
/* The HTML hidden attribute must always win over component display rules. */
[hidden] { display: none !important; }
.inline-actions { display: flex; align-items: center; gap: .55rem; }
.checkbox-line { display: flex !important; grid-template-columns: none !important; align-items: center; gap: .5rem; }
.checkbox-line input { width: auto; }
.settings-list { display: grid; gap: .5rem; }
.settings-list > article { display: flex; align-items: center; justify-content: space-between; gap: .7rem; padding: .65rem .75rem; border: 1px solid var(--line); border-radius: var(--radius-sm); background: #fff; }
.settings-list > article > span:first-child { display: grid; gap: .1rem; min-width: 0; }
.settings-list small { color: var(--muted); }
.release-download { gap: .7rem; margin-bottom: 1rem; }
.release-download > article { min-height: 4.9rem; padding: 1rem 1.05rem; border-color: #bfd8d3; background: linear-gradient(105deg, #f5fbf9, #fff); }
.release-download .button { flex: 0 0 auto; }
.section-description { margin: 0 0 1rem; color: var(--muted); font-size: .86rem; line-height: 1.55; }
.release-download .checksum { display: block; margin-top: .2rem; overflow-wrap: anywhere; }
.release-download .checksum code { font-family: var(--rp-font-mono, ui-monospace, Consolas, monospace); font-size: .68rem; color: var(--ink); }
.desktop-layout { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(280px, 1fr); gap: 1rem; align-items: start; }
.desktop-steps ol { display: grid; gap: .7rem; margin: 0 0 1rem; padding-inline-start: 1.2rem; color: var(--ink); font-size: .88rem; line-height: 1.5; }
.desktop-steps .section-description { margin-bottom: 0; }
.desktop-aside { display: grid; gap: 1rem; min-width: 0; }
.plan-summary .settings-list { margin: .75rem 0; }
.plan-summary .notes-stack:empty { display: none; }
.waiter-phones { margin-top: 1rem; }
.waiter-phones .settings-list { margin: .75rem 0 1rem; }
.restaurant-id { padding: .3rem .55rem; border: 1px solid var(--line); border-radius: var(--radius-xs); background: var(--soft); color: var(--ink); font-family: var(--rp-font-mono, ui-monospace, Consolas, monospace); font-size: .9rem; user-select: all; }
@media (max-width: 900px) { .desktop-layout { grid-template-columns: 1fr; } }
.release-history { margin-top: 1.25rem; padding-top: 1rem; border-top: 1px solid var(--line); }
.release-history h3 { margin-bottom: .15rem; font-size: .95rem; }
.release-history .section-heading p { color: var(--muted); font-size: .78rem; }
.platform-metrics { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.metric-grid .text-link { font-size: .72rem; }
.filter-tabs { display: flex; flex-wrap: wrap; gap: .4rem; margin-bottom: 1rem; }
.filter-tabs a { display: inline-flex; align-items: center; gap: .4rem; min-height: 2.3rem; padding: .4rem .75rem; border: 1px solid var(--line); border-radius: var(--radius-sm); background: #fff; color: var(--ink); font-size: .8rem; font-weight: 650; }
.filter-tabs a span { min-width: 1.4rem; padding: .05rem .35rem; border-radius: var(--radius-xs); background: var(--soft); color: var(--muted); text-align: center; font-size: .7rem; }
.filter-tabs a:hover { border-color: var(--rp-line-strong, #c5cfcc); }
.filter-tabs a.active { border-color: var(--teal); background: var(--teal-soft); color: var(--teal-dark); }
.contact-links { display: grid; gap: .15rem; margin-top: .2rem; }
.contact-links .text-link { font-size: .75rem; font-weight: 650; overflow-wrap: anywhere; }
.contact-links svg { width: .85rem; height: .85rem; }
.demo-request-table { min-width: 760px; }
.contact-links .text-link[href^="tel:"] { white-space: nowrap; }
.demo-request-message { max-width: 320px; color: var(--ink); line-height: 1.45; }
.demo-request-message summary { cursor: pointer; }
.demo-request-message details p { margin: .4rem 0 0; white-space: pre-line; }
.quote-heading { margin: 1.6rem 0 .8rem; }
.form-dialog form > p { margin: 0; color: var(--muted); line-height: 1.55; }
.pager { display: flex; justify-content: space-between; gap: .6rem; padding-top: .8rem; border-top: 1px solid var(--line); }
.dialog-secondary-form { margin: 0 1rem 1rem; padding: 1rem; border-top: 1px solid var(--line); background: #f7f9f8; }
.dialog-secondary-form h3 { margin-top: 0; }
@media print { [data-print-page] { display: none !important; } }
@media (max-width: 1300px) { .platform-metrics { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 1100px) { .platform-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 600px) {
    .platform-metrics { grid-template-columns: 1fr; }
    .release-download > article { align-items: stretch; flex-direction: column; }
    .release-download .button { width: 100%; }
}
.permission-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .5rem; max-height: 50vh; overflow-y: auto; padding: .25rem; }
.permission-grid .checkbox-line { align-items: flex-start; padding: .6rem; border: 1px solid var(--line); border-radius: var(--radius-sm); background: #f7f9f8; }
.permission-grid .checkbox-line span { display: grid; gap: .12rem; }
.permission-grid small { color: var(--muted); font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }

@media (max-width: 700px) {
    .permission-grid { grid-template-columns: 1fr; }
    .restaurant-service-grid, .restaurant-location-grid, .restaurant-gallery { grid-template-columns: 1fr; }
    .restaurant-contact { align-items: flex-start; flex-direction: column; }
    .restaurant-gallery img { height: 200px; }
    .public-gallery-admin article { grid-template-columns: 56px 1fr; }
    .public-gallery-admin img { width: 56px; height: 48px; }
    .public-gallery-admin button { grid-column: 1 / -1; }
}

.security-page { min-height: 100vh; display: grid; place-items: center; padding: 2rem 1rem; background: radial-gradient(circle at top, rgba(15, 107, 98, .15), transparent 42%), #f4f6f5; }
.security-card { width: min(460px, 100%); display: grid; gap: 1.15rem; padding: 1.5rem; border: 1px solid var(--line); border-radius: var(--radius-lg); background: #fff; box-shadow: 0 18px 55px rgba(24, 32, 30, .14); }
.security-card-wide { width: min(820px, 100%); }
.security-heading { display: flex; align-items: center; gap: .9rem; }
.security-heading h1, .security-heading p { margin: 0; }
.security-heading p { margin-top: .25rem; color: var(--muted); }
.security-steps { display: grid; gap: .55rem; margin: 0; padding-left: 1.35rem; color: var(--muted); }
.security-secret { display: grid; gap: .35rem; padding: .8rem; overflow-wrap: anywhere; border: 1px dashed #7cc2b7; border-radius: var(--radius-sm); background: #eef7f5; }
.security-secret small { color: var(--muted); font-weight: 700; }
.security-secret code { color: #0b4540; font-size: 1rem; font-weight: 800; letter-spacing: .08em; }
.security-card details { padding: .75rem; border: 1px solid var(--line); border-radius: var(--radius-sm); }
.security-card details summary { cursor: pointer; font-weight: 750; }
.security-card details textarea { width: 100%; margin-top: .65rem; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: .72rem; }
.recovery-code-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .55rem; }
.recovery-code-grid code { padding: .65rem; border: 1px dashed var(--line); border-radius: var(--radius-sm); background: #f7f9f8; text-align: center; font-size: .9rem; font-weight: 800; }
.security-panel { display: grid; gap: 1rem; padding-top: 1.15rem; border-top: 1px solid var(--line); }
.security-panel:first-of-type { padding-top: 0; border-top: 0; }
.security-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.security-actions form { align-content: start; padding: .85rem; border: 1px solid var(--line); border-radius: var(--radius-sm); background: #f7f9f8; }
.security-actions h3, .security-actions p { margin: 0; }
.security-actions p { color: var(--muted); font-size: .8rem; }
.session-list { display: grid; gap: .55rem; }
.session-list article { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: .75rem; padding: .75rem; border: 1px solid var(--line); border-radius: var(--radius-sm); }
.session-list article > span:nth-child(2) { display: grid; gap: .12rem; min-width: 0; }
.session-list small { overflow: hidden; color: var(--muted); text-overflow: ellipsis; }
.platform-record-list .domain-record { align-items: start; }
.domain-record > span:nth-child(2), .domain-record-actions, .domain-challenge { display: grid; gap: .3rem; min-width: 0; }
.domain-record-actions { justify-items: end; }
.domain-challenge { margin-top: .35rem; padding: .55rem; border: 1px dashed var(--line); border-radius: var(--radius-sm); background: #f7f9f8; }
.domain-challenge code { overflow-wrap: anywhere; color: #0b4540; font-size: .7rem; }
.validation-error { color: var(--danger) !important; }

@media (max-width: 650px) {
    .security-panel .section-heading { flex-wrap: wrap; }
    .security-panel .section-heading > form { flex: 1 1 100%; }
    .security-panel .section-heading > form .button { width: 100%; }
    .security-actions, .recovery-code-grid { grid-template-columns: 1fr; }
    .session-list article { grid-template-columns: auto 1fr; }
    .session-list article form { grid-column: 1 / -1; }
}
