:root {
    /* Brand — docs/brand-palette.md (13 Sep 2026). Orange = identity; pink = CTA. */
    --ph-brand-orange: #FF8A3D;
    --ph-brand-orange-dark: #E56F24;
    --ph-brand-secondary: #2EC4B6;
    --ph-brand-secondary-dark: #1A9E93;
    --ph-brand-secondary-ink: color-mix(in srgb, var(--ph-brand-secondary) 38%, #2E2A26);
    --ph-brand-cta: #FF5D8F;
    --ph-brand-cta-dark: #E64578;
    --ph-brand-on-cta: #ffffff;
    --ph-brand-ink: #2E2A26;
    --ph-brand-primary: var(--ph-brand-orange);
    --ph-brand-primary-dark: var(--ph-brand-orange-dark);
    --ph-brand-primary-deep: var(--ph-brand-ink);
    --ph-brand-primary-soft: color-mix(in srgb, var(--ph-brand-primary) 16%, var(--ph-white));
    --ph-brand-on-primary: var(--ph-brand-ink);
    --ph-brand-gold: var(--ph-brand-orange);
    --ph-brand-gold-dark: var(--ph-brand-orange-dark);
    --ph-brand-gold-deep: var(--ph-brand-orange-dark);
    --ph-brand-yellow: var(--ph-brand-orange);
    --ph-brand-yellow-light: color-mix(in srgb, var(--ph-brand-orange) 35%, #ffffff);
    --ph-brand-magenta: var(--ph-brand-cta);
    --ph-brand-magenta-dark: var(--ph-brand-cta-dark);
    --ph-brand-magenta-deep: #C73668;
    --ph-brand-on-magenta: var(--ph-brand-on-cta);
    --ph-brand-coral: var(--ph-brand-cta);
    --ph-brand-coral-dark: var(--ph-brand-cta-dark);
    --ph-brand-lime: #46AA00;
    --ph-brand-lime-dark: #2C9600;
    --ph-brand-teal: var(--ph-brand-secondary);
    --ph-brand-teal-dark: var(--ph-brand-secondary-dark);
    --ph-brand-cyan: var(--ph-brand-secondary);
    --ph-brand-cyan-dark: var(--ph-brand-secondary-dark);
    --ph-brand-blue: #0050B3;
    --ph-brand-brown: var(--ph-brand-ink);
    --ph-brand-dark: var(--ph-brand-ink);
    --ph-chrome-dark: #2A3340;
    --ph-chrome-ink: #12161C;
    --ph-neutral-950: var(--ph-brand-ink);
    --ph-neutral-700: #5C564F;
    --ph-neutral-500: #8A8278;
    --ph-neutral-400: #A89F96;
    --ph-neutral-200: #E8E0D6;
    --ph-neutral-100: #F4EEE6;
    --ph-neutral-50: #FFFBF3;
    --ph-white: #ffffff;
    --ph-surface: #ffffff;
    --ph-surface-warm: #FFFBF3;
    --ph-surface-beige: #F7EFE6;
    --ph-surface-highlight: color-mix(in srgb, var(--ph-brand-cta) 12%, var(--ph-white));
    --ph-surface-sky: color-mix(in srgb, #7EC8E3 12%, var(--ph-surface-warm));
    --ph-surface-mint: color-mix(in srgb, var(--ph-brand-secondary) 11%, var(--ph-surface-warm));
    --ph-surface-primary: color-mix(in srgb, var(--ph-brand-primary) 22%, var(--ph-white));
    --ph-surface-cta: color-mix(in srgb, var(--ph-brand-cta) 14%, var(--ph-white));
    --ph-surface-lime: color-mix(in srgb, var(--ph-brand-lime) 22%, var(--ph-white));
    --ph-surface-teal: color-mix(in srgb, var(--ph-brand-secondary) 18%, var(--ph-white));
    --ph-success: #2C9600;
    --ph-success-bg: #EEF8E6;
    --ph-warning: #B8860B;
    --ph-warning-bg: #FFF6DC;
    --ph-error: #B42318;
    --ph-error-dark: #961914;
    --ph-error-bg: #FDECEC;
    --ph-info: var(--ph-brand-secondary-ink);
    --ph-info-bg: var(--ph-surface-mint);
    --ph-border: #E8E0D6;
    --ph-border-light: #F4EEE6;
    --ph-border-strong: #D4C9BC;
    --ph-focus-ring: color-mix(in srgb, var(--ph-brand-orange) 42%, transparent);
    --ph-radius-sm: 6px;
    --ph-radius-md: 10px;
    --ph-radius-lg: 14px;
    --ph-radius-xl: 20px;
    --ph-shadow-sm: 0 1px 3px color-mix(in srgb, var(--ph-brand-ink) 6%, transparent);
    --ph-shadow-md: 0 4px 12px color-mix(in srgb, var(--ph-brand-ink) 8%, transparent);
    --ph-shadow-lg: 0 12px 30px color-mix(in srgb, var(--ph-brand-ink) 10%, transparent);
    --ph-space-2: 8px;
    --ph-space-3: 12px;
    --ph-space-4: 16px;
}

[x-cloak] { display: none !important; }

html {
    color: var(--ph-neutral-950);
    accent-color: var(--ph-brand-primary);
}

.ph-main a.card:hover {
    border-color: var(--ph-brand-primary);
}

.nav-link {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    border-radius: var(--ph-radius-md);
    padding: 0.55rem 0.7rem;
    min-height: 44px;
    color: inherit;
    text-decoration: none;
}

.nav-link:hover,
.nav-link-active {
    background: rgba(250, 210, 90, 0.16);
    color: var(--ph-brand-gold);
}

.ph-sidebar-kicker {
    margin: 0 0 0.25rem;
    padding: 0 0.5rem;
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    color: var(--ph-brand-gold-deep);
}

.ph-main h1 {
    font-size: 1.75rem;
    font-weight: 700;
    margin: 0 0 0.35rem;
    color: var(--ph-neutral-950);
}

.ph-main h2 {
    font-size: 1.15rem;
    font-weight: 600;
    margin: 0 0 0.75rem;
}

.ph-lead {
    color: var(--ph-neutral-700);
    margin: 0 0 1.25rem;
}

.ph-toolbar {
    display: flex;
    flex-wrap: wrap;
    gap: 0.6rem;
    align-items: center;
    margin-bottom: 1rem;
}

.ph-pager {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    margin: 1rem 0 0;
    padding-top: 0.9rem;
    border-top: 1px solid var(--ph-border);
}

.ph-pager-meta {
    margin: 0;
    color: var(--ph-neutral-700);
    font-size: 0.875rem;
}

.ph-pager-nav {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem;
}

.ph-pager-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 2.75rem;
    min-height: 44px;
    padding: 0.35rem 0.7rem;
    border: 1px solid var(--ph-border-strong);
    border-radius: var(--ph-radius-md);
    background: var(--ph-white);
    color: var(--ph-neutral-950);
    text-decoration: none;
    font-weight: 600;
    font-size: 0.875rem;
}

a.ph-pager-link:hover {
    border-color: var(--ph-brand-primary);
    background: var(--ph-surface-primary);
}

a.ph-pager-link:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px var(--ph-focus-ring);
}

.ph-pager-current {
    background: var(--ph-brand-primary);
    border-color: var(--ph-brand-primary);
    color: var(--ph-brand-on-primary);
}

.ph-pager-disabled {
    color: var(--ph-neutral-400);
    background: var(--ph-neutral-50);
    border-color: var(--ph-border);
    cursor: not-allowed;
}

.ph-pager-ellipsis {
    min-width: 1.5rem;
    text-align: center;
    color: var(--ph-neutral-400);
}

.ph-grid { display: grid; gap: 0.9rem; }

.ph-grid-2 { display: grid; gap: 1rem; }

@media (min-width: 768px) {
    .ph-grid-2 { grid-template-columns: 1fr 1fr; }
}

.ph-field {
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
    margin: 0 0 0.85rem;
}

.ph-label {
    display: block;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--ph-neutral-950);
    margin: 0;
}

.ph-hint {
    font-size: 0.8rem;
    color: var(--ph-neutral-500);
    margin: 0.15rem 0 0;
}

.ph-password-editor {
    display: grid;
    gap: 0;
}

.ph-pw-meter {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 0.35rem;
    margin-top: 0.45rem;
}

.ph-pw-meter span {
    height: 0.4rem;
    border-radius: 999px;
    background: var(--ph-neutral-100);
}

.ph-pw-meter span.is-1 { background: var(--ph-error); }
.ph-pw-meter span.is-2 { background: #d97706; }
.ph-pw-meter span.is-3 { background: var(--ph-warning); }
.ph-pw-meter span.is-4 { background: var(--ph-success); }

.ph-pw-strength {
    margin: 0.35rem 0 0;
    font-size: 0.8rem;
    font-weight: 600;
}

.ph-pw-strength[data-score="1"] { color: var(--ph-error); }
.ph-pw-strength[data-score="2"] { color: #d97706; }
.ph-pw-strength[data-score="3"] { color: var(--ph-warning); }
.ph-pw-strength[data-score="4"] { color: var(--ph-success); }

.ph-pw-rules {
    margin: 0.45rem 0 0;
    padding: 0;
    list-style: none;
    display: grid;
    gap: 0.2rem;
}

.ph-pw-rules li {
    font-size: 0.8rem;
    color: var(--ph-neutral-500);
}

.ph-pw-rules li::before {
    content: "○ ";
}

.ph-pw-rules li.is-ok {
    color: var(--ph-success);
}

.ph-pw-rules li.is-ok::before {
    content: "● ";
}

.ph-pw-rules li.is-bad {
    color: var(--ph-error);
}

.ph-pw-mismatch {
    color: var(--ph-error);
}

.ph-pw-wrap {
    position: relative;
    /* Password value is Latin/LTR. Isolate the chrome so the eye sits on the
       same inline-end as the input padding — page RTL must not flip only one of them. */
    direction: ltr;
    unicode-bidi: isolate;
}

.ph-pw-wrap input::-ms-reveal,
.ph-pw-wrap input::-ms-clear {
    display: none;
}

.ph-main .ph-pw-wrap input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]) {
    padding-inline-end: 2.75rem;
}

.ph-pw-toggle {
    position: absolute;
    inset-inline-end: 0.25rem;
    inset-inline-start: auto;
    top: 50%;
    z-index: 1;
    transform: translateY(-50%);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.25rem;
    height: 2.25rem;
    padding: 0;
    border: 0;
    border-radius: var(--ph-radius-sm);
    background: transparent;
    color: var(--ph-neutral-500);
    cursor: pointer;
}

.ph-pw-toggle:hover,
.ph-pw-toggle:focus-visible {
    color: var(--ph-neutral-950);
    background: var(--ph-neutral-50);
}

.ph-table td time {
    display: block;
    font-weight: 600;
}

.ph-table td a + .ph-badge {
    margin-inline-start: 0.35rem;
    vertical-align: middle;
}

.ph-invoice-list {
    font-size: 0.8125rem;
}

.ph-invoice-list th,
.ph-invoice-list td {
    padding: 0.55rem 0.75rem;
    vertical-align: top;
}

.ph-invoice-cell {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.12rem;
}

.ph-invoice-primary {
    font-size: 0.8125rem;
    font-weight: 600;
    line-height: 1.45;
    color: var(--ph-neutral-950);
}

.ph-invoice-meta {
    font-size: 0.75rem;
    font-weight: 400;
    line-height: 1.4;
    color: var(--ph-neutral-500);
}

.ph-invoice-list .ph-badge {
    font-size: 0.7rem;
    font-weight: 500;
    padding: 0.08rem 0.4rem;
}

.ph-invoice-list .ph-btn,
.ph-invoice-list a.ph-btn-ghost {
    min-height: 2.4rem;
    padding: 0.3rem 0.7rem;
    font-size: 0.8rem;
    white-space: nowrap;
}

.ph-invoice-filters select,
.ph-invoice-filters input[type="date"] {
    min-width: 8.5rem;
}

.ph-label-row {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    margin: 0 0 0.35rem;
}

.ph-label-row .ph-label,
.ph-label-row.ph-desk-heading,
.ph-label-row .ph-desk-heading {
    margin: 0;
}

h2.ph-label-row {
    gap: 0.45rem;
}

h2.ph-label-row .ph-help,
.ph-label-row > .ph-help {
    margin-inline-start: auto;
}

.ph-help {
    display: inline-flex;
    flex-shrink: 0;
}

.ph-help-trigger {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.85rem;
    height: 1.85rem;
    padding: 0;
    border-radius: 999px;
    border: 1px solid var(--ph-border-strong);
    background: var(--ph-surface-beige);
    color: var(--ph-brand-dark);
    cursor: pointer;
}

.ph-help-trigger .ph-icon {
    width: 1rem;
    height: 1rem;
}

.ph-help-trigger:hover,
.ph-help-trigger:focus-visible {
    border-color: var(--ph-brand-primary);
    background: var(--ph-surface-primary);
    box-shadow: 0 0 0 3px var(--ph-focus-ring);
}

.ph-help-overlay {
    position: fixed;
    inset: 0;
    z-index: 60;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1.25rem;
    background: rgb(44 24 16) / 0.48);
}

.ph-help-dialog {
    width: min(100%, 32rem);
    max-height: min(88vh, 42rem);
    overflow: auto;
    padding: 1.35rem 1.45rem 1.5rem;
    border: 1px solid var(--ph-border);
    border-radius: var(--ph-radius-xl);
    background: var(--ph-surface);
    box-shadow: var(--ph-shadow-md);
    color: var(--ph-neutral-950);
}

.ph-help-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.75rem;
    margin-bottom: 0.95rem;
}

.ph-help-head .ph-desk-kicker {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    margin: 0;
}

.ph-help-head h2 {
    margin: 0.2rem 0 0;
    font-size: 1.2rem;
    line-height: 1.45;
}

.ph-help-close {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    padding: 0.35rem 0.7rem;
    border-radius: var(--ph-radius-md);
    border: 1px solid var(--ph-border);
    background: var(--ph-surface-warm);
    color: var(--ph-neutral-950);
    cursor: pointer;
}

.ph-help-close:hover,
.ph-help-close:focus-visible {
    border-color: var(--ph-brand-primary);
    background: var(--ph-surface-primary);
}

.ph-help-close .ph-icon {
    width: 0.95rem;
    height: 0.95rem;
}

.ph-help-lead {
    margin: 0 0 1rem;
    color: var(--ph-neutral-700);
    line-height: 1.75;
    font-size: 0.95rem;
}

.ph-help-section {
    margin: 0 0 0.85rem;
    padding: 0.9rem 1rem;
    border-radius: var(--ph-radius-md);
    background: var(--ph-surface-beige);
}

.ph-help-section:last-child {
    margin-bottom: 0;
}

.ph-help-section h3 {
    margin: 0 0 0.4rem;
    font-size: 0.92rem;
    color: var(--ph-neutral-950);
}

.ph-help-section p,
.ph-help-section li {
    margin: 0;
    color: var(--ph-neutral-700);
    font-size: 0.9rem;
    line-height: 1.8;
}

.ph-help-section ul {
    margin: 0.35rem 0 0;
    padding-inline-start: 1.15rem;
}

.ph-help-section li + li {
    margin-top: 0.35rem;
}

body.ph-help-open {
    overflow: hidden;
}

.ph-check {
    display: flex;
    align-items: flex-start;
    gap: 0.45rem;
    margin: 0.5rem 0 1rem;
}

.ph-venue-owner-attest {
    padding: 0.75rem 0.9rem;
    border-radius: var(--ph-radius-md);
    background: var(--ph-surface-warm);
    border: 1px solid var(--ph-border-light);
    font-weight: 600;
    line-height: 1.45;
}

.ph-venue-owner-attest input {
    margin-top: 0.2rem;
}

.ph-main form.row,
.ph-main .row {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: center;
    margin-bottom: 0.75rem;
}

.ph-main input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
.ph-main select,
.ph-main textarea {
    width: 100%;
    border: 1px solid var(--ph-border);
    border-radius: var(--ph-radius-md);
    padding: 0.6rem 0.75rem;
    background: var(--ph-white);
    color: var(--ph-neutral-950);
}

.ph-main input::placeholder,
.ph-main textarea::placeholder {
    color: var(--ph-neutral-400);
}

.ph-main input:focus,
.ph-main select:focus,
.ph-main textarea:focus {
    outline: none;
    border-color: var(--ph-brand-primary);
    box-shadow: 0 0 0 3px var(--ph-focus-ring);
}

.ph-main input[aria-invalid="true"],
.ph-main .ph-field-error input,
.ph-main .ph-field.is-invalid input,
.ph-main .ph-field.is-invalid textarea {
    border-color: var(--ph-error);
}

.ph-field-msg {
    margin: 0.35rem 0 0;
    font-size: 0.8rem;
    line-height: 1.5;
    color: var(--ph-error);
}

.ph-main .row input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
.ph-main .row select,
.ph-main .ph-toolbar input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
.ph-main .ph-toolbar select {
    width: auto;
    min-width: 10rem;
    flex: 1;
}

.ph-main textarea { min-height: 7rem; }

.ph-main textarea.ph-note {
    min-height: 4.5rem;
}

.ph-ltr,
.ph-num,
.ph-main input[dir="ltr"],
.ph-main input[inputmode="numeric"],
.ph-main input[inputmode="decimal"],
.ph-main input[inputmode="tel"],
.ph-main input[type="number"],
.ph-main input[type="tel"],
.ph-main input[type="email"],
.ph-main input[type="url"],
.ph-main input[autocomplete="one-time-code"],
.ph-main input[autocomplete="tel"] {
    direction: ltr;
    text-align: left;
    unicode-bidi: isolate;
}

.ph-main button,
.ph-main [type="submit"],
.ph-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.35rem;
    border-radius: var(--ph-radius-md);
    background: var(--ph-brand-cta);
    color: var(--ph-brand-on-cta);
    border: 1px solid var(--ph-brand-cta);
    padding: 0.55rem 1rem;
    min-height: 44px;
    cursor: pointer;
    text-decoration: none;
    font-weight: 600;
    font-size: 0.9rem;
    transition: transform 0.15s ease-out, background-color 0.15s ease-out, border-color 0.15s ease-out, color 0.15s ease-out;
}

.ph-main button:hover,
.ph-main [type="submit"]:hover,
.ph-btn:hover {
    background: var(--ph-brand-cta-dark);
    border-color: var(--ph-brand-cta-dark);
    color: var(--ph-brand-on-cta);
    transform: translateY(-1px);
}

.ph-main button:active,
.ph-main [type="submit"]:active,
.ph-btn:active {
    transform: translateY(0) scale(0.98);
}

.ph-main button:focus-visible,
.ph-btn:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px var(--ph-focus-ring);
}

.ph-main button:disabled,
.ph-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.ph-main .ph-pw-toggle,
.ph-auth .ph-pw-toggle {
    width: 2.25rem;
    min-height: 2.25rem;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--ph-neutral-500);
    font-weight: 400;
    box-shadow: none;
}

.ph-main .ph-pw-toggle:hover,
.ph-auth .ph-pw-toggle:hover,
.ph-main .ph-pw-toggle:focus-visible,
.ph-auth .ph-pw-toggle:focus-visible {
    background: var(--ph-neutral-50);
    color: var(--ph-neutral-950);
    border-color: transparent;
    transform: none;
}

.ph-main .ph-pw-toggle:active,
.ph-auth .ph-pw-toggle:active {
    transform: none;
}

.ph-btn-ghost,
.ph-main a.ph-btn-ghost,
.ph-main button.ph-btn-ghost {
    background: transparent;
    color: var(--ph-neutral-950);
    border: 1px solid var(--ph-neutral-200);
}

.ph-btn-ghost:hover,
.ph-main a.ph-btn-ghost:hover,
.ph-main button.ph-btn-ghost:hover {
    background: var(--ph-surface-warm);
    border-color: var(--ph-brand-primary);
}

.ph-main button.danger,
.ph-btn-danger {
    background: var(--ph-error);
    border-color: var(--ph-error);
    color: var(--ph-white);
}

.ph-main button.danger:hover,
.ph-btn-danger:hover {
    background: var(--ph-error-dark);
    border-color: var(--ph-error-dark);
}

.ph-card,
.ph-main .card,
.ph-main .cards .card,
.ph-main article.card {
    background: var(--ph-surface);
    border: 1px solid var(--ph-border);
    border-radius: var(--ph-radius-lg);
    padding: 1.1rem 1.2rem;
    margin: 0.75rem 0;
    box-shadow: var(--ph-shadow-sm);
    transition: transform 0.2s ease-out, box-shadow 0.2s ease-out, border-color 0.2s ease-out;
}

.ph-card:hover,
.ph-main .card:hover,
.ph-main .cards .card:hover,
.ph-main article.card:hover {
    transform: translateY(-3px);
    box-shadow: var(--ph-shadow-md);
}

.ph-main .cards {
    list-style: none;
    padding: 0;
    display: grid;
    gap: 0.75rem;
}

.ph-alert,
.ph-alert-ok,
.ph-alert-err,
.ph-alert-warn,
.ph-main .error,
.ph-main p.error {
    border-radius: var(--ph-radius-md);
    padding: 0.7rem 0.9rem;
    margin: 0 0 1rem;
    display: flex;
    align-items: flex-start;
    gap: 0.45rem;
}

.ph-alert-err,
.ph-main .error,
.ph-main p.error {
    background: var(--ph-error-bg);
    color: var(--ph-error);
    border: 1px solid #e8c9c6;
}

.ph-alert-ok {
    background: var(--ph-success-bg);
    color: var(--ph-success);
    border: 1px solid #cfe0d5;
}

.ph-alert-warn {
    background: var(--ph-warning-bg);
    color: var(--ph-warning);
    border: 1px solid #ead8b0;
}

.ph-alert[hidden],
.ph-alert-ok[hidden],
.ph-alert-err[hidden],
.ph-alert-warn[hidden],
[data-desk-error][hidden],
[data-invoice-error][hidden],
[data-enter-error][hidden] {
    display: none !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    min-height: 0 !important;
}

.ph-empty {
    background: var(--ph-surface);
    border: 1px dashed var(--ph-border-strong);
    border-radius: var(--ph-radius-lg);
    padding: 1.5rem;
    color: var(--ph-neutral-700);
    text-align: center;
}

.ph-table-wrap {
    overflow-x: auto;
    background: var(--ph-surface);
    border: 1px solid var(--ph-border);
    border-radius: var(--ph-radius-lg);
}

.ph-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.9rem;
}

.ph-table th,
.ph-table td {
    text-align: right;
    padding: 0.75rem 0.9rem;
    border-bottom: 1px solid var(--ph-neutral-100);
    vertical-align: middle;
}

.ph-table th {
    background: var(--ph-surface-warm);
    font-weight: 600;
    color: var(--ph-neutral-950);
}

.ph-table tr:last-child td { border-bottom: 0; }

.ph-table .ph-num,
.ph-table td[dir="ltr"] {
    direction: ltr;
    text-align: left;
    unicode-bidi: isolate;
}

.ph-audit-summary {
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    overflow: hidden;
    max-width: 22rem;
    line-height: 1.7;
}

.ph-badge,
.ph-main .badge {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    background: var(--ph-surface-primary);
    color: var(--ph-brand-dark);
    padding: 0.15rem 0.55rem;
    border-radius: 999px;
    font-size: 0.8rem;
    font-weight: 500;
}

.ph-badge-off {
    background: var(--ph-neutral-100);
    color: var(--ph-neutral-700);
}

.ph-badge-warn {
    background: var(--ph-warning-bg);
    color: var(--ph-warning);
}

.ph-badge-ok {
    background: var(--ph-success-bg);
    color: var(--ph-success);
}

.ph-badge-plan {
    background: var(--ph-brand-magenta);
    color: var(--ph-brand-on-magenta);
}

.ph-badge-err {
    background: var(--ph-error-bg);
    color: var(--ph-error);
}

.ph-main details > summary {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    cursor: pointer;
    font-weight: 600;
}

.ph-main fieldset {
    border: 1px solid var(--ph-border);
    border-radius: var(--ph-radius-md);
    margin: 0.75rem 0;
    padding: 0.85rem;
}

.ph-checks {
    display: grid;
    gap: 0.35rem;
    grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr));
}

.ph-main label {
    display: inline-flex;
    gap: 0.35rem;
    margin: 0.25rem 0.75rem 0.25rem 0;
    align-items: center;
}

.ph-main form.inline { display: inline; }

.ph-main ul { padding-inline-start: 1.2rem; }

.ph-brand { min-width: 0; }

.ph-brand-caption {
    margin: 0 0 0.35rem;
    font-size: 0.7rem;
    letter-spacing: 0.02em;
    color: var(--ph-brand-primary-deep);
}

.ph-brand-row {
    display: flex;
    align-items: center;
    gap: 0.65rem;
    min-width: 0;
}

.ph-brand-mark {
    width: 3.25rem;
    height: 3.25rem;
    border-radius: var(--ph-radius-lg);
    object-fit: cover;
    background: var(--ph-surface-primary);
    flex-shrink: 0;
}

.ph-brand-mark-sm {
    width: 2.4rem;
    height: 2.4rem;
    border-radius: var(--ph-radius-md);
}

.ph-brand-mark-fallback {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    color: var(--ph-brand-dark);
    background: var(--ph-surface-primary);
}

.ph-brand-dark .ph-brand-mark-fallback {
    background: rgba(250, 210, 90, 0.18);
    color: var(--ph-brand-gold);
}

.ph-brand-dark .ph-brand-tagline {
    color: color-mix(in srgb, var(--ph-surface-warm) 88%, transparent);
}

.ph-brand-text {
    display: flex;
    flex-direction: column;
    min-width: 0;
    gap: 0.1rem;
}

.ph-brand-name {
    font-size: 0.95rem;
    font-weight: 700;
    line-height: 1.3;
}

.ph-brand-compact .ph-brand-name { font-size: 0.9rem; }

.ph-brand-tagline {
    font-size: 0.78rem;
    color: var(--ph-neutral-700);
    line-height: 1.4;
}

.ph-site-brand {
    display: inline-flex;
    min-width: 0;
    text-decoration: none;
    color: inherit;
}

.ph-site-brand .ph-brand-tagline {
    display: none;
}

@media (min-width: 720px) {
    .ph-site-brand .ph-brand-tagline {
        display: block;
    }
}

.ph-site-footer-scope {
    margin-top: auto;
}

.ph-site-footer {
    position: relative;
    isolation: isolate;
    overflow-x: clip;
    overflow-y: visible;
    margin-top: auto;
    border-top: 1px solid color-mix(in srgb, var(--ph-brand-gold) 22%, transparent);
    background:
        linear-gradient(180deg, transparent 70%, color-mix(in srgb, var(--ph-chrome-ink) 55%, transparent) 100%),
        radial-gradient(28rem 14rem at 100% 0%, color-mix(in srgb, var(--ph-brand-primary) 12%, transparent), transparent 62%),
        linear-gradient(180deg, var(--ph-chrome-dark) 0%, var(--ph-chrome-ink) 100%);
    color: var(--ph-surface-warm);
    font-size: 0.9rem;
}

.ph-site-footer-pattern {
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    background-image:
        radial-gradient(circle at 1px 1px, color-mix(in srgb, var(--ph-brand-gold) 22%, transparent) 1.1px, transparent 0);
    background-size: 22px 22px;
    opacity: 0.06;
    mask-image: linear-gradient(180deg, transparent 0%, black 18%, black 82%, transparent 100%);
}

.ph-site-footer-main,
.ph-site-footer-bottom {
    position: relative;
    z-index: 1;
}

.ph-site-footer-main {
    display: grid;
    gap: 2rem;
    padding: 2.5rem 0 2rem;
}

@media (max-width: 1023px) {
    .ph-site-footer-brand {
        order: 1;
    }

    .ph-site-footer-contact {
        order: 2;
    }

    .ph-site-footer-group,
    .ph-site-footer-nav {
        order: 3;
    }
}

@media (min-width: 768px) {
    .ph-site-footer-main {
        grid-template-columns: 1fr 1fr;
        align-items: stretch;
        gap: 2rem 1.75rem;
    }
}

@media (min-width: 1024px) {
    .ph-site-footer-main {
        grid-template-columns: minmax(16rem, 1.45fr) repeat(auto-fit, minmax(10.5rem, 0.8fr));
    }

    .ph-site-footer-nav {
        padding-inline-start: 1.15rem;
        border-inline-start: 1px solid color-mix(in srgb, var(--ph-brand-gold) 16%, transparent);
    }
}

.ph-site-footer-kicker {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0 0 0.75rem;
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    color: color-mix(in srgb, var(--ph-surface-warm) 92%, transparent);
}

.ph-site-footer-kicker::before {
    content: "";
    width: 0.7rem;
    height: 2px;
    border-radius: 999px;
    background: var(--ph-brand-gold);
}

.ph-site-footer-mark {
    display: inline-flex;
    max-width: 100%;
    text-decoration: none;
    color: inherit;
}

.ph-site-footer-mark .ph-brand-tagline {
    display: block;
    color: color-mix(in srgb, var(--ph-surface-warm) 88%, transparent);
}

.ph-site-footer-blurb {
    margin: 0.75rem 0 0;
    max-width: 28rem;
    line-height: 1.75;
    color: rgba(250, 248, 244, 0.78);
}

.ph-site-footer-social {
    margin-top: 1.15rem;
    padding-top: 1rem;
    border-top: 1px solid rgba(250, 248, 244, 0.1);
    max-width: 28rem;
}

.ph-site-footer-social-list {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.ph-site-footer-social-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.25rem;
    height: 2.25rem;
    border-radius: 0.55rem;
    border: 1px solid rgba(250, 248, 244, 0.14);
    background: rgba(250, 248, 244, 0.04);
    color: rgba(250, 248, 244, 0.78);
    text-decoration: none;
    transition:
        color 0.18s ease,
        background 0.18s ease,
        border-color 0.18s ease,
        transform 0.18s ease,
        box-shadow 0.18s ease;
}

.ph-site-footer-social-link .ph-icon {
    width: 0.98rem;
    height: 0.98rem;
}

.ph-site-footer-social-link:hover,
.ph-site-footer-social-link:focus-visible {
    color: var(--ph-brand-gold);
    background: rgba(250, 210, 90, 0.1);
    border-color: rgba(250, 210, 90, 0.42);
    transform: translateY(-1px);
    box-shadow: 0 6px 14px rgba(0, 0, 0, 0.18);
    outline: none;
}

.ph-site-footer-social-link:focus-visible {
    box-shadow:
        0 0 0 2px var(--ph-chrome-ink),
        0 0 0 3px rgba(250, 210, 90, 0.55);
}

.ph-site-footer-nav ul {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 0.45rem;
}

.ph-site-footer-nav ul ul {
    margin-top: 0.25rem;
    padding-inline-start: 0.75rem;
    gap: 0.3rem;
}

.ph-site-footer-nav a {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    color: color-mix(in srgb, var(--ph-surface-warm) 92%, transparent);
    text-decoration: none;
    transition: color 0.15s ease;
}

.ph-site-footer-nav a::before {
    content: "";
    width: 0.32rem;
    height: 0.32rem;
    flex-shrink: 0;
    border-radius: 999px;
    background: color-mix(in srgb, var(--ph-brand-gold) 58%, transparent);
    box-shadow: 0 0 0 1px color-mix(in srgb, var(--ph-brand-gold) 22%, transparent);
    transition: background 0.15s ease, transform 0.15s ease;
}

.ph-site-footer-nav a:hover {
    color: var(--ph-brand-gold);
}

.ph-site-footer-nav a:hover::before {
    background: var(--ph-brand-gold);
    transform: scale(1.12);
}

.ph-site-footer-nav .ph-icon {
    width: 0.95rem;
    height: 0.95rem;
    color: var(--ph-brand-gold-deep);
}

.ph-site-footer-contact {
    padding: 1rem 1.05rem 1.1rem;
    border-radius: var(--ph-radius-lg);
    background: color-mix(in srgb, var(--ph-surface-warm) 6%, transparent);
    border: 1px solid color-mix(in srgb, var(--ph-surface-warm) 10%, transparent);
}

.ph-site-footer-contact-list {
    margin: 0;
    display: grid;
    gap: 0.6rem;
}

.ph-site-footer-contact-row {
    display: grid;
    grid-template-columns: 1.1rem minmax(0, 1fr);
    gap: 0.45rem;
    align-items: start;
    margin: 0;
}

.ph-site-footer-contact-row dt {
    margin: 0;
}

.ph-site-footer-contact-row dd {
    margin: 0;
    line-height: 1.65;
}

.ph-site-footer-contact-row .ph-icon {
    color: var(--ph-brand-gold);
    margin-top: 0.15rem;
}

.ph-site-footer-contact-row a {
    color: color-mix(in srgb, var(--ph-surface-warm) 92%, transparent);
    text-decoration: none;
}

.ph-site-footer-contact-row a:hover {
    color: var(--ph-brand-gold);
    text-decoration: underline;
}

.ph-site-footer-office-name {
    display: block;
    margin-bottom: 0.15rem;
    font-weight: 600;
    color: var(--ph-surface-warm);
}

.ph-footer-sep {
    margin-inline: 0.35rem;
    opacity: 0.55;
}

.ph-site-footer-more {
    margin: 1rem 0 0;
    padding-top: 0.9rem;
    border-top: 1px solid color-mix(in srgb, var(--ph-surface-warm) 12%, transparent);
}

.ph-site-footer-contact-page {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.45rem 0.9rem;
    border-radius: 999px;
    border: 1px solid color-mix(in srgb, var(--ph-brand-gold) 45%, transparent);
    background: color-mix(in srgb, var(--ph-brand-gold) 14%, transparent);
    color: var(--ph-brand-gold);
    font-size: 0.82rem;
    font-weight: 600;
    text-decoration: none;
    transition:
        background 0.15s ease,
        border-color 0.15s ease,
        color 0.15s ease;
}

.ph-site-footer-contact-page .ph-icon {
    width: 0.95rem;
    height: 0.95rem;
}

.ph-site-footer-contact-page:hover,
.ph-site-footer-contact-page:focus-visible {
    background: var(--ph-brand-gold);
    border-color: var(--ph-brand-gold);
    color: var(--ph-brand-on-primary);
    outline: none;
}

.ph-social-icons {
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.ph-social-icons a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.35rem;
    height: 2.35rem;
    border: 1px solid rgba(250, 210, 90, 0.4);
    border-radius: 999px;
    color: var(--ph-surface-warm);
    text-decoration: none;
    transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

.ph-social-icons a:hover,
.ph-social-icons a:focus-visible {
    background: rgba(250, 210, 90, 0.16);
    border-color: var(--ph-brand-gold);
    color: var(--ph-brand-gold);
}

.ph-social-icons .ph-icon {
    width: 1.05rem;
    height: 1.05rem;
}

.ph-site-footer-social-inline {
    margin-top: 1rem;
}

.ph-social-pills {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin: 0;
}

.ph-social-pills a {
    display: inline-flex;
    align-items: center;
    padding: 0.35rem 0.75rem;
    border: 1px solid rgba(250, 210, 90, 0.35);
    border-radius: 999px;
    color: var(--ph-surface-warm);
    font-size: 0.82rem;
    text-decoration: none;
    transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

.ph-social-pills a:hover {
    background: rgba(250, 210, 90, 0.12);
    border-color: var(--ph-brand-gold);
    color: var(--ph-brand-gold);
}

.ph-site-footer-bottom {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.65rem 1.25rem;
    padding: 1.05rem 0 1.4rem;
    border-top: 1px solid color-mix(in srgb, var(--ph-brand-gold) 22%, transparent);
    font-size: 0.82rem;
    color: rgba(250, 248, 244, 0.72);
}

.ph-site-footer-copy {
    margin: 0;
}

.ph-site-footer-bottom-links {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0;
    margin: 0;
}

.ph-site-footer-bottom-links a {
    display: inline-flex;
    align-items: center;
    color: color-mix(in srgb, var(--ph-surface-warm) 72%, transparent);
    text-decoration: none;
}

.ph-site-footer-bottom-links a + a::before {
    content: "";
    width: 1px;
    height: 0.7em;
    margin-inline: 0.75rem;
    background: color-mix(in srgb, var(--ph-brand-gold) 32%, transparent);
    border-radius: 999px;
}

.ph-site-footer-bottom-links a:hover {
    color: var(--ph-brand-gold);
    text-decoration: underline;
}

/* Social pills on light surfaces (contact page, cards) */
.ph-card .ph-social-pills a,
.ph-contact-item .ph-social-pills a,
.ph-card .ph-social-icons a,
.ph-contact-item .ph-social-icons a {
    color: var(--ph-brand-dark);
    border-color: var(--ph-neutral-200);
}

.ph-card .ph-social-pills a:hover,
.ph-contact-item .ph-social-pills a:hover,
.ph-card .ph-social-icons a:hover,
.ph-contact-item .ph-social-icons a:hover {
    background: var(--ph-surface-warm);
    border-color: var(--ph-brand-primary);
    color: var(--ph-brand-primary-dark);
}

.ph-public-hero {
    padding: 1.6rem 1.45rem 1.5rem;
}

.ph-site-header {
    position: sticky;
    top: 0;
    z-index: 40;
    overflow: visible;
    border-bottom: 1px solid var(--ph-border);
    background: rgb(255 255 255 / 0.92);
    transition: box-shadow 0.2s ease, background-color 0.2s ease, border-color 0.2s ease;
}

/* Blur on a sibling layer so dropdowns are not clipped (backdrop-filter on the
   header itself creates a containing box and clips overflow). */
.ph-site-header::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    pointer-events: none;
    backdrop-filter: blur(14px);
}

.ph-site-header.is-scrolled {
    background: rgb(255 253 248 / 0.97);
    border-bottom-color: color-mix(in srgb, var(--ph-brand-gold) 35%, var(--ph-border));
    box-shadow: 0 8px 24px rgba(44, 24, 16, 0.06);
}

.ph-site-header-inner {
    position: relative;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--ph-space-2) var(--ph-space-4);
    max-width: 72rem;
    margin: 0 auto;
    padding: var(--ph-space-3) var(--ph-space-4);
    min-height: 4.5rem;
    overflow: visible;
}

.ph-site-header .ph-brand-mark {
    width: 3.75rem;
    height: 3.75rem;
}

.ph-site-brand {
    order: 1;
}

.ph-nav-toggle {
    order: 2;
    margin-inline-start: auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.5rem;
    height: 2.5rem;
    border: 1px solid var(--ph-border);
    border-radius: var(--ph-radius-md);
    background: var(--ph-white);
    color: var(--ph-brand-dark);
}

.ph-nav-toggle .ph-icon {
    width: 1.15rem;
    height: 1.15rem;
}

.ph-site-header-actions {
    order: 3;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--ph-space-2);
    margin-inline-start: auto;
}

.ph-site-header-actions form {
    margin: 0;
    display: inline-flex;
}

.ph-site-header-actions .ph-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    min-height: 2.5rem;
    padding-inline: 0.9rem;
}

.ph-site-header-actions .ph-btn .ph-icon {
    width: 1rem;
    height: 1rem;
}

.ph-site-nav {
    order: 4;
    display: none;
    flex-direction: column;
    align-items: stretch;
    gap: 0.2rem;
    width: 100%;
}

.ph-nav-link {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    min-height: 2.5rem;
    padding: 0.4rem 0.7rem;
    border: 0;
    border-radius: var(--ph-radius-md);
    background: none;
    color: var(--ph-neutral-700);
    font: inherit;
    font-size: 0.875rem;
    font-weight: 500;
    line-height: 1;
    text-decoration: none;
    white-space: nowrap;
    cursor: pointer;
}

.ph-nav-link .ph-icon {
    width: 1rem;
    height: 1rem;
    color: var(--ph-neutral-500);
}

.ph-nav-link:hover,
.ph-nav-more > .ph-nav-link[aria-expanded="true"] {
    background: var(--ph-surface-primary);
    color: var(--ph-brand-dark);
}

.ph-nav-link:hover .ph-icon,
.ph-nav-more > .ph-nav-link[aria-expanded="true"] .ph-icon {
    color: var(--ph-brand-primary-dark);
}

.ph-site-nav.is-open,
.ph-site-nav.is-auth {
    display: flex;
}

.ph-nav-more {
    position: relative;
}

.ph-nav-more-head {
    display: inline-flex;
    align-items: center;
    gap: 0;
}

.ph-nav-more-head .ph-nav-link {
    padding-inline-end: 0.35rem;
}

.ph-nav-caret {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.75rem;
    min-height: 2.5rem;
    padding: 0;
    border: 0;
    border-radius: var(--ph-radius-md);
    background: none;
    color: var(--ph-neutral-700);
    cursor: pointer;
}

.ph-nav-caret .ph-icon {
    width: 0.85rem;
    height: 0.85rem;
    color: var(--ph-neutral-500);
}

.ph-nav-caret:hover,
.ph-nav-caret:focus-visible,
.ph-nav-caret[aria-expanded="true"] {
    background: var(--ph-surface-primary);
    color: var(--ph-brand-dark);
}

.ph-nav-caret:hover .ph-icon,
.ph-nav-caret:focus-visible .ph-icon,
.ph-nav-caret[aria-expanded="true"] .ph-icon {
    color: var(--ph-brand-primary-dark);
}

.ph-nav-more > .ph-nav-link .ph-icon:last-child {
    width: 0.85rem;
    height: 0.85rem;
    margin-inline-start: 0.05rem;
}

.ph-nav-drop {
    position: static;
    z-index: 50;
    display: grid;
    gap: 0.15rem;
    margin: 0.15rem 0 0;
    padding: 0.25rem 0 0.25rem 0.5rem;
}

.ph-nav-drop .ph-nav-link,
.ph-nav-drop .ph-nav-more-head,
.ph-nav-drop .ph-nav-caret {
    width: 100%;
    justify-content: flex-start;
}

.ph-nav-drop .ph-nav-more-head {
    display: flex;
}

@media (min-width: 1080px) {
    .ph-nav-toggle {
        display: none;
    }

    .ph-site-nav,
    .ph-site-nav.is-auth {
        display: flex;
        flex-direction: row;
        align-items: center;
        width: auto;
        flex: 1 1 auto;
        order: 2;
        gap: 0.15rem;
    }

    .ph-site-header-actions {
        margin-inline-start: 0;
        order: 3;
    }

    .ph-nav-drop {
        position: absolute;
        inset-inline-start: 0;
        top: calc(100% + 0.4rem);
        min-width: 12.5rem;
        margin: 0;
        padding: var(--ph-space-2);
        border: 1px solid var(--ph-border);
        border-radius: var(--ph-radius-lg);
        background: var(--ph-white);
        box-shadow: var(--ph-shadow-md);
    }

    .ph-nav-drop .ph-nav-more {
        position: relative;
    }

    /* Nested header groups stay inside the panel (RTL flyouts go off-screen). */
    .ph-nav-drop .ph-nav-drop {
        position: static;
        inset: auto;
        top: auto;
        min-width: 0;
        margin: 0.1rem 0 0.15rem;
        padding: 0.15rem 0 0.15rem 0.65rem;
        border: 0;
        border-radius: 0;
        background: transparent;
        box-shadow: none;
    }
}

.ph-public-main {
    flex: 1 1 auto;
    width: 100%;
    padding: 0;
}

.ph-js [data-reveal] {
    opacity: 0;
    transform: translateY(16px);
    transition: opacity 0.5s ease-out, transform 0.5s ease-out;
}

.ph-js [data-reveal].is-revealed {
    opacity: 1;
    transform: none;
}

@media (prefers-reduced-motion: reduce) {
    .ph-js [data-reveal] {
        opacity: 1;
        transform: none;
        transition: none;
    }
}

.ph-public-hero-mark {
    margin-bottom: 1rem;
}

.ph-public-hero .ph-lead {
    max-width: 40rem;
    white-space: pre-wrap;
}

.ph-public-hero .ph-actions {
    margin-top: 0.25rem;
}

.ph-identity-grid {
    display: grid;
    gap: 1rem;
    margin-bottom: 1.25rem;
}

@media (min-width: 768px) {
    .ph-identity-grid { grid-template-columns: 1.2fr 1fr; }
}

.ph-identity-card {
    background: var(--ph-surface);
    border: 1px solid var(--ph-border);
    border-radius: var(--ph-radius-lg);
    padding: 1.15rem 1.25rem;
    box-shadow: var(--ph-shadow-sm);
}

.ph-identity-venue {
    border-color: var(--ph-brand-primary);
    background: linear-gradient(180deg, var(--ph-surface-primary) 0%, var(--ph-white) 55%);
}

.ph-identity-platform {
    background: linear-gradient(180deg, var(--ph-chrome-dark) 0%, var(--ph-chrome-ink) 100%);
    border-color: var(--ph-chrome-ink);
    color: var(--ph-surface-warm);
}

.ph-identity-platform .ph-brand-caption,
.ph-identity-platform .ph-brand-tagline,
.ph-identity-platform .ph-identity-kicker,
.ph-identity-platform .ph-identity-ad {
    color: var(--ph-brand-gold-deep);
}

.ph-identity-platform .ph-brand-name { color: var(--ph-white); }

.ph-identity-platform .ph-brand-mark-fallback {
    background: rgba(250, 210, 90, 0.18);
    color: var(--ph-brand-gold);
}

.ph-identity-kicker {
    margin: 0 0 0.75rem;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--ph-brand-gold);
}

.ph-identity-ad {
    margin: 0.85rem 0 0;
    font-size: 0.8rem;
    line-height: 1.5;
}

.ph-identity-edit { margin-top: 0.9rem; }

.ph-logo-upload {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    align-items: center;
}

.ph-logo-preview-wrap { flex-shrink: 0; }

.ph-logo-preview {
    width: 5.5rem;
    height: 5.5rem;
    border-radius: var(--ph-radius-lg);
    object-fit: cover;
    border: 1px solid var(--ph-border);
    background: var(--ph-surface-beige);
}

.ph-logo-upload input[type="file"] {
    width: auto;
    padding: 0.35rem 0;
    border: 0;
    background: transparent;
}

.ph-media {
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
}

.ph-media-drop {
    position: relative;
    display: block;
    overflow: hidden;
    border: 1px dashed var(--ph-border-strong);
    border-radius: var(--ph-radius-lg);
    background: var(--ph-surface-beige);
    cursor: pointer;
}

.ph-media-drop-logo {
    width: 8.5rem;
    height: 8.5rem;
}

.ph-media-drop-banner {
    width: 100%;
    min-height: 9rem;
}

.ph-media-drop:hover,
.ph-media-drop:focus-within {
    border-color: var(--ph-brand-primary);
    box-shadow: 0 0 0 3px var(--ph-focus-ring);
}

.ph-media-img,
.ph-media-fallback {
    width: 100%;
    height: 100%;
    min-height: inherit;
    object-fit: cover;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.35rem;
    color: var(--ph-brand-dark);
    font-weight: 600;
    background: var(--ph-surface-primary);
}

.ph-media-drop-banner .ph-media-img,
.ph-media-drop-banner .ph-media-fallback {
    min-height: 9rem;
}

.ph-media-fallback .ph-icon {
    width: 1.6rem;
    height: 1.6rem;
}

.ph-media-overlay {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.2rem;
    background: rgb(44 24 16) / 0.48);
    color: var(--ph-white);
    font-size: 0.82rem;
    font-weight: 600;
    opacity: 0;
    transition: opacity 0.15s ease;
    pointer-events: none;
    text-align: center;
    padding: 0.5rem;
}

.ph-media-overlay small {
    font-size: 0.72rem;
    font-weight: 500;
    opacity: 0.9;
}

.ph-media-overlay .ph-icon {
    width: 1.25rem;
    height: 1.25rem;
    color: var(--ph-white);
}

.ph-media-badge {
    position: absolute;
    inset-inline-end: 0.45rem;
    bottom: 0.45rem;
    z-index: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 1.85rem;
    height: 1.85rem;
    border-radius: 999px;
    background: var(--ph-brand-primary);
    color: var(--ph-brand-on-primary);
    box-shadow: 0 1px 4px rgb(44 24 16) / 0.22);
    pointer-events: none;
}

.ph-media-badge .ph-icon {
    width: 0.9rem;
    height: 0.9rem;
    color: var(--ph-brand-on-primary);
}

.ph-media-drop:hover .ph-media-overlay,
.ph-media-drop:focus-within .ph-media-overlay {
    opacity: 1;
}

.ph-media-input {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
    overflow: hidden;
}

.ph-banner-preview {
    width: min(100%, 22rem);
    height: 7.5rem;
    border-radius: var(--ph-radius-lg);
}

.ph-brand-form {
    display: grid;
    gap: 1rem;
}

.ph-hero-admin-switch {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin: 0 0 1rem;
}

.ph-hero-admin-switch h2 {
    margin: 0 0 0.35rem;
}

.ph-hero-admin-switch p {
    margin: 0;
    max-width: 38rem;
}

.ph-hero-admin-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 0.85rem;
}

.ph-hero-admin-card {
    display: grid;
    gap: 1rem;
    margin: 0;
    padding: 0.85rem;
}

@media (min-width: 760px) {
    .ph-hero-admin-card {
        grid-template-columns: 11rem minmax(0, 1fr);
        align-items: start;
    }
}

.ph-hero-admin-card.is-off {
    opacity: 0.78;
}

.ph-hero-admin-thumb {
    overflow: hidden;
    border-radius: var(--ph-radius-md);
    background: var(--ph-surface-beige);
    min-height: 6.5rem;
}

.ph-hero-admin-thumb img,
.ph-hero-admin-thumb .ph-media-fallback {
    width: 100%;
    height: 100%;
    min-height: 6.5rem;
    object-fit: cover;
}

.ph-hero-admin-body p {
    margin: 0.45rem 0 0;
    color: var(--ph-neutral-700);
    line-height: 1.7;
}

.ph-hero-admin-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.45rem;
}

.ph-hero-admin-body .ph-row-actions {
    margin-top: 0.75rem;
    justify-content: flex-start;
}

.ph-home-sections-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 0.75rem;
}

.ph-home-section-row {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    align-items: center;
    gap: 0.75rem;
    margin: 0;
    padding: 1rem;
    transition: border-color 0.15s ease-out, box-shadow 0.15s ease-out, opacity 0.15s ease-out;
}

.ph-home-section-row.is-off {
    background: var(--ph-neutral-50);
}

.ph-home-section-row:not(.is-off):hover {
    border-color: var(--ph-border-strong);
    box-shadow: var(--ph-shadow-sm);
}

.ph-home-section-order {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    border-radius: 999px;
    background: var(--ph-surface-primary);
    color: var(--ph-brand-dark);
    font-size: 0.8rem;
    font-weight: 700;
}

.ph-home-section-body {
    display: grid;
    gap: 0.2rem;
    min-width: 0;
}

.ph-home-section-title {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.45rem;
}

.ph-home-section-summary {
    margin: 0;
    color: var(--ph-neutral-500);
    font-size: 0.82rem;
    line-height: 1.6;
}

.ph-home-section-actions {
    grid-column: 1 / -1;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.55rem;
    padding-top: 0.75rem;
    border-top: 1px solid var(--ph-border);
}

.ph-home-section-actions-primary,
.ph-home-section-move {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem;
}

.ph-home-section-actions form {
    margin: 0;
}

.ph-home-section-move {
    padding: 0.2rem;
    border: 1px solid var(--ph-border);
    border-radius: var(--ph-radius-md);
    background: var(--ph-white);
}

.ph-home-section-move-label {
    padding-inline: 0.4rem;
    color: var(--ph-neutral-500);
    font-size: 0.75rem;
    font-weight: 600;
}

.ph-tree-icon:disabled,
.ph-main button.ph-tree-icon:disabled {
    opacity: 0.35;
    pointer-events: none;
}

.ph-home-editor {
    width: min(100%, 58rem);
    margin-inline: auto;
}

.ph-home-editor-head {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1rem;
}

.ph-home-editor-head-copy {
    min-width: 0;
    flex: 1 1 24rem;
}

.ph-home-editor-head h2 {
    margin-bottom: 0.35rem;
    font-size: 1.35rem;
}

.ph-home-editor-head .ph-lead {
    max-width: 42rem;
    margin: 0;
    line-height: 1.75;
}

.ph-home-editor-form {
    gap: 1rem;
}

.ph-home-editor-section {
    margin: 0;
    padding: 1.15rem;
    border: 1px solid var(--ph-border);
    border-radius: var(--ph-radius-lg);
    background: var(--ph-white);
}

fieldset.ph-home-editor-section {
    min-width: 0;
}

.ph-home-editor-section > legend {
    width: 100%;
    padding: 0;
}

.ph-home-editor-section-title {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0 0 0.25rem;
    color: var(--ph-neutral-950);
    font-size: 1rem;
    font-weight: 700;
}

.ph-home-editor-section-title .ph-icon {
    color: var(--ph-brand-primary-dark);
}

.ph-home-editor-section > .ph-hint {
    margin: 0 0 1rem;
    line-height: 1.65;
}

.ph-home-editor-grid {
    display: grid;
    gap: 0 1rem;
}

.ph-home-editor-grid .ph-field {
    margin-bottom: 1rem;
}

.ph-home-editor-grid .ph-field:last-child {
    margin-bottom: 0;
}

.ph-home-editor-list {
    display: grid;
    gap: 0.75rem;
}

.ph-home-editor-item {
    padding: 0.85rem;
    border: 1px solid var(--ph-border);
    border-radius: var(--ph-radius-md);
    background: var(--ph-neutral-50);
}

.ph-home-editor-item-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    margin-bottom: 0.65rem;
}

.ph-home-editor-item-title {
    margin: 0;
    color: var(--ph-neutral-700);
    font-size: 0.8rem;
    font-weight: 700;
}

.ph-home-editor-add {
    justify-self: start;
    margin-top: 0.75rem;
}

.ph-home-editor-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.6rem;
    padding: 1rem 1.15rem;
    border: 1px solid var(--ph-border);
    border-radius: var(--ph-radius-lg);
    background: var(--ph-white);
}

.ph-home-editor-actions button[type="submit"] {
    min-width: 10rem;
}

.ph-home-editor-remove,
.ph-main button.ph-home-editor-remove {
    min-width: 44px;
    min-height: 44px;
    padding: 0;
    background: transparent;
    border-color: transparent;
    color: var(--ph-error);
}

.ph-home-editor-remove:hover,
.ph-main button.ph-home-editor-remove:hover {
    background: var(--ph-error-bg);
    border-color: transparent;
    color: var(--ph-error-dark);
}

.ph-home-trust-edit-row {
    display: grid;
    gap: 0.5rem;
}

@media (min-width: 640px) {
    .ph-home-section-row {
        grid-template-columns: auto minmax(0, 1fr) auto;
    }

    .ph-home-section-actions {
        grid-column: auto;
        display: grid;
        justify-items: end;
        padding-top: 0;
        border-top: 0;
    }

    .ph-home-section-actions-primary {
        justify-content: flex-end;
    }

    .ph-home-section-move-label {
        display: none;
    }

    .ph-home-editor-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .ph-home-editor-grid .ph-field-wide {
        grid-column: 1 / -1;
    }
}

@media (min-width: 720px) {
    .ph-home-trust-edit-row {
        grid-template-columns: 9.5rem minmax(0, 1fr) auto;
        align-items: center;
    }
}

.ph-home-showcase-edit-row {
    display: grid;
    gap: 0.5rem;
}

@media (min-width: 720px) {
    .ph-home-showcase-edit-row {
        grid-template-columns: 9.5rem 9.5rem auto;
        align-items: start;
    }

    .ph-home-showcase-edit-row input,
    .ph-home-showcase-edit-row textarea {
        grid-column: 1 / -1;
    }
}

.ph-home-journey-edit-row {
    display: grid;
    gap: 0.5rem;
}

@media (min-width: 720px) {
    .ph-home-journey-edit-row {
        grid-template-columns: minmax(0, 1fr) auto;
        align-items: start;
    }

    .ph-home-journey-edit-row textarea {
        grid-column: 1 / -1;
    }
}

@media (max-width: 479px) {
    .ph-home-editor-head > .ph-btn,
    .ph-home-editor-actions > .ph-btn,
    .ph-home-editor-actions > button {
        width: 100%;
    }

    .ph-home-section-actions-primary {
        width: 100%;
    }

    .ph-home-section-actions-primary > *,
    .ph-home-section-actions-primary form,
    .ph-home-section-actions-primary .ph-btn {
        flex: 1 1 auto;
    }
}

.ph-hero-copy-side {
    border: 0;
    margin: 0.35rem 0 1.15rem;
    padding: 0;
}

.ph-hero-copy-side legend {
    padding: 0;
}

.ph-hero-copy-side-opts {
    display: grid;
    gap: 0.65rem;
}

@media (min-width: 640px) {
    .ph-hero-copy-side-opts {
        grid-template-columns: 1fr 1fr;
    }
}

.ph-hero-copy-side-opt {
    display: flex;
    align-items: flex-start;
    gap: 0.7rem;
    margin: 0;
    padding: 0.9rem 1rem;
    border: 1px solid var(--ph-border);
    border-radius: var(--ph-radius-md);
    background: var(--ph-white);
    cursor: pointer;
}

.ph-hero-copy-side-opt:has(input:checked) {
    border-color: var(--ph-brand-primary);
    background: var(--ph-surface-warm);
}

.ph-hero-copy-side-opt small {
    display: block;
    margin-top: 0.2rem;
    font-weight: 400;
    color: var(--ph-neutral-700);
    line-height: 1.6;
}

.ph-hero-link-row {
    display: grid;
    gap: 0.5rem;
    margin: 0 0 0.65rem;
}

@media (min-width: 800px) {
    .ph-hero-link-row {
        grid-template-columns: minmax(7rem, 12rem) minmax(0, 1fr) 8.5rem auto;
        align-items: center;
    }
}

.ph-brand-form .ph-card {
    margin: 0;
}

.ph-brand-latin {
    margin: 0.35rem 0 0;
    color: var(--ph-neutral-700);
    font-weight: 600;
    letter-spacing: 0.02em;
}

.ph-brand-hero-banner {
    width: 100%;
    max-height: 10rem;
    object-fit: cover;
    border-radius: var(--ph-radius-lg);
    border: 1px solid var(--ph-border);
}

.ph-brand-media {
    display: grid;
    gap: 1rem;
}

@media (min-width: 900px) {
    .ph-brand-media {
        grid-template-columns: 1fr 1fr;
        align-items: start;
    }
}

.ph-repeat-row,
.ph-office-row {
    display: grid;
    gap: 0.5rem;
    margin: 0 0 0.65rem;
    align-items: start;
}

@media (min-width: 720px) {
    .ph-repeat-row {
        grid-template-columns: minmax(0, 1fr) auto;
    }

    .ph-office-row {
        grid-template-columns: minmax(8rem, 14rem) minmax(0, 1fr) auto;
    }
}

.ph-contact-list {
    display: grid;
    gap: 0.85rem;
    margin: 1rem 0 0;
}

.ph-contact-item {
    margin: 0;
}

.ph-contact-item strong {
    display: block;
    margin: 0 0 0.2rem;
}

.ph-contact-hero {
    margin: 0 0 1.25rem;
}

.ph-contact-hero h1 {
    margin: 0.2rem 0 0.4rem;
    font-size: clamp(1.6rem, 2.4vw, 2.05rem);
}

.ph-contact-intro {
    margin: 0 0 1.25rem;
}

.ph-contact-layout {
    display: grid;
    gap: 1.25rem;
    align-items: start;
}

@media (min-width: 900px) {
    .ph-contact-layout {
        grid-template-columns: minmax(0, 1.2fr) minmax(16rem, 22rem);
    }
}

.ph-contact-form,
.ph-contact-info,
.ph-contact-social {
    margin: 0;
}

.ph-contact-form-head {
    display: flex;
    gap: 0.85rem;
    align-items: flex-start;
    margin: 0 0 1rem;
}

.ph-contact-form-head h2 {
    margin: 0;
    font-size: 1.1rem;
}

.ph-contact-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.6rem;
    height: 2.6rem;
    border-radius: 999px;
    background: var(--ph-surface-primary);
    color: var(--ph-brand-primary-deep);
    border: 1px solid var(--ph-border);
    flex-shrink: 0;
}

.ph-contact-info-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 0.85rem;
}

.ph-contact-info-list li {
    display: flex;
    gap: 0.75rem;
    align-items: flex-start;
}

.ph-contact-info-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.1rem;
    height: 2.1rem;
    border-radius: 999px;
    background: var(--ph-surface-beige);
    color: var(--ph-neutral-700);
    flex-shrink: 0;
}

.ph-contact-info-list strong {
    display: block;
    font-size: 0.8rem;
    color: var(--ph-neutral-500);
    font-weight: 600;
    margin: 0 0 0.15rem;
}

.ph-contact-info-list a {
    color: var(--ph-neutral-950);
    text-decoration: none;
}

.ph-contact-info-list a:hover {
    color: var(--ph-brand-primary-deep);
}

.ph-contact-social h2 {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    margin: 0 0 0.75rem;
    font-size: 1rem;
}

@media (min-width: 900px) {
    .ph-contact-aside {
        position: sticky;
        top: 1rem;
        display: grid;
        gap: 1rem;
    }
}

.ph-contact-message-body {
    margin-top: 0.5rem;
    padding-top: 1rem;
    border-top: 1px solid var(--ph-border);
}

.ph-field-wide {
    grid-column: 1 / -1;
}

.ph-row-unread td {
    background: var(--ph-surface-highlight);
    font-weight: 600;
}

.ph-about-banner {
    width: 100%;
    max-height: 14rem;
    object-fit: cover;
    border-radius: var(--ph-radius-lg);
    margin: 0 0 1rem;
    border: 1px solid var(--ph-border);
}

.ph-staff-head {
    display: flex;
    gap: 0.85rem;
    align-items: center;
    margin-bottom: 0.75rem;
}

.ph-staff-photo {
    width: 3.5rem;
    height: 3.5rem;
    border-radius: 999px;
    object-fit: cover;
    border: 1px solid var(--ph-border);
    background: var(--ph-surface-primary);
    flex-shrink: 0;
}

.ph-face {
    display: flex;
    flex-wrap: wrap;
    gap: 1.1rem;
    align-items: center;
}

.ph-face-frame {
    position: relative;
    display: block;
    width: 7.25rem;
    height: 7.25rem;
    border-radius: 999px;
    border: 1px dashed var(--ph-border-strong);
    background: var(--ph-surface-beige);
    cursor: pointer;
    flex-shrink: 0;
}

.ph-face-frame:hover,
.ph-face-frame:focus-within {
    border-color: var(--ph-brand-primary);
    box-shadow: 0 0 0 3px var(--ph-focus-ring);
}

.ph-face-img,
.ph-face-fallback {
    width: 100%;
    height: 100%;
    border-radius: 999px;
    object-fit: cover;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.6rem;
    font-weight: 700;
    color: var(--ph-brand-dark);
    background: var(--ph-surface-primary);
}

.ph-face-overlay {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.25rem;
    border-radius: 999px;
    background: rgb(44 24 16) / 0.48);
    color: var(--ph-white);
    font-size: 0.75rem;
    font-weight: 600;
    opacity: 0;
    transition: opacity 0.15s ease;
    pointer-events: none;
}

.ph-face-badge {
    position: absolute;
    inset-inline-end: 0.1rem;
    bottom: 0.1rem;
    z-index: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 1.7rem;
    height: 1.7rem;
    border-radius: 999px;
    background: var(--ph-brand-primary);
    color: var(--ph-brand-on-primary);
    box-shadow: 0 1px 4px rgb(44 24 16) / 0.22);
    pointer-events: none;
}

.ph-face-badge .ph-icon {
    width: 0.85rem;
    height: 0.85rem;
    color: var(--ph-brand-on-primary);
}

.ph-face-frame:hover .ph-face-overlay,
.ph-face-frame:focus-within .ph-face-overlay {
    opacity: 1;
}

.ph-face-overlay .ph-icon {
    width: 1.35rem;
    height: 1.35rem;
    color: var(--ph-white);
}

.ph-face-input {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.ph-face-meta {
    min-width: 12rem;
    flex: 1 1 14rem;
}

.ph-face-meta .ph-label {
    margin-bottom: 0.35rem;
}

.ph-face-meta .ph-alert-warn {
    margin: 0.5rem 0 0;
}

.ph-face-lead {
    margin-bottom: 1.35rem;
    padding-bottom: 1.25rem;
    border-bottom: 1px solid var(--ph-border);
}

.ph-profile-block {
    display: grid;
    gap: 1.25rem;
}

@media (min-width: 800px) {
    .ph-profile-block {
        grid-template-columns: minmax(16rem, 0.9fr) minmax(0, 1.2fr);
        align-items: start;
    }
}

.ph-face-form .ph-actions {
    margin-top: 0.85rem;
}

.ph-sub-head {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 1rem;
    align-items: flex-start;
}

.ph-sub-head h2 {
    margin: 0;
    font-size: 1.45rem;
}

.ph-sub-status {
    text-align: start;
}

.ph-sub-remain {
    margin: 0.45rem 0 0;
    font-size: 1.15rem;
    font-weight: 700;
}

.ph-sub-facts {
    display: grid;
    gap: 0.85rem;
    margin: 1.1rem 0 1.35rem;
}

@media (min-width: 720px) {
    .ph-sub-facts {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

.ph-sub-facts dt {
    margin: 0 0 0.2rem;
    font-size: 0.75rem;
    font-weight: 700;
    color: var(--ph-neutral-700);
}

.ph-sub-facts dd {
    margin: 0;
    font-weight: 600;
}

.ph-order-slip {
    max-width: 22rem;
    margin: 0.75rem 0 0;
    padding: 0;
    background: var(--ph-surface-warm);
    border: 1px solid var(--ph-border);
    border-radius: var(--ph-radius-md);
    overflow: hidden;
}

.ph-order-slip img {
    display: block;
    width: 100%;
    height: auto;
}

.ph-order-slip figcaption {
    padding: 0.65rem 0.85rem;
    font-size: 0.85rem;
}

.ph-sub-features {
    display: grid;
    gap: 0.45rem;
    margin: 0 0 1rem;
    padding: 0;
    list-style: none;
}

@media (min-width: 720px) {
    .ph-sub-features {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

.ph-sub-features li {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.55rem 0.75rem;
    border: 1px solid var(--ph-border);
    border-radius: var(--ph-radius-md);
    background: var(--ph-surface-beige);
}

.ph-sub-features .ph-icon {
    width: 1.05rem;
    height: 1.05rem;
    color: var(--ph-success);
}

.ph-home-sub {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 0.85rem;
    align-items: center;
    margin: 0 0 1.25rem;
}

.ph-home-sub.is-warn {
    border-color: var(--ph-warning);
    background: var(--ph-warning-bg);
}

.ph-home-sub.is-off {
    border-color: var(--ph-border-strong);
}

.ph-home-sub-copy h2 {
    margin: 0 0 0.25rem;
    font-size: 1.1rem;
}

.ph-home-sub-copy p {
    margin: 0;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.45rem;
    color: var(--ph-neutral-700);
    font-size: 0.9rem;
}

.ph-iran-place { grid-column: 1 / -1; }

.ph-iran-place-cities {
    list-style: none;
    margin: 0.35rem 0 0;
    padding: 0.25rem;
    max-height: 12rem;
    overflow: auto;
    border: 1px solid var(--ph-border);
    border-radius: var(--ph-radius-md);
    background: var(--ph-white);
}

.ph-main .ph-iran-place-cities button {
    width: 100%;
    justify-content: flex-start;
    background: transparent;
    color: var(--ph-neutral-950);
    border: 0;
    border-radius: var(--ph-radius-sm);
    padding: 0.4rem 0.6rem;
    min-height: 40px;
}

.ph-main .ph-iran-place-cities button:hover,
.ph-main .ph-iran-place-cities button.is-active {
    background: var(--ph-surface-primary);
    color: var(--ph-brand-dark);
}

.ph-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    align-items: center;
}

.ph-icon {
    width: 1.15rem;
    height: 1.15rem;
    stroke: currentColor;
    fill: none;
    stroke-width: 1.75;
    stroke-linecap: round;
    stroke-linejoin: round;
    flex-shrink: 0;
    vertical-align: -0.15em;
}

[dir="rtl"] .ph-icon-flip {
    transform: scaleX(-1);
}

.nav-link .ph-icon {
    color: var(--ph-brand-gold-deep);
}

.nav-link-active .ph-icon,
.nav-link:hover .ph-icon {
    color: var(--ph-brand-gold);
}

.ph-desk-heading {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.45rem;
}

.ph-desk-heading .ph-icon,
.ph-desk-panel-head h2 .ph-icon,
.ph-invoice-desk h2 .ph-icon {
    color: var(--ph-neutral-700);
}

.ph-desk-steps li.is-current .ph-icon,
.ph-desk-focus h2 .ph-icon,
.ph-desk-next .ph-desk-kicker .ph-icon {
    color: var(--ph-brand-primary-dark);
}

.ph-capacity-ok {
    border-color: var(--ph-brand-primary);
    background: var(--ph-surface-primary);
}

.ph-capacity-full {
    border-color: #e8c9c6;
    background: var(--ph-error-bg);
}

.ph-checkin-hero {
    display: grid;
    gap: 1rem;
    align-items: stretch;
    margin: 0 0 0.5rem;
}

.ph-desk-steps {
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin: 0 0 1rem;
    padding: 0;
}

.ph-desk-steps li {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    min-height: 44px;
    padding: 0.35rem 0.85rem;
    border-radius: 999px;
    border: 1px solid var(--ph-border);
    background: var(--ph-surface);
    color: var(--ph-neutral-700);
    font-size: 0.9rem;
}

.ph-desk-steps li span {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.5rem;
    height: 1.5rem;
    border-radius: 999px;
    background: var(--ph-neutral-100);
    font-weight: 700;
}

.ph-desk-steps li.is-current {
    border-color: var(--ph-brand-primary);
    background: var(--ph-surface-primary);
    color: var(--ph-neutral-950);
    font-weight: 600;
}

.ph-desk-steps li.is-current span,
.ph-desk-steps li.is-done span {
    background: var(--ph-brand-primary);
    color: var(--ph-brand-on-primary);
}

.ph-desk-steps li:nth-child(3n+2).is-current span,
.ph-desk-steps li:nth-child(3n+2).is-done span {
    background: var(--ph-brand-lime);
    color: var(--ph-white);
}

.ph-desk-steps li:nth-child(3n).is-current span,
.ph-desk-steps li:nth-child(3n).is-done span {
    background: var(--ph-brand-teal);
    color: var(--ph-white);
}

.ph-desk-steps li.is-done {
    color: var(--ph-neutral-950);
}

.ph-desk-kicker {
    margin: 0 0 0.35rem;
    font-size: 0.75rem;
    font-weight: 700;
    color: var(--ph-brand-coral);
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
}

.ph-desk-guide ol {
    margin: 0;
    padding: 0;
    color: var(--ph-neutral-700);
    display: grid;
    gap: 0.4rem;
    list-style: none;
}

.ph-desk-guide ol li {
    display: flex;
    align-items: flex-start;
    gap: 0.4rem;
}

.ph-desk-wait-count {
    margin: 0.75rem 0 0;
    font-weight: 600;
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
}

.ph-desk-next {
    border-color: var(--ph-brand-primary);
    background: var(--ph-surface-primary);
}

.ph-desk-next h2 {
    margin-bottom: 0.35rem;
}

.ph-desk-next-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.6rem;
    align-items: center;
}

.ph-desk-grid {
    display: grid;
    gap: 1rem;
}

@media (min-width: 960px) {
    .ph-desk-grid {
        grid-template-columns: 1fr 1fr;
        align-items: start;
    }
}

.ph-desk-panel {
    margin-top: 0;
}

.ph-desk-panel-head {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    margin-bottom: 0.75rem;
}

.ph-desk-panel-head h2 {
    margin: 0;
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
}

.ph-desk-search {
    margin-bottom: 0.75rem;
}

.ph-desk-search input[data-desk-q] {
    flex: 1 1 12rem;
    min-width: 0;
}

.ph-desk-suggest {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin: 0.35rem 0 0.75rem;
}

.ph-desk-suggest-chip {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    border: 1px solid var(--ph-border);
    background: var(--ph-surface);
    border-radius: var(--ph-radius-md);
    padding: 0.4rem 0.7rem;
    cursor: pointer;
    font: inherit;
    color: inherit;
}

.ph-desk-suggest-chip:hover,
.ph-desk-suggest-chip:focus-visible {
    border-color: var(--ph-brand);
    outline: none;
}

.ph-desk-skeleton {
    display: grid;
    gap: 0.65rem;
}

.ph-desk-skeleton > div {
    height: 3.25rem;
    border-radius: var(--ph-radius-md);
    background: linear-gradient(90deg, var(--ph-surface-warm) 25%, var(--ph-border) 50%, var(--ph-surface-warm) 75%);
    background-size: 200% 100%;
    animation: ph-desk-shimmer 1.1s ease-in-out infinite;
}

@media (prefers-reduced-motion: reduce) {
    .ph-desk-skeleton > div {
        animation: none;
    }
}

@keyframes ph-desk-shimmer {
    0% { background-position: 100% 0; }
    100% { background-position: -100% 0; }
}

.ph-desk-row-main {
    display: grid;
    gap: 0.35rem;
    min-width: 0;
    flex: 1 1 12rem;
}

.ph-desk-row.is-keyboard {
    border-color: var(--ph-brand-primary);
    box-shadow: 0 0 0 3px var(--ph-focus-ring);
    outline: none;
}

.ph-desk-row[data-desk-result-row]:focus-visible,
.ph-desk-suggest-chip:focus-visible,
.ph-invoice-tab:focus-visible,
.ph-invoice-picks button:focus-visible,
.ph-invoice-qty button:focus-visible,
[data-invoice-close]:focus-visible,
[data-enter-close]:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px var(--ph-focus-ring);
}

.ph-desk-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 0.65rem;
}

.ph-desk-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.65rem 0.75rem;
    border: 1px solid var(--ph-border);
    border-radius: var(--ph-radius-md);
    background: var(--ph-surface-warm);
}

.ph-desk-row-meta,
.ph-desk-row-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
}

.ph-desk-elapsed {
    font-weight: 700;
    color: var(--ph-neutral-950);
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
}

.ph-desk-confirm {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
}

.ph-desk-confirm p {
    margin: 0;
    width: 100%;
    font-size: 0.9rem;
}

.ph-person {
    display: flex;
    align-items: center;
    gap: 0.7rem;
    min-width: 0;
}

.ph-person-photo {
    width: 2.75rem;
    height: 2.75rem;
}

.ph-person-text {
    min-width: 0;
}

.ph-person-text strong {
    display: block;
}

.ph-person-text p {
    margin: 0.15rem 0 0;
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    align-items: center;
    color: var(--ph-neutral-700);
    font-size: 0.85rem;
}

.ph-desk-capacity summary {
    cursor: pointer;
    font-weight: 600;
    display: flex;
    align-items: center;
    gap: 0.4rem;
}

.ph-desk-capacity form {
    margin-top: 0.85rem;
}

.ph-desk-focus {
    border-color: var(--ph-brand-primary);
    box-shadow: 0 0 0 3px var(--ph-focus-ring);
}

.ph-desk {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.ph-desk [data-desk-live] {
    display: contents;
}

.ph-desk-status {
    order: 1;
}

.ph-desk-search-card {
    order: 2;
    margin: 0;
}

.ph-desk-lists {
    order: 3;
}

.ph-desk-next {
    order: 0;
    margin: 0;
}

.ph-desk-capacity {
    order: 5;
    margin: 0;
}

.ph-desk-recent {
    order: 4;
    margin: 0;
}

.ph-desk.is-busy {
    opacity: 0.72;
    pointer-events: none;
}

.ph-desk .ph-desk-search {
    margin-bottom: 0.75rem;
}

.ph-desk .ph-desk-search input[type="search"] {
    min-height: 3.25rem;
    font-size: 1.05rem;
}

.ph-desk-status {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.75rem 1.25rem;
    padding: 0.85rem 1.1rem;
    border: 1px solid var(--ph-border);
    border-radius: var(--ph-radius-lg);
    background: var(--ph-surface-primary);
}

.ph-desk-status.is-full {
    border-color: #e8c9c6;
    background: var(--ph-error-bg);
}

.ph-desk-status-main {
    flex: 1 1 12rem;
    min-width: 0;
    display: grid;
    gap: 0.4rem;
}

.ph-desk-status-count,
.ph-desk-status-wait {
    margin: 0;
    font-weight: 700;
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
}

.ph-desk-status-date {
    margin-inline-start: auto;
    color: var(--ph-neutral-700);
    font-size: 0.9rem;
}

.ph-desk-meter {
    height: 0.45rem;
    background: var(--ph-neutral-100);
    border-radius: 999px;
    overflow: hidden;
}

.ph-desk-meter > span {
    display: block;
    height: 100%;
    background: var(--ph-brand-lime);
    border-radius: inherit;
}

.ph-desk-status.is-full .ph-desk-meter > span {
    background: var(--ph-error);
}

.ph-desk-lists {
    display: grid;
    gap: 1rem;
}

@media (min-width: 960px) {
    .ph-desk-lists.has-wait {
        grid-template-columns: 1fr 1fr;
        align-items: start;
    }
}

.ph-desk-lists .ph-desk-panel {
    margin: 0;
}

.ph-desk-scroll {
    max-height: min(28rem, 58vh);
    overflow: auto;
}

/* Inside-hall list scrolls with the page (Phase 3); search results may still use .ph-desk-scroll. */
[data-desk-inside-list].ph-desk-scroll,
[data-desk-inside-list] {
    max-height: none;
    overflow: visible;
}

.ph-desk-row.is-long {
    border-color: color-mix(in srgb, var(--ph-warning) 55%, var(--ph-border));
}

.ph-desk-row.is-stale {
    border-color: color-mix(in srgb, var(--ph-error) 65%, var(--ph-border));
    box-shadow: inset 0.28rem 0 0 var(--ph-error);
}

.ph-desk-estimate {
    font-variant-numeric: tabular-nums;
    color: var(--ph-neutral-700);
}

.ph-desk-adjust {
    display: grid;
    gap: 0.45rem;
    width: min(100%, 16rem);
}

.ph-desk-recent.is-open {
    padding-top: 0.85rem;
}

.ph-desk-recent-more {
    margin-top: 0.75rem;
}

.ph-desk-recent-more summary {
    cursor: pointer;
    font-weight: 600;
    color: var(--ph-brand);
}

.ph-desk-row.is-ready {
    border-color: var(--ph-brand-primary);
    background: var(--ph-surface-primary);
    box-shadow: 0 0 0 3px var(--ph-focus-ring);
}

.ph-desk-filter {
    margin: 0 0 0.75rem;
}

.ph-desk-filter input {
    min-height: 2.75rem;
}

.ph-desk-recent summary {
    cursor: pointer;
    font-weight: 600;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
}

.ph-desk-recent summary .ph-icon {
    color: var(--ph-neutral-700);
}

.ph-desk-recent .ph-desk-list {
    margin-top: 0.85rem;
}

.ph-invoice-hero {
    display: grid;
    gap: 1rem;
}

@media (min-width: 800px) {
    .ph-invoice-hero {
        grid-template-columns: 1fr 1.2fr;
        align-items: stretch;
    }
}

.ph-invoice-totals p {
    margin: 0.25rem 0;
    color: var(--ph-neutral-700);
}

.ph-invoice-balance {
    font-size: 1.05rem;
    color: var(--ph-neutral-950);
}

.ph-invoice-desk-page {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.ph-invoice-desk-page.is-busy {
    opacity: 0.72;
    pointer-events: none;
}

.ph-invoice-who {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.75rem;
}

.ph-invoice-who h2 {
    margin: 0.15rem 0 0;
    font-size: 1.25rem;
}

.ph-invoice-who .ph-btn-ghost {
    margin-inline-start: auto;
}

.ph-invoice-take {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    margin: 0;
    position: sticky;
    top: 0;
    z-index: 6;
}

.ph-invoice-take.is-ready {
    border-color: var(--ph-brand-primary);
    box-shadow: 0 0 0 3px var(--ph-focus-ring);
}

.ph-invoice-take-amount {
    margin: 0.15rem 0 0;
    font-size: 1.45rem;
    font-weight: 700;
}

.ph-invoice-take .ph-desk-next-actions {
    margin: 0;
}

.ph-invoice-take .ph-desk-next-actions .ph-btn,
.ph-invoice-take .ph-desk-next-actions button {
    min-height: 2.85rem;
}

.ph-invoice-work {
    display: grid;
    gap: 1rem;
}

@media (min-width: 960px) {
    .ph-invoice-work {
        grid-template-columns: minmax(0, 1.2fr) minmax(17rem, 0.8fr);
        align-items: start;
    }
}

.ph-invoice-bill h2,
.ph-invoice-add h2 {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    font-size: 1.05rem;
}

.ph-invoice-add {
    display: grid;
    gap: 1rem;
}

.ph-invoice-picks {
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem;
    margin-bottom: 0.75rem;
}

.ph-invoice-picks form {
    margin: 0;
}

.ph-invoice-picks button {
    min-height: 2.6rem;
    padding: 0.35rem 0.7rem;
    display: inline-flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.1rem;
    font-size: 0.85rem;
    white-space: normal;
    text-align: start;
}

.ph-invoice-pays {
    margin: 0.75rem 0 0;
    padding: 0;
    list-style: none;
    color: var(--ph-neutral-700);
    font-size: 0.85rem;
}

.ph-invoice-discount,
.ph-invoice-more form {
    display: grid;
    gap: 0.65rem;
    margin-top: 0.85rem;
}

.ph-invoice-more summary,
.ph-invoice-danger summary {
    cursor: pointer;
    font-weight: 600;
}

.ph-invoice-danger {
    color: var(--ph-neutral-700);
}

.ph-invoice-desk h2 {
    display: flex;
    align-items: center;
    gap: 0.45rem;
}

.ph-invoice-desk h2 .ph-help {
    margin-inline-start: auto;
}

@media (min-width: 960px) {
    .ph-invoice-desk:not(.is-drawer) {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        align-items: start;
    }

    .ph-invoice-pay {
        grid-column: 1 / -1;
    }
}

.ph-invoice-drawer-overlay {
    position: fixed;
    inset: 0;
    z-index: 75;
    display: flex;
    justify-content: flex-end;
    background: rgb(44 24 16 / 0.42);
}

.ph-invoice-drawer-overlay[hidden] {
    display: none !important;
}

.ph-invoice-drawer-panel {
    display: flex;
    flex-direction: column;
    width: min(100%, 560px);
    max-width: 560px;
    height: 100%;
    border-inline-end: 1px solid var(--ph-border);
    background: var(--ph-neutral-50);
    box-shadow: var(--ph-shadow-md);
    overflow: hidden;
}

.ph-invoice-drawer-panel .ph-invoice-desk-page {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding: 1rem;
}

.ph-invoice-desk.is-drawer {
    display: flex;
    flex-direction: column;
    gap: 0.85rem;
}

.ph-invoice-lines {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 0.65rem;
}

.ph-invoice-line {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.55rem;
    padding: 0.65rem 0;
    border-bottom: 1px solid var(--ph-border);
}

.ph-invoice-line:last-child {
    border-bottom: 0;
}

.ph-invoice-line-main {
    display: grid;
    gap: 0.15rem;
    min-width: 0;
    flex: 1 1 12rem;
}

.ph-invoice-qty {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
}

.ph-invoice-qty form {
    margin: 0;
}

.ph-invoice-qty button {
    min-width: 2rem;
    padding-inline: 0.45rem;
}

.ph-invoice-tabs {
    display: grid;
    gap: 0.65rem;
}

.ph-invoice-tablist {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
}

.ph-invoice-tab {
    border: 1px solid var(--ph-border);
    border-radius: var(--ph-radius-pill);
    background: var(--ph-surface);
    color: var(--ph-neutral-800);
    padding: 0.35rem 0.85rem;
    min-height: 44px;
    font: inherit;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
}

.ph-invoice-tab.is-active {
    border-color: var(--ph-brand-primary);
    background: var(--ph-brand-primary-soft);
    color: var(--ph-brand-primary);
    font-weight: 600;
}

.ph-invoice-tabpanel {
    margin: 0;
}

.ph-invoice-sticky {
    position: sticky;
    bottom: 0;
    z-index: 8;
    display: grid;
    gap: 0.65rem;
    margin-top: 0.35rem;
    padding: 0.85rem 0 0.25rem;
    border-top: 1px solid var(--ph-border);
    background: linear-gradient(to top, var(--ph-neutral-50) 78%, rgb(250 248 245 / 0));
}

.ph-invoice-sticky.is-ready {
    border-top-color: var(--ph-brand-primary);
}

.ph-invoice-sticky.is-settled {
    position: static;
    border-top: 0;
    padding-top: 0;
    background: none;
}

.ph-invoice-sticky-totals {
    display: grid;
    gap: 0.2rem;
    font-size: 0.92rem;
    color: var(--ph-neutral-700);
}

.ph-invoice-sticky-due {
    margin: 0.15rem 0 0;
    font-size: 1rem;
    color: var(--ph-neutral-950);
}

.ph-flash-seed[hidden] {
    display: none !important;
}

body.ph-invoice-drawer-open {
    overflow: hidden;
}

@media (max-width: 767px) {
    .ph-invoice-drawer-panel {
        width: 100%;
        max-width: none;
    }
}

@media (prefers-reduced-motion: reduce) {
    .ph-invoice-drawer-overlay,
    .ph-invoice-drawer-panel {
        transition: none !important;
    }
}

.ph-home-hero {
    display: grid;
    gap: 1.25rem;
    align-items: start;
}

.ph-home-hero-copy {
    min-width: 0;
}

@media (min-width: 900px) {
    .ph-home-hero {
        grid-template-columns: minmax(0, 1.2fr) minmax(16rem, 1fr);
    }
}

.ph-public-home .ph-home-hero {
    display: flex;
    grid-template-columns: none;
}

.ph-public-home .ph-home-hero.is-slideshow {
    display: flex;
    flex-direction: column;
}

.ph-home-hero-copy .ph-lead {
    margin-bottom: 0.75rem;
}

.ph-home-date {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    margin: 0.65rem 0 0.35rem;
    color: var(--ph-neutral-700);
    font-weight: 600;
}

.ph-home-search .ph-toolbar {
    margin-bottom: 0;
}

.ph-home-actions {
    display: grid;
    gap: 0.85rem;
    margin: 0 0 1.25rem;
}

@media (min-width: 720px) {
    .ph-home-actions {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (min-width: 1100px) {
    .ph-home-actions {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

a.ph-home-action {
    display: flex;
    align-items: center;
    gap: 0.85rem;
    min-height: 5.5rem;
    padding: 1rem 1.1rem;
    background: var(--ph-surface);
    border: 1px solid var(--ph-border);
    border-radius: var(--ph-radius-lg);
    box-shadow: var(--ph-shadow-sm);
    color: var(--ph-neutral-950);
    text-decoration: none;
}

a.ph-home-action .ph-icon {
    width: 1.6rem;
    height: 1.6rem;
    color: var(--ph-brand-primary-dark);
}

a.ph-home-action strong,
a.ph-home-more-link strong {
    display: block;
    font-size: 1.05rem;
}

a.ph-home-action small,
a.ph-home-more-link small {
    display: block;
    margin-top: 0.2rem;
    color: var(--ph-neutral-700);
    font-size: 0.82rem;
    line-height: 1.45;
}

a.ph-home-action:hover,
a.ph-home-more-link:hover {
    border-color: var(--ph-brand-primary);
    background: var(--ph-surface-warm);
}

.ph-home-action-primary {
    border-color: var(--ph-brand-primary);
    background: var(--ph-surface-primary);
}

.ph-home-kpis {
    display: grid;
    gap: 0.85rem;
    margin: 0 0 1.5rem;
}

@media (min-width: 720px) {
    .ph-home-kpis {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (min-width: 1100px) {
    .ph-home-kpis {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

.ph-home-kpis:has(> :only-child) {
    grid-template-columns: minmax(14rem, 22rem);
}

.ph-home-kpi {
    background: var(--ph-surface);
    border: 1px solid var(--ph-border);
    border-radius: var(--ph-radius-lg);
    padding: 1rem 1.1rem;
    box-shadow: var(--ph-shadow-sm);
}

.ph-home-kpi.is-full {
    border-color: #e8c9c6;
    background: var(--ph-error-bg);
}

.ph-home-kpi.is-warn {
    border-color: #ead8b0;
    background: var(--ph-warning-bg);
}

.ph-home-kpi-value {
    margin: 0.15rem 0 0.2rem;
    font-size: 1.45rem;
    font-weight: 700;
    line-height: 1.2;
    color: var(--ph-neutral-950);
}

.ph-home-kpi > p:last-child {
    margin: 0;
    color: var(--ph-neutral-700);
    font-size: 0.85rem;
}

.ph-home-more {
    display: grid;
    gap: 0.75rem;
}

@media (min-width: 720px) {
    .ph-home-more {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (min-width: 1100px) {
    .ph-home-more {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

a.ph-home-more-link {
    display: flex;
    align-items: center;
    gap: 0.7rem;
    min-height: 4.25rem;
    padding: 0.85rem 1rem;
    background: var(--ph-surface);
    border: 1px solid var(--ph-border);
    border-radius: var(--ph-radius-lg);
    color: var(--ph-neutral-950);
    text-decoration: none;
}

a.ph-home-more-link .ph-icon {
    color: var(--ph-neutral-700);
}

.ph-print-body {
    min-height: 100dvh;
    margin: 0;
    background: var(--ph-neutral-50);
}

.ph-print-bar {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0.5rem;
    padding: 0.85rem 1rem;
}

.ph-receipt {
    max-width: 22rem;
    margin: 0 auto 1.5rem;
    padding: 1.35rem 1.2rem 1.2rem;
    background: var(--ph-white);
    border: 1px solid var(--ph-border);
    border-radius: var(--ph-radius-lg);
    color: var(--ph-neutral-950);
}

.ph-receipt-brand {
    text-align: center;
}

.ph-receipt-logo {
    width: 4.25rem;
    height: 4.25rem;
    margin: 0 auto 0.65rem;
    border-radius: var(--ph-radius-lg);
    object-fit: cover;
    background: var(--ph-surface-primary);
}

.ph-receipt-brand h1 {
    margin: 0;
    font-size: 1.2rem;
    font-weight: 700;
    line-height: 1.45;
}

.ph-receipt-tag,
.ph-receipt-branch,
.ph-receipt-contact {
    margin: 0.2rem 0 0;
    color: var(--ph-neutral-700);
    font-size: 0.8rem;
    line-height: 1.55;
}

.ph-receipt-rule {
    border: 0;
    border-top: 1px dashed var(--ph-border);
    margin: 0.95rem 0;
}

.ph-receipt-kicker {
    margin: 0;
    text-align: center;
    font-size: 0.72rem;
    color: var(--ph-neutral-700);
}

.ph-receipt-status {
    margin: 0.15rem 0 0.75rem;
    text-align: center;
    font-size: 1rem;
    font-weight: 700;
}

.ph-receipt-meta,
.ph-receipt-totals {
    margin: 0;
}

.ph-receipt-meta > div,
.ph-receipt-totals > div {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 0.75rem;
    margin: 0.28rem 0;
    font-size: 0.82rem;
}

.ph-receipt-meta dt,
.ph-receipt-totals dt {
    color: var(--ph-neutral-700);
    font-weight: 500;
}

.ph-receipt-meta dd,
.ph-receipt-totals dd {
    margin: 0;
    text-align: end;
}

.ph-receipt-lines {
    width: 100%;
    margin: 0.85rem 0 0.35rem;
    border-collapse: collapse;
    font-size: 0.8rem;
}

.ph-receipt-lines th,
.ph-receipt-lines td {
    padding: 0.4rem 0;
    border-bottom: 1px solid var(--ph-border);
    vertical-align: top;
}

.ph-receipt-lines th:nth-child(2),
.ph-receipt-lines td:nth-child(2),
.ph-receipt-lines th:nth-child(3),
.ph-receipt-lines td:nth-child(3) {
    text-align: end;
    white-space: nowrap;
}

.ph-receipt-line-name {
    display: block;
}

.ph-receipt-line-kind {
    display: block;
    color: var(--ph-neutral-700);
    font-size: 0.7rem;
}

.ph-receipt-totals {
    margin-top: 0.55rem;
}

.ph-receipt-totals .is-total {
    margin-top: 0.45rem;
    padding-top: 0.45rem;
    border-top: 1px dashed var(--ph-border);
    font-size: 0.95rem;
    font-weight: 700;
}

.ph-receipt-totals .is-due {
    font-weight: 700;
}

.ph-receipt-foot {
    margin-top: 1rem;
    padding-top: 0.75rem;
    border-top: 1px dashed var(--ph-border);
    text-align: center;
    font-size: 0.8rem;
    color: var(--ph-neutral-700);
}

.ph-receipt-foot p {
    margin: 0.15rem 0;
}

.ph-receipt-head {
    text-align: center;
    margin-bottom: 1rem;
}

.ph-receipt-head h1 {
    margin: 0.2rem 0;
    font-size: 1.35rem;
}

@media print {
    .ph-print-body {
        background: #fff;
    }

    .ph-print-bar {
        display: none !important;
    }

    .ph-receipt {
        margin: 0 auto;
        border: 0;
        border-radius: 0;
        max-width: 80mm;
        padding: 0;
    }

    .ph-receipt-logo {
        print-color-adjust: exact;
        -webkit-print-color-adjust: exact;
    }
}

@media (min-width: 900px) {
    .ph-checkin-hero {
        grid-template-columns: auto minmax(0, 1fr) minmax(0, 1fr);
        align-items: start;
    }

    .ph-checkin-hero > .ph-card,
    .ph-checkin-hero > .card {
        margin-top: 0;
        margin-bottom: 0;
        height: 100%;
    }
}

.ph-today {
    display: flex;
    flex-direction: column;
    width: 10.75rem;
    margin: 0.75rem auto;
    padding: 0.4rem 0.4rem 0.5rem;
    border-radius: var(--ph-radius-xl);
    background: var(--ph-brand-dark);
    box-shadow: var(--ph-shadow-md);
    color: var(--ph-white);
    text-align: center;
    position: relative;
}

@media (min-width: 900px) {
    .ph-today { margin: 0; }
}

.ph-today-rings {
    display: flex;
    justify-content: center;
    gap: 2.35rem;
    position: absolute;
    top: 0.12rem;
    right: 0;
    left: 0;
    z-index: 1;
}

.ph-today-rings span {
    width: 0.72rem;
    height: 0.72rem;
    border-radius: 999px;
    background: var(--ph-brand-primary);
    box-shadow: inset 0 0 0 2px var(--ph-brand-dark);
}

.ph-today-year {
    display: block;
    background: var(--ph-brand-coral);
    border-radius: var(--ph-radius-md) var(--ph-radius-md) 0 0;
    padding: 0.9rem 0.4rem 0.4rem;
    font-weight: 700;
    font-size: 1rem;
    letter-spacing: 0.08em;
}

.ph-today-page {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    background: linear-gradient(180deg, var(--ph-white), var(--ph-surface-beige));
    color: var(--ph-neutral-950);
    border-radius: 0 0 var(--ph-radius-md) var(--ph-radius-md);
    padding: 0.55rem 0.45rem 0.75rem;
    box-shadow: 0 3px 0 var(--ph-neutral-200), 0 6px 0 var(--ph-neutral-100);
}

.ph-today-month,
.ph-today-weekday {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--ph-neutral-700);
}

.ph-today-day {
    font-size: 2.7rem;
    font-weight: 700;
    line-height: 1.05;
    color: var(--ph-neutral-950);
}

.ph-catalog {
    display: grid;
    gap: 1rem;
    align-items: start;
}

@media (min-width: 900px) {
    .ph-catalog {
        grid-template-columns: minmax(14rem, 18rem) minmax(0, 1fr);
    }
}

.ph-tree {
    padding: 0.85rem 0.9rem 1rem;
}

.ph-tree-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    margin-bottom: 0.65rem;
}

.ph-tree-head h2 {
    margin: 0;
    font-size: 0.95rem;
}

.ph-tree-list,
.ph-tree-list ul {
    list-style: none;
    margin: 0;
    padding: 0;
}

.ph-tree-list ul {
    margin-top: 0.15rem;
    padding-inline-start: 0.85rem;
    border-inline-start: 1px solid var(--ph-border);
}

.ph-tree-link {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    width: 100%;
    min-height: 2.4rem;
    padding: 0.3rem 0.55rem;
    border-radius: var(--ph-radius-md);
    color: var(--ph-neutral-950);
    text-decoration: none;
    font-size: 0.9rem;
}

.ph-tree-link .ph-icon {
    width: 1rem;
    height: 1rem;
    color: var(--ph-neutral-500);
    flex-shrink: 0;
}

.ph-tree-link:hover,
.ph-tree-link:focus-visible {
    background: var(--ph-surface-primary);
}

.ph-tree-link.is-current {
    background: var(--ph-surface-primary);
    font-weight: 600;
}

.ph-tree-link.is-current .ph-icon {
    color: var(--ph-brand-primary-dark);
}

.ph-catalog-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    justify-content: space-between;
    gap: 0.75rem;
    margin-bottom: 1rem;
}

.ph-catalog-toolbar .ph-desk-kicker {
    margin: 0;
}

.ph-row-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    justify-content: flex-end;
}

.ph-row-actions form {
    margin: 0;
}

.ph-row-actions button,
.ph-row-actions .ph-btn,
.ph-row-actions .ph-btn-ghost {
    min-height: 2.4rem;
    padding: 0.3rem 0.65rem;
    font-size: 0.8rem;
}

.ph-tree-node {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.45rem 0.7rem;
    padding: 0.65rem 0;
    border-bottom: 1px solid var(--ph-border);
}

.ph-tree-node:last-child {
    border-bottom: 0;
}

.ph-tree-node-main {
    flex: 1 1 12rem;
    min-width: 0;
}

.ph-tree-node-main strong {
    display: block;
}

.ph-tree-path {
    margin: 0.15rem 0 0;
    color: var(--ph-neutral-500);
    font-size: 0.8rem;
}

.ph-tree-children {
    flex-basis: 100%;
    margin: 0;
    padding: 0;
    padding-inline-start: 0.9rem;
    list-style: none;
    border-inline-start: 1px solid var(--ph-border);
}

.ph-menu-tree {
    margin: 0;
}

.ph-menu-tree > li + li {
    margin-top: 0.15rem;
}

.ph-menu-tree .ph-tree-branch {
    border-bottom: 1px solid var(--ph-border);
}

.ph-menu-tree .ph-tree-branch > .ph-tree-summary {
    display: block;
    cursor: pointer;
    list-style: none;
}

.ph-menu-tree .ph-tree-branch > .ph-tree-summary::-webkit-details-marker,
.ph-menu-tree .ph-tree-branch > .ph-tree-summary::marker {
    display: none;
    content: none;
}

.ph-menu-tree .ph-tree-branch > .ph-tree-summary .ph-tree-node {
    border-bottom: 0;
}

.ph-menu-tree .ph-tree-twist {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.35rem;
    height: 1.35rem;
    color: var(--ph-neutral-500);
    flex-shrink: 0;
    transition: transform 0.15s ease;
}

.ph-menu-tree .ph-tree-twist .ph-icon {
    width: 1rem;
    height: 1rem;
}

.ph-menu-tree .ph-tree-twist.is-leaf {
    visibility: hidden;
}

.ph-menu-tree .ph-tree-branch:not([open]) .ph-tree-twist {
    transform: rotate(90deg);
}

.ph-menu-tree .ph-tree-node {
    flex-wrap: nowrap;
    gap: 0.4rem 0.55rem;
    padding: 0.45rem 0.15rem;
}

.ph-menu-tree .ph-tree-node.is-off {
    opacity: 0.55;
}

.ph-menu-tree .ph-tree-node-main strong {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.95rem;
}

.ph-menu-tree .ph-tree-count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.2rem;
    padding: 0 0.3rem;
    border-radius: 999px;
    background: var(--ph-neutral-100);
    color: var(--ph-neutral-500);
    font-size: 0.7rem;
    font-weight: 600;
}

.ph-menu-tree .ph-tree-path {
    margin: 0.1rem 0 0;
    font-size: 0.75rem;
}

.ph-menu-tree .ph-tree-actions {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    gap: 0.15rem;
    margin-inline-start: auto;
}

.ph-menu-tree .ph-tree-actions form {
    margin: 0;
}

.ph-tree-icon,
.ph-main .ph-tree-icon,
.ph-main button.ph-tree-icon,
.ph-main a.ph-tree-icon,
.ph-main [type="submit"].ph-tree-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.85rem;
    min-width: 1.85rem;
    height: 1.85rem;
    min-height: 1.85rem;
    padding: 0;
    gap: 0;
    border: 0;
    border-radius: 0.45rem;
    background: transparent;
    color: var(--ph-neutral-600);
    font-weight: 400;
    font-size: 0.85rem;
    box-shadow: none;
    transform: none;
    cursor: pointer;
    text-decoration: none;
}

.ph-tree-icon .ph-icon {
    width: 1rem;
    height: 1rem;
}

.ph-tree-icon:hover,
.ph-tree-icon:focus-visible,
.ph-main button.ph-tree-icon:hover,
.ph-main a.ph-tree-icon:hover,
.ph-main [type="submit"].ph-tree-icon:hover,
.ph-main button.ph-tree-icon:focus-visible,
.ph-main a.ph-tree-icon:focus-visible {
    background: var(--ph-neutral-100);
    color: var(--ph-neutral-950);
    border: 0;
    transform: none;
    box-shadow: none;
    outline: none;
}

.ph-tree-icon.is-danger,
.ph-main button.ph-tree-icon.is-danger {
    color: var(--ph-error);
    background: transparent;
}

.ph-tree-icon.is-danger:hover,
.ph-tree-icon.is-danger:focus-visible,
.ph-main button.ph-tree-icon.is-danger:hover,
.ph-main button.ph-tree-icon.is-danger:focus-visible {
    background: var(--ph-error-bg);
    color: var(--ph-error-dark);
}

.ph-tree-icon[aria-pressed="false"],
.ph-main button.ph-tree-icon[aria-pressed="false"] {
    color: var(--ph-neutral-400);
}

.ph-menu-tree .ph-tree-children {
    margin: 0 0 0.35rem;
    padding-inline-start: 1.15rem;
}

@media (max-width: 720px) {
    .ph-menu-tree .ph-tree-node {
        flex-wrap: wrap;
    }

    .ph-menu-tree .ph-tree-actions {
        flex-basis: 100%;
        justify-content: flex-end;
    }
}

#ph-ajax-progress {
    position: fixed;
    top: 0;
    right: 0;
    left: 0;
    z-index: 80;
    height: 3px;
    pointer-events: none;
    overflow: hidden;
    background: transparent;
}

#ph-ajax-progress.is-on {
    background: color-mix(in srgb, var(--ph-brand-primary) 25%, transparent);
}

#ph-ajax-progress.is-on::after {
    content: "";
    display: block;
    height: 100%;
    width: 35%;
    background: var(--ph-brand-primary);
    animation: ph-ajax-indeterminate 0.9s ease-in-out infinite;
}

#ph-app.is-busy {
    cursor: progress;
}

@keyframes ph-ajax-indeterminate {
    from {
        transform: translateX(120%);
    }

    to {
        transform: translateX(-280%);
    }
}

.ph-toasts {
    position: fixed;
    top: 1rem;
    left: 50%;
    z-index: 70;
    display: flex;
    flex-direction: column;
    gap: 0.55rem;
    width: min(calc(100% - 1.5rem), 26rem);
    transform: translateX(-50%);
    pointer-events: none;
}

.ph-toast {
    display: flex;
    align-items: flex-start;
    gap: 0.65rem;
    padding: 0.85rem 0.95rem;
    border-radius: var(--ph-radius-lg);
    border: 1px solid var(--ph-border);
    background: var(--ph-surface);
    box-shadow: var(--ph-shadow-md);
    color: var(--ph-neutral-950);
    pointer-events: auto;
    opacity: 0;
    transform: translateY(-0.45rem);
    transition: opacity 0.18s ease, transform 0.18s ease;
}

.ph-toast.is-in {
    opacity: 1;
    transform: translateY(0);
}

.ph-toast.is-out {
    opacity: 0;
    transform: translateY(-0.35rem);
}

.ph-toast-mark {
    flex-shrink: 0;
    width: 0.7rem;
    height: 0.7rem;
    margin-top: 0.35rem;
    border-radius: 999px;
    background: var(--ph-brand-primary);
}

.ph-toast-ok {
    border-color: #cfe0d5;
    background: var(--ph-success-bg);
}

.ph-toast-ok .ph-toast-mark {
    background: var(--ph-success);
}

.ph-toast-error {
    border-color: #e8c9c6;
    background: var(--ph-error-bg);
}

.ph-toast-error .ph-toast-mark {
    background: var(--ph-error);
}

.ph-toast-text {
    flex: 1;
    margin: 0;
    font-size: 0.92rem;
    line-height: 1.7;
}

.ph-toast-close {
    flex-shrink: 0;
    width: 1.7rem;
    height: 1.7rem;
    padding: 0;
    border: 0;
    border-radius: 999px;
    background: transparent;
    color: var(--ph-neutral-700);
    font-size: 1.15rem;
    line-height: 1;
    cursor: pointer;
}

.ph-toast-close:hover,
.ph-toast-close:focus-visible {
    background: var(--ph-surface-warm);
    color: var(--ph-neutral-950);
}

@media (prefers-reduced-motion: no-preference) {
    [data-desk-live] .ph-desk-list > .ph-desk-row:first-child {
        animation: ph-desk-enter 300ms ease-out;
    }
}

@keyframes ph-desk-enter {
    from {
        opacity: 0;
        transform: translateY(-0.4rem);
    }
    to {
        opacity: 1;
        transform: none;
    }
}

.ph-confirm-overlay {
    position: fixed;
    inset: 0;
    z-index: 65;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1.25rem;
    background: rgb(44 24 16 / 0.48);
}

.ph-enter-overlay {
    position: fixed;
    inset: 0;
    z-index: 70;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    background: rgb(44 24 16 / 0.48);
}

.ph-enter-overlay[hidden] {
    display: none !important;
}

.ph-enter-panel {
    width: min(100%, 32rem);
    max-height: min(92vh, 44rem);
    overflow: auto;
}

.ph-enter-dialog {
    border: 1px solid var(--ph-border);
    border-radius: var(--ph-radius-xl);
    background: var(--ph-surface);
    box-shadow: var(--ph-shadow-md);
    color: var(--ph-neutral-950);
    outline: none;
}

.ph-enter-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 1.1rem 1.15rem 0.75rem;
    border-bottom: 1px solid var(--ph-border);
}

.ph-enter-head h2 {
    margin: 0.15rem 0 0;
    font-size: 1.25rem;
}

.ph-enter-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin-top: 0.45rem;
    align-items: center;
}

.ph-enter-body {
    display: grid;
    gap: 1rem;
    padding: 1rem 1.15rem 1.2rem;
}

.ph-enter-section h3 {
    margin: 0 0 0.5rem;
    font-size: 0.95rem;
}

.ph-enter-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem;
    margin-bottom: 0.55rem;
}

.ph-enter-chip {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.3rem;
    border: 1px solid var(--ph-border);
    background: var(--ph-surface);
    border-radius: var(--ph-radius-md);
    padding: 0.45rem 0.7rem;
    cursor: pointer;
    font: inherit;
    color: inherit;
}

.ph-enter-chip.is-on,
.ph-btn.is-on {
    border-color: var(--ph-brand);
    box-shadow: 0 0 0 2px color-mix(in srgb, var(--ph-brand) 28%, transparent);
}

.ph-enter-new {
    display: grid;
    gap: 0.65rem;
    margin-top: 0.65rem;
}

.ph-enter-consent-box {
    display: flex;
    gap: 0.75rem;
    align-items: flex-start;
    border: 1px solid var(--ph-border);
    border-radius: var(--ph-radius-md);
    padding: 0.85rem 0.9rem;
    background: var(--ph-surface-warm);
    cursor: pointer;
}

.ph-enter-consent-box input {
    margin-top: 0.2rem;
    width: 1.15rem;
    height: 1.15rem;
    flex: 0 0 auto;
}

.ph-enter-consent-details {
    margin-top: 0.45rem;
}

.ph-enter-consent-details summary {
    cursor: pointer;
    color: var(--ph-brand);
}

.ph-enter-actions {
    display: grid;
    gap: 0.45rem;
}

.ph-enter-actions button:disabled {
    opacity: 0.55;
    cursor: not-allowed;
}

body.ph-enter-open {
    overflow: hidden;
}

@media (prefers-reduced-motion: reduce) {
    .ph-enter-overlay,
    .ph-enter-dialog {
        transition: none !important;
    }
}

.ph-confirm-overlay[hidden] {
    display: none !important;
}

.ph-confirm-dialog {
    width: min(100%, 26rem);
    padding: 1.45rem 1.4rem 1.3rem;
    border: 1px solid var(--ph-border);
    border-radius: var(--ph-radius-xl);
    background: var(--ph-surface);
    box-shadow: var(--ph-shadow-md);
    color: var(--ph-neutral-950);
    text-align: center;
}

.ph-confirm-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.6rem;
    height: 2.6rem;
    margin-bottom: 0.75rem;
    border-radius: 999px;
    background: var(--ph-error-bg);
    color: var(--ph-error);
}

.ph-confirm-icon[data-tone="default"] {
    background: var(--ph-warning-bg);
    color: var(--ph-warning);
}

.ph-confirm-icon[data-tone="danger"] .ph-confirm-icon-default,
.ph-confirm-icon[data-tone="default"] .ph-confirm-icon-danger {
    display: none;
}

.ph-confirm-icon .ph-icon {
    width: 1.25rem;
    height: 1.25rem;
}

.ph-confirm-dialog h2 {
    margin: 0;
    font-size: 1.15rem;
    line-height: 1.5;
}

.ph-confirm-dialog p {
    margin: 0.55rem 0 1.15rem;
    color: var(--ph-neutral-700);
    font-size: 0.92rem;
    line-height: 1.8;
}

.ph-confirm-actions {
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
    gap: 0.5rem;
}

body.ph-confirm-open {
    overflow: hidden;
}

@media print {
    .ph-tree,
    .ph-row-actions,
    .ph-catalog-toolbar,
    .ph-toasts,
    .ph-confirm-overlay,
    #ph-ajax-progress {
        display: none !important;
    }
}

.ph-auth-body {
    background: var(--ph-surface-warm);
}

.ph-auth-main {
    display: flex;
    align-items: center;
    min-height: calc(100dvh - 5.5rem);
    padding-block: 1.5rem;
}

.ph-auth {
    display: grid;
    gap: 1.25rem;
    width: 100%;
    align-items: stretch;
}

.ph-auth-card {
    order: -1;
    margin: 0;
    padding: 1.4rem 1.35rem 1.3rem;
}

.ph-auth-card > summary {
    cursor: pointer;
    list-style: none;
}

.ph-auth-card > summary::-webkit-details-marker {
    display: none;
}

.ph-auth-intro {
    background: var(--ph-surface-beige);
    border: 1px solid var(--ph-border);
    border-radius: var(--ph-radius-xl);
    padding: 1.45rem 1.4rem;
}

.ph-auth-intro .ph-brand {
    margin-bottom: 1.1rem;
}

.ph-auth-intro h1 {
    font-size: 1.45rem;
    line-height: 1.55;
    margin: 0 0 0.55rem;
}

.ph-auth-intro .ph-lead {
    margin-bottom: 0;
}

.ph-auth-points {
    list-style: none;
    margin: 1.2rem 0 0;
    padding: 0;
    display: grid;
    gap: 0.8rem;
}

.ph-auth-points li {
    display: flex;
    align-items: flex-start;
    gap: 0.55rem;
    color: var(--ph-neutral-700);
    font-size: 0.92rem;
    line-height: 1.75;
}

.ph-auth-points .ph-icon {
    color: var(--ph-brand-primary-dark);
    margin-top: 0.2rem;
}

.ph-auth-steps {
    margin-bottom: 1.1rem;
}

.ph-auth-card .ph-lead {
    margin-bottom: 1rem;
}

.ph-auth-card .ph-actions {
    margin-top: 0.25rem;
}

.ph-auth-card .ph-actions button,
.ph-auth-card .ph-actions [type="submit"] {
    width: 100%;
}

.ph-main input.ph-auth-otp {
    font-size: 1.45rem;
    font-weight: 700;
    letter-spacing: 0.42em;
    text-align: center;
    padding-inline: 0.65rem;
}

.ph-auth-timer {
    display: block;
    margin: 0 0 1rem;
    padding: 0.75rem 0.85rem 0.8rem;
    border: 1px solid var(--ph-border);
    border-radius: var(--ph-radius-md);
    background: var(--ph-surface-warm);
}

.ph-auth-timer-row {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    color: var(--ph-neutral-950);
    font-size: 0.92rem;
}

.ph-auth-timer-row .ph-icon {
    color: var(--ph-brand-primary-dark);
}

.ph-auth-timer-row .ph-num {
    margin-inline-start: auto;
    font-size: 1.15rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    font-variant-numeric: tabular-nums;
}

.ph-auth-timer-track {
    height: 4px;
    margin-top: 0.65rem;
    border-radius: 999px;
    background: var(--ph-neutral-200);
    overflow: hidden;
}

.ph-auth-timer-bar {
    display: block;
    height: 100%;
    border-radius: inherit;
    background: var(--ph-brand-primary);
    transition: width 1s linear;
}

.ph-auth-timer-expired {
    margin: 0.55rem 0 0;
    color: var(--ph-error);
    font-size: 0.85rem;
    line-height: 1.6;
}

.ph-auth-timer:not(.is-expired) .ph-auth-timer-expired {
    display: none;
}

.ph-auth-timer.is-urgent {
    border-color: #ead8b0;
    background: var(--ph-warning-bg);
}

.ph-auth-timer.is-urgent .ph-auth-timer-row .ph-icon,
.ph-auth-timer.is-urgent .ph-auth-timer-row .ph-num {
    color: var(--ph-warning);
}

.ph-auth-timer.is-urgent .ph-auth-timer-bar {
    background: var(--ph-warning);
}

.ph-auth-timer.is-expired {
    border-color: #e8c9c6;
    background: var(--ph-error-bg);
}

.ph-auth-timer.is-expired .ph-auth-timer-row .ph-icon,
.ph-auth-timer.is-expired .ph-auth-timer-row .ph-num {
    color: var(--ph-error);
}

.ph-auth-timer.is-expired .ph-auth-timer-bar {
    background: var(--ph-error);
    width: 0 !important;
    transition: none;
}

.ph-auth-card:has(.ph-auth-timer.is-expired) .ph-auth-alt form .ph-btn-ghost {
    background: var(--ph-brand-primary);
    border-color: var(--ph-brand-primary);
    color: var(--ph-brand-on-primary);
}

.ph-auth-alt {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-top: 1.1rem;
    padding-top: 1rem;
    border-top: 1px solid var(--ph-border);
}

.ph-auth-alt form {
    margin: 0;
    flex: 1 1 8rem;
}

.ph-auth-alt > a,
.ph-auth-alt button {
    width: 100%;
    flex: 1 1 8rem;
}

@media (min-width: 900px) {
    .ph-auth {
        grid-template-columns: minmax(0, 1.15fr) minmax(20rem, 24rem);
        gap: 1.75rem;
        align-items: stretch;
    }

    .ph-auth-card {
        order: 0;
        display: flex;
        flex-direction: column;
        justify-content: center;
    }

    .ph-auth-intro {
        display: flex;
        flex-direction: column;
        justify-content: center;
    }
}

.ph-auth-login {
    display: block;
    width: min(100%, 62rem);
    margin-inline: auto;
}

.ph-auth-shell {
    display: grid;
    overflow: hidden;
    border: 1px solid var(--ph-border);
    border-radius: var(--ph-radius-xl);
    background: var(--ph-white);
    box-shadow: var(--ph-shadow-sm);
}

.ph-auth-login .ph-auth-intro {
    position: relative;
    display: none;
    order: 2;
    overflow: hidden;
    border: 0;
    border-radius: 0;
    background:
        radial-gradient(circle at 12% 18%, color-mix(in srgb, var(--ph-brand-gold) 22%, transparent) 0 0.45rem, transparent 0.5rem),
        radial-gradient(circle at 88% 84%, color-mix(in srgb, var(--ph-brand-secondary) 18%, transparent) 0 0.65rem, transparent 0.7rem),
        linear-gradient(145deg, var(--ph-surface-beige), var(--ph-surface-warm));
}

.ph-auth-intro-copy {
    margin-block: auto;
}

.ph-auth-intro-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 3rem;
    height: 3rem;
    margin-bottom: 1rem;
    border-radius: 1rem;
    background: var(--ph-surface-primary);
    color: var(--ph-brand-primary-dark);
}

.ph-auth-intro-icon .ph-icon {
    width: 1.45rem;
    height: 1.45rem;
}

.ph-auth-login-panel {
    order: 1;
    padding: 1.35rem;
    background: var(--ph-white);
}

.ph-auth-login-head {
    margin-bottom: 1.15rem;
}

.ph-auth-login-head .ph-desk-kicker {
    margin-bottom: 0.45rem;
}

.ph-auth-login-head h2 {
    margin: 0;
    font-size: 1.3rem;
}

.ph-auth-login-head .ph-lead {
    margin: 0.55rem 0 0;
    font-size: 0.9rem;
    line-height: 1.7;
}

.ph-auth-login .ph-auth-steps {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.45rem;
    margin: 0 0 1.2rem;
}

.ph-auth-login .ph-auth-steps li {
    justify-content: center;
    min-width: 0;
    min-height: 2.5rem;
    padding: 0.4rem 0.55rem;
    white-space: nowrap;
}

.ph-auth-primary-form {
    display: grid;
    gap: 0.75rem;
}

.ph-auth-primary-form .ph-field {
    margin: 0;
}

.ph-auth-phone-field {
    position: relative;
}

.ph-auth-phone-field > .ph-icon {
    position: absolute;
    top: 50%;
    right: 0.9rem;
    z-index: 1;
    color: var(--ph-neutral-500);
    transform: translateY(-50%);
    pointer-events: none;
}

.ph-main .ph-auth-phone-field input {
    min-height: 3.15rem;
    padding-right: 2.75rem;
    font-size: 1rem;
    letter-spacing: 0.035em;
}

.ph-main button.ph-auth-submit {
    width: 100%;
    min-height: 3.15rem;
    margin-top: 0.1rem;
    justify-content: space-between;
    padding-inline: 1.15rem;
}

.ph-auth-tabs {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.35rem;
    margin-bottom: 1rem;
    padding: 0.3rem;
    border: 1px solid var(--ph-border);
    border-radius: 0.9rem;
    background: var(--ph-neutral-100);
}

.ph-main .ph-auth-tabs button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.42rem;
    min-height: 2.8rem;
    padding: 0.55rem 0.7rem;
    border: 1px solid transparent;
    border-radius: 0.7rem;
    background: transparent;
    color: var(--ph-neutral-700);
    box-shadow: none;
    font-size: 0.83rem;
    font-weight: 700;
}

.ph-main .ph-auth-tabs button:hover {
    color: var(--ph-brand-ink);
    background: color-mix(in srgb, var(--ph-white) 70%, transparent);
    transform: none;
}

.ph-main .ph-auth-tabs button.is-active {
    border-color: color-mix(in srgb, var(--ph-brand-primary) 34%, var(--ph-border));
    background: var(--ph-white);
    color: var(--ph-brand-primary-dark);
    box-shadow: 0 0.2rem 0.7rem color-mix(in srgb, var(--ph-brand-ink) 8%, transparent);
}

.ph-auth-tabs .ph-icon {
    width: 1rem;
    height: 1rem;
}

.ph-auth-tab-panel {
    min-width: 0;
}

.ph-auth-method-note {
    margin: 0 0 0.85rem;
    color: var(--ph-neutral-700);
    font-size: 0.83rem;
    line-height: 1.65;
}

.ph-auth-captcha-label {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.75rem;
}

.ph-auth-captcha-label > span {
    color: var(--ph-neutral-500);
    font-size: 0.72rem;
}

.ph-auth-captcha {
    display: grid;
    gap: 0.65rem;
}

.ph-auth-captcha-image {
    position: relative;
    overflow: hidden;
    width: min(100%, 17.5rem);
    border: 1px solid color-mix(in srgb, var(--ph-brand-primary) 32%, var(--ph-border));
    border-radius: 0.8rem;
    background: var(--ph-surface-warm);
}

.ph-auth-captcha-image img {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 35 / 11;
}

.ph-main button.ph-auth-captcha-refresh {
    position: absolute;
    inset: 0.45rem auto auto 0.45rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.15rem;
    min-height: 2.15rem;
    padding: 0;
    border: 1px solid color-mix(in srgb, var(--ph-brand-secondary) 45%, var(--ph-border));
    border-radius: 50%;
    background: color-mix(in srgb, var(--ph-white) 90%, transparent);
    color: var(--ph-brand-secondary-ink);
    box-shadow: 0 0.2rem 0.65rem color-mix(in srgb, var(--ph-brand-ink) 13%, transparent);
}

.ph-main button.ph-auth-captcha-refresh:hover {
    background: var(--ph-white);
    transform: rotate(-20deg);
}

.ph-main button.ph-auth-captcha-refresh:disabled {
    opacity: 0.55;
    cursor: wait;
}

.ph-auth-captcha-refresh .ph-icon {
    width: 1rem;
    height: 1rem;
}

.ph-main .ph-auth-captcha input[type="text"] {
    min-height: 3rem;
    text-align: center;
    text-transform: uppercase;
    letter-spacing: 0.24em;
    font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
    font-size: 1rem;
    font-weight: 800;
}

.ph-auth-captcha-error {
    margin: 0.45rem 0 0;
    color: var(--ph-error);
    font-size: 0.78rem;
}

@media (min-width: 520px) {
    .ph-auth-captcha {
        grid-template-columns: minmax(0, 1fr) 8.5rem;
        align-items: center;
    }
}

@media (min-width: 900px) {
    .ph-auth-shell {
        grid-template-columns: minmax(0, 1fr) minmax(21rem, 0.9fr);
        min-height: 34rem;
    }

    .ph-auth-login .ph-auth-intro,
    .ph-auth-login-panel {
        order: 0;
        padding: 2.25rem;
    }

    .ph-auth-login .ph-auth-intro {
        display: flex;
        border-inline-end: 1px solid var(--ph-border);
    }

    .ph-auth-login-panel {
        display: flex;
        flex-direction: column;
        justify-content: center;
    }
}

@media (prefers-reduced-motion: reduce) {
    .ph-main button.ph-auth-captcha-refresh:hover {
        transform: none;
    }
}

.ph-page-head {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    justify-content: space-between;
    gap: 0.75rem;
    margin: 0 0 1rem;
}

.ph-page-head h1 {
    margin: 0;
}

.ph-license-grid {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 1rem;
    grid-template-columns: repeat(auto-fill, minmax(18rem, 1fr));
}

.ph-license-card {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.ph-license-card-head {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 0.65rem;
}

.ph-license-card h2 {
    margin: 0;
    font-size: 1.05rem;
}

.ph-license-card .ph-desk-kicker {
    margin: 0.2rem 0 0;
}

.ph-feature-pills {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.ph-license-card .ph-row-actions {
    margin-top: auto;
    justify-content: flex-start;
}

.ph-license-card .ph-empty {
    margin: 0;
}

.ph-entity-grid {
    list-style: none;
    margin: 0 0 1rem;
    padding: 0;
    display: grid;
    gap: 1rem;
    grid-template-columns: repeat(auto-fill, minmax(18.5rem, 1fr));
}

.ph-entity-card {
    display: flex;
    flex-direction: column;
    gap: 0.85rem;
}

.ph-entity-head {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
}

.ph-entity-copy {
    min-width: 0;
    flex: 1;
}

.ph-entity-title {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem 0.55rem;
}

.ph-entity-title h2 {
    margin: 0;
    font-size: 1.05rem;
}

.ph-entity-copy .ph-desk-kicker {
    margin: 0.25rem 0 0;
}

.ph-entity-meta {
    display: grid;
    gap: 0.55rem;
    margin: 0;
}

.ph-entity-meta div {
    min-width: 0;
}

.ph-entity-meta dt {
    display: flex;
    align-items: center;
    gap: 0.3rem;
    margin: 0;
    font-size: 0.75rem;
    color: var(--ph-neutral-500);
}

.ph-entity-meta .ph-icon {
    width: 0.95rem;
    height: 0.95rem;
}

.ph-entity-meta dd {
    margin: 0.15rem 0 0;
}

.ph-entity-meta a {
    color: inherit;
    font-weight: 700;
    text-decoration: none;
}

.ph-entity-meta a:hover {
    color: var(--ph-brand-primary-dark);
}

@media (min-width: 640px) {
    .ph-entity-meta.is-cols {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 0.85rem 1.25rem;
    }

    .ph-entity-meta.is-cols .is-wide {
        grid-column: 1 / -1;
    }
}

.ph-profile-badges {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    margin: 0.35rem 0 0;
}

.ph-desk-heading .ph-badge-ok,
.ph-desk-heading .ph-badge-off,
.ph-desk-heading .ph-badge {
    margin-inline-start: 0.35rem;
    vertical-align: middle;
}

.ph-profile-block .ph-detail-hero {
    margin-bottom: 0;
}

.ph-profile-block .ph-sub-facts {
    margin: 0;
}

.ph-role-section {
    margin: 0 0 1.5rem;
}

.ph-role-section > .ph-desk-heading {
    margin-bottom: 0.45rem;
}

.ph-role-section > .ph-hint {
    margin: 0 0 0.75rem;
}

.ph-role-grid {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 1rem;
    grid-template-columns: repeat(auto-fill, minmax(18rem, 1fr));
}

.ph-role-card {
    height: 100%;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    border-inline-start: 3px solid var(--ph-brand-primary);
}

.ph-role-card.is-platform {
    border-inline-start-color: var(--ph-brand-dark);
    background: linear-gradient(180deg, var(--ph-surface-warm) 0%, var(--ph-white) 42%);
}

.ph-role-platform {
    max-width: 40rem;
}

.ph-role-card-head {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 0.65rem;
}

.ph-role-card h2,
.ph-role-card h3 {
    margin: 0;
    font-size: 1.08rem;
}

.ph-role-card-head .ph-hint {
    margin: 0.2rem 0 0;
}

.ph-role-summary {
    margin: 0;
    color: var(--ph-neutral-700);
    font-size: 0.9rem;
    line-height: 1.7;
}

.ph-role-perms {
    margin-top: auto;
}

.ph-role-perms > summary {
    cursor: pointer;
    font-weight: 600;
    font-size: 0.88rem;
    color: var(--ph-neutral-700);
}

.ph-role-perms[open] > summary {
    margin-bottom: 0.65rem;
}

.ph-role-compare-wrap {
    margin-top: 0.35rem;
}

.ph-role-compare th,
.ph-role-compare td {
    white-space: nowrap;
}

.ph-role-compare tbody th[scope="row"] {
    background: var(--ph-surface);
    font-weight: 600;
    white-space: normal;
    min-width: 9.5rem;
}

.ph-role-compare .ph-role-compare-group th {
    background: var(--ph-surface-beige);
    font-size: 0.75rem;
    font-weight: 700;
    color: var(--ph-neutral-700);
}

.ph-role-compare th:first-child,
.ph-role-compare td:first-child {
    position: sticky;
    right: 0;
    z-index: 1;
}

.ph-role-compare thead th:first-child {
    z-index: 2;
}

.ph-role-compare tr.is-diff td,
.ph-role-compare tr.is-diff th {
    background: var(--ph-surface-highlight);
}

.ph-role-compare td.is-yes,
.ph-role-compare td.is-no {
    text-align: center;
}

.ph-role-compare-yes {
    display: inline-flex;
    color: var(--ph-success);
}

.ph-role-compare-yes .ph-icon {
    width: 1.1rem;
    height: 1.1rem;
}

.ph-role-compare-no {
    color: var(--ph-neutral-400);
}

.ph-role-editor-list {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.ph-role-editor {
    height: auto;
}

.ph-role-editor .ph-perm-group {
    margin: 0.55rem 0 0;
    padding: 0;
    border: 0;
}

.ph-role-editor .ph-perm-group + .ph-perm-group {
    margin-top: 0.7rem;
    padding-top: 0.65rem;
    border-top: 1px solid var(--ph-neutral-100);
}

.ph-role-editor legend.ph-perm-group-title {
    padding: 0;
    float: none;
    width: auto;
}

.ph-role-editor .ph-perm-check {
    margin: 0;
    padding: 0.4rem 0.55rem;
    border-radius: var(--ph-radius-md);
    cursor: pointer;
}

.ph-role-editor .ph-perm-check:hover,
.ph-role-editor .ph-perm-check:focus-within {
    background: var(--ph-surface-warm);
}

.ph-role-editor .ph-row-actions {
    margin-top: 0.85rem;
    justify-content: flex-start;
}

.ph-role-create {
    margin-top: 1rem;
}

.ph-role-create > summary {
    flex-direction: column;
    align-items: flex-start;
    gap: 0.2rem;
    list-style: none;
}

.ph-role-create > summary::-webkit-details-marker,
.ph-role-create > summary::marker {
    display: none;
}

.ph-role-create > summary .ph-lead {
    font-weight: 400;
}

.ph-role-create[open] > summary {
    margin-bottom: 0.85rem;
    padding-bottom: 0.75rem;
    border-bottom: 1px solid var(--ph-neutral-100);
}

.ph-staff-invite {
    margin: 0 0 1.25rem;
}

.ph-staff-invite > summary,
.ph-staff-assign > summary {
    flex-direction: column;
    align-items: flex-start;
    gap: 0.2rem;
    list-style: none;
}

.ph-staff-invite > summary::-webkit-details-marker,
.ph-staff-invite > summary::marker,
.ph-staff-assign > summary::-webkit-details-marker,
.ph-staff-assign > summary::marker {
    display: none;
}

.ph-staff-invite > summary .ph-lead {
    font-weight: 400;
}

.ph-staff-invite[open] > summary,
.ph-staff-assign[open] > summary {
    margin-bottom: 0.85rem;
    padding-bottom: 0.75rem;
    border-bottom: 1px solid var(--ph-neutral-100);
}

.ph-staff-list {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.ph-staff-card.is-inactive {
    opacity: 0.82;
    border-inline-start: 3px solid var(--ph-neutral-200);
}

.ph-staff-roles {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
}

.ph-staff-roles li {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem 0.65rem;
}

.ph-staff-assign {
    margin: 0;
}

.ph-staff-assign > summary {
    flex-direction: row;
    align-items: center;
    font-size: 0.85rem;
    color: var(--ph-neutral-700);
}

.ph-staff-assign-form {
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem;
    align-items: end;
}

.ph-staff-assign-form select {
    min-width: 9rem;
}

.ph-staff-card .ph-row-actions {
    margin-top: auto;
    justify-content: flex-start;
}

.ph-perm-group + .ph-perm-group {
    margin-top: 0.7rem;
    padding-top: 0.65rem;
    border-top: 1px solid var(--ph-neutral-100);
}

.ph-perm-group-title {
    margin: 0 0 0.35rem;
    font-size: 0.75rem;
    font-weight: 700;
    color: var(--ph-neutral-500);
}

.ph-entity-card .ph-row-actions {
    margin-top: auto;
    justify-content: flex-start;
}

.ph-entity-card.is-default-branch,
.ph-entity-card.is-stay-tariff {
    border-inline-start: 3px solid var(--ph-brand-primary);
    background: linear-gradient(180deg, var(--ph-surface-primary) 0%, var(--ph-white) 42%);
}

.ph-rate-lines {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
}

.ph-peak-block {
    grid-column: 1 / -1;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(9.5rem, 1fr));
    gap: 0.85rem 1rem;
    margin: 0;
    padding: 0.9rem 1rem;
    border: 0;
    border-radius: var(--ph-radius-md);
    background: var(--ph-surface-warm);
}

.ph-peak-block legend {
    padding: 0;
    margin-bottom: 0.35rem;
}

.ph-place-form fieldset {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    background: var(--ph-surface-warm);
}

.ph-entity-card.is-promo-live {
    border-inline-start: 3px solid var(--ph-success);
}

.ph-entity-card.is-promo-soon {
    border-inline-start: 3px solid var(--ph-brand-gold);
}

.ph-entity-card.is-promo-ended {
    opacity: 0.82;
    border-inline-start: 3px solid var(--ph-neutral-200);
}

.ph-field-span {
    grid-column: 1 / -1;
}

.ph-main fieldset.ph-promo-kind {
    grid-column: 1 / -1;
    border: 0;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem 1.25rem;
    background: transparent;
}

.ph-promo-kind legend {
    padding: 0;
    margin: 0 0 0.15rem;
    width: 100%;
}

.ph-person-cell {
    display: flex;
    align-items: center;
    gap: 0.65rem;
    min-width: 0;
}

.ph-person-cell strong {
    display: inline-block;
    margin-inline-end: 0.35rem;
}

.ph-age {
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    color: var(--ph-neutral-950);
    white-space: nowrap;
}

.ph-customer-table tbody tr:hover td {
    background: var(--ph-surface-warm);
}

.ph-customer-table .ph-row-actions {
    justify-content: flex-end;
}

.ph-empty .ph-btn {
    margin-top: 0.35rem;
}

.ph-companion-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
}

.ph-companion-item {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    padding: 1rem 0;
    border-bottom: 1px solid var(--ph-border);
}

.ph-companion-item:first-child {
    padding-top: 0;
}

.ph-companion-item:last-child {
    border-bottom: 0;
    padding-bottom: 0;
}

.ph-companion-item .ph-row-actions {
    justify-content: flex-start;
}

.ph-companion-photo {
    border: 1px solid var(--ph-border);
    border-radius: var(--ph-radius-md);
    background: var(--ph-surface-warm);
    padding: 0.65rem 0.85rem;
}

.ph-companion-photo summary {
    cursor: pointer;
    font-weight: 600;
    font-size: 0.9rem;
}

.ph-companion-photo[open] summary {
    margin-bottom: 0.75rem;
}

.ph-entity-title h3 {
    margin: 0;
    font-size: 1.02rem;
    font-weight: 700;
}

.ph-detail-hero + .ph-entity-meta {
    margin-top: 1rem;
}

@media (max-width: 40rem) {
    .ph-customer-table th:nth-child(4),
    .ph-customer-table td:nth-child(4) {
        display: none;
    }
}

.ph-staff-photo-sm {
    width: 2.4rem;
    height: 2.4rem;
}

.ph-session {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    min-width: 0;
    flex: 1 1 auto;
    justify-content: flex-end;
}

.ph-dash-header {
    position: sticky;
    top: 0;
    z-index: 20;
}

.ph-dash-title {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ph-session-branch,
.ph-session-branch-form {
    flex-shrink: 0;
}

.ph-session-branch-form .ph-input {
    max-width: 9.5rem;
}

.ph-session-user {
    display: flex;
    align-items: center;
    gap: 0.55rem;
    min-width: 0;
    max-width: 16rem;
    color: inherit;
    text-decoration: none;
}

a.ph-session-user:hover strong {
    color: var(--ph-brand-primary);
}

.ph-session-user:not(a) {
    cursor: default;
}

.ph-session-user .ph-staff-photo {
    width: 2.25rem;
    height: 2.25rem;
}

.ph-session-user-text {
    display: flex;
    flex-direction: column;
    min-width: 0;
    line-height: 1.25;
}

.ph-session-user strong {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 0.9rem;
    font-weight: 600;
}

.ph-session-user-role {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 0.72rem;
    font-weight: 500;
    color: var(--ph-neutral-600);
}

.ph-session-initials {
    font-size: 0.72rem;
    letter-spacing: 0.02em;
    color: var(--ph-brand-on-primary);
    background: linear-gradient(135deg, var(--ph-brand-primary) 0%, var(--ph-brand-primary-dark) 100%);
    border-color: transparent;
}

@media (max-width: 40rem) {
    .ph-dash-header {
        gap: 0.5rem;
        padding-block: 0.65rem;
    }

    .ph-dash-title {
        flex: 1 1 6rem;
        font-size: 0.95rem;
    }

    .ph-session {
        flex: 1 1 100%;
        order: 3;
        justify-content: flex-start;
        gap: 0.5rem;
        padding-top: 0.15rem;
        border-top: 1px solid var(--ph-border);
        margin-top: 0.15rem;
        padding-top: 0.45rem;
    }

    .ph-session-user {
        max-width: none;
        flex: 1 1 auto;
    }

    .ph-session-user-role {
        display: inline;
    }

    .ph-session-logout-label {
        display: none;
    }

    .ph-session-branch-form .ph-input {
        max-width: 8rem;
        min-height: 2.5rem;
        font-size: 0.85rem;
    }
}

.ph-detail-hero {
    display: flex;
    align-items: flex-start;
    gap: 0.9rem;
    margin-bottom: 1rem;
}

.ph-detail-hero h2 {
    margin: 0.15rem 0 0.4rem;
}

.ph-detail-hero-copy {
    margin-top: 1rem;
}

.ph-detail-photo {
    width: 5.25rem;
    height: 5.25rem;
    flex-shrink: 0;
}

.ph-branch-cards {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 0.85rem;
}

.ph-branch-card {
    margin: 0;
}

.ph-branch-card h3 {
    margin: 0;
    font-size: 1rem;
}

.ph-plans {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 1.1rem;
    align-items: stretch;
}

@media (min-width: 720px) {
    .ph-plans {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (min-width: 1024px) {
    .ph-plans {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .ph-plans-shop[data-count="5"] {
        grid-template-columns: repeat(6, minmax(0, 1fr));
    }

    .ph-plans-shop[data-count="5"] > .ph-plan {
        grid-column: span 2;
    }

    .ph-plans-shop[data-count="5"] > .ph-plan:nth-child(4) {
        grid-column: 2 / span 2;
    }

    .ph-plans-shop[data-count="5"] > .ph-plan:nth-child(5) {
        grid-column: 4 / span 2;
    }

    .ph-plans-shop[data-count="4"] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

.ph-plan {
    display: flex;
    flex-direction: column;
    margin: 0;
    gap: 0.35rem;
    padding: 1.35rem 1.3rem 1.25rem;
    border-radius: var(--ph-radius-xl);
    transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease;
}

.ph-plan.is-demo {
    background: var(--ph-surface-warm);
}

.ph-plan.is-featured {
    border-color: var(--ph-brand-magenta);
    border-top-width: 4px;
    background: linear-gradient(180deg, var(--ph-surface-highlight) 0%, var(--ph-white) 38%);
    box-shadow: var(--ph-shadow-md);
}

.ph-plan:hover {
    transform: translateY(-3px);
    border-color: var(--ph-brand-primary);
    box-shadow: var(--ph-shadow-md);
}

.ph-plan-top {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    margin-bottom: 0.55rem;
}

.ph-plan-badges {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem;
}

.ph-plan-discount-badge {
    font-weight: 700;
}

.ph-plan-chip {
    margin: 0;
    padding: 0.2rem 0.65rem;
    border-radius: 999px;
    background: var(--ph-neutral-50);
    border: 1px solid var(--ph-border-light);
    color: var(--ph-neutral-700);
    font-size: 0.8rem;
    font-weight: 600;
}

.ph-plan-name {
    margin: 0;
    font-size: 1.28rem;
    line-height: 1.4;
}

.ph-plan-license {
    margin: 0.15rem 0 0;
    color: var(--ph-neutral-500);
    font-size: 0.86rem;
}

.ph-plan-price-block {
    margin: 0.55rem 0 0.15rem;
}

.ph-plan-price {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.45rem 0.55rem;
    margin: 0;
}

.ph-plan-price-old {
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--ph-neutral-500);
    text-decoration: line-through;
    text-decoration-thickness: 1.5px;
    opacity: 0.85;
}

.ph-plan-price-num {
    font-size: clamp(1.65rem, 2.4vw, 2.05rem);
    font-weight: 700;
    letter-spacing: -0.02em;
    color: var(--ph-brand-dark);
    line-height: 1;
}

.ph-plan.has-discount .ph-plan-price-num {
    color: var(--ph-brand-primary-dark);
}

.ph-plan-price-unit {
    color: var(--ph-neutral-500);
    font-size: 0.92rem;
    font-weight: 600;
}

.ph-plan-price-free {
    font-size: clamp(1.55rem, 2.2vw, 1.9rem);
    font-weight: 700;
    color: var(--ph-brand-lime);
    line-height: 1;
}

.ph-plan-save {
    margin: 0.35rem 0 0;
    color: var(--ph-brand-secondary-ink);
    font-size: 0.86rem;
    font-weight: 600;
}

.ph-plan-save-pct {
    font-weight: 700;
}

.ph-plan-monthly,
.ph-plan-period {
    margin: 0.3rem 0 0.65rem;
    color: var(--ph-neutral-500);
    font-size: 0.88rem;
}

.ph-plan-quotas {
    list-style: none;
    margin: 0 0 0.85rem;
    padding: 0.7rem 0.75rem;
    display: grid;
    gap: 0.4rem;
    border-radius: var(--ph-radius-md);
    background: var(--ph-neutral-50);
    border: 1px solid var(--ph-border-light);
    color: var(--ph-neutral-800);
    font-size: 0.9rem;
    font-weight: 600;
}

.ph-plan-quotas li {
    display: flex;
    align-items: flex-start;
    gap: 0.45rem;
    line-height: 1.45;
}

.ph-plan-quotas .ph-icon {
    flex-shrink: 0;
    margin-top: 0.1rem;
    color: var(--ph-brand-primary);
}

.ph-plan.is-featured .ph-plan-quotas {
    background: var(--ph-surface-highlight);
    border-color: color-mix(in srgb, var(--ph-brand-magenta) 28%, var(--ph-border-light));
}

.ph-plan-points {
    list-style: none;
    margin: 0 0 1.15rem;
    padding: 0.75rem 0 0;
    border-top: 1px solid var(--ph-border-light);
    display: grid;
    gap: 0.55rem;
    color: var(--ph-neutral-700);
    font-size: 0.92rem;
}

.ph-plan-points li {
    display: flex;
    align-items: flex-start;
    gap: 0.45rem;
    line-height: 1.55;
}

.ph-plan-points .ph-icon {
    flex-shrink: 0;
    margin-top: 0.12rem;
    color: var(--ph-brand-lime);
}

.ph-plan-points-more {
    color: var(--ph-neutral-500);
    font-size: 0.86rem;
}

.ph-plan-points-more .ph-icon {
    color: var(--ph-neutral-400);
}

.ph-plan .ph-actions {
    margin-top: auto;
}

.ph-plan .ph-actions .ph-btn {
    width: 100%;
    justify-content: center;
}

@media (prefers-reduced-motion: reduce) {
    .ph-plan {
        transition: none;
    }

    .ph-plan:hover {
        transform: none;
    }
}

.ph-plan-gate {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.85rem 1rem;
}

.ph-plan-gate p {
    margin: 0;
    display: flex;
    align-items: flex-start;
    gap: 0.45rem;
    flex: 1 1 16rem;
}

.ph-plan-gate .ph-btn {
    flex: 0 0 auto;
}

.ph-plan-list-price {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.35rem 0.45rem;
}

.ph-plan-list-price .ph-plan-price-old {
    font-size: 0.85rem;
}

.ph-checkout {
    display: grid;
    gap: 1.25rem;
    align-items: start;
}

@media (min-width: 900px) {
    .ph-checkout {
        grid-template-columns: minmax(0, 1.15fr) minmax(16rem, 22rem);
    }
}

.ph-checkout-form,
.ph-checkout-summary {
    margin: 0;
}

@media (min-width: 900px) {
    .ph-checkout-summary {
        position: sticky;
        top: 1rem;
    }
}

.ph-pay {
    display: grid;
    gap: 0.65rem;
    margin: 0 0 1rem;
    padding: 0;
    border: 0;
}

.ph-pay legend {
    margin-bottom: 0.35rem;
}

.ph-main .ph-pay-option {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    margin: 0;
    padding: 0.85rem 1rem;
    border: 1px solid var(--ph-border-strong);
    border-radius: var(--ph-radius-md);
    background: var(--ph-surface);
    cursor: pointer;
    min-height: 44px;
}

.ph-main .ph-pay-option:has(input:checked) {
    border-color: var(--ph-brand-primary);
    background: var(--ph-surface-primary);
}

.ph-pay-option input {
    margin-top: 0.3rem;
    flex-shrink: 0;
}

.ph-pay-option span {
    display: grid;
    gap: 0.2rem;
}

.ph-pay-option strong {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
}

.ph-pay-option small {
    color: var(--ph-neutral-700);
    font-size: 0.85rem;
    line-height: 1.6;
}

.ph-bank-board {
    margin: 1.25rem 0 1rem;
}

.ph-bank-board-head h3 {
    margin: 0 0 0.35rem;
}

.ph-bank-slots {
    display: grid;
    gap: 1rem;
}

.ph-bank-slot {
    border: 1px solid var(--ph-border);
    border-radius: var(--ph-radius-lg);
    background: var(--ph-surface-warm);
    padding: 1rem 1.1rem 1.15rem;
    box-shadow: var(--ph-shadow-sm);
}

.ph-bank-slot.is-filled {
    background: var(--ph-white);
    border-color: var(--ph-border-strong);
}

.ph-bank-slot-head {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 0.9rem;
}

.ph-bank-slot-head h4 {
    margin: 0;
    font-size: 1rem;
}

.ph-bank-slot-head p {
    margin: 0.15rem 0 0;
    color: var(--ph-neutral-700);
    font-size: 0.85rem;
}

.ph-bank-slot-head .ph-badge {
    margin-inline-start: auto;
}

.ph-bank-slot-num {
    display: grid;
    place-items: center;
    width: 2.25rem;
    height: 2.25rem;
    border-radius: 999px;
    background: var(--ph-brand-gold);
    color: var(--ph-brand-brown);
    font-weight: 700;
    flex-shrink: 0;
}

.ph-bank-slot-grid {
    display: grid;
    gap: 0.75rem 1rem;
}

@media (min-width: 720px) {
    .ph-bank-slot-grid {
        grid-template-columns: 1fr 1fr;
    }

    .ph-bank-slot-span {
        grid-column: 1 / -1;
    }
}

.ph-bank-list {
    display: grid;
    gap: 0.85rem;
}

.ph-bank-card {
    margin: 0;
    padding: 1rem 1.1rem;
}

.ph-bank-card-title {
    margin: 0.15rem 0 0.65rem;
    font-size: 1.05rem;
}

.ph-terms {
    margin: 0 0 1rem;
}

.ph-checkout-done h1 {
    margin: 0.35rem 0 0.75rem;
}

.ph-checkout-done.is-ok {
    border-color: var(--ph-brand-primary-deep);
}

.ph-checkout-done.is-wait {
    border-color: #ead8b0;
}

.ph-checkout-done.is-err {
    border-color: #e8b4b4;
}

.ph-checkout-done-mark {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 3.25rem;
    height: 3.25rem;
    margin-bottom: 0.85rem;
    border-radius: 999px;
    background: var(--ph-neutral-50);
    color: var(--ph-neutral-600);
}

.ph-checkout-done.is-ok .ph-checkout-done-mark {
    background: color-mix(in srgb, var(--ph-brand-lime) 22%, var(--ph-white));
    color: var(--ph-brand-lime);
}

.ph-checkout-done.is-wait .ph-checkout-done-mark {
    background: color-mix(in srgb, #ead8b0 55%, var(--ph-white));
    color: var(--ph-brand-primary-dark);
}

.ph-checkout-done-mark .ph-icon {
    width: 1.55rem;
    height: 1.55rem;
}

.ph-checkout-next {
    list-style: none;
    margin: 0 0 1.25rem;
    padding: 0.85rem 1rem;
    display: grid;
    gap: 0.55rem;
    border-radius: var(--ph-radius-md);
    background: var(--ph-neutral-50);
    border: 1px solid var(--ph-border-light);
}

.ph-checkout-next li {
    display: flex;
    align-items: flex-start;
    gap: 0.45rem;
    color: var(--ph-neutral-600);
    font-size: 0.92rem;
    line-height: 1.45;
}

.ph-checkout-next li.is-done {
    color: var(--ph-neutral-800);
    font-weight: 600;
}

.ph-checkout-next li.is-current {
    color: var(--ph-brand-primary-dark);
    font-weight: 700;
}

.ph-checkout-next .ph-icon {
    flex-shrink: 0;
    margin-top: 0.1rem;
    width: 1rem;
    height: 1rem;
}

.ph-checkout-next li.is-done .ph-icon {
    color: var(--ph-brand-lime);
}

.ph-checkout-next li.is-current .ph-icon {
    color: var(--ph-brand-primary);
}

.ph-report-export {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.55rem 1.15rem;
}

.ph-report-export-group {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem;
    font-size: 0.85rem;
    color: var(--ph-neutral-700);
}

@media (min-width: 1100px) {
    .ph-home-kpis.ph-report-insights {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

.ph-report-filters {
    margin-bottom: 1rem;
}

.ph-report-presets {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin-bottom: 0.85rem;
}

.ph-report-presets a.is-on,
.ph-main .ph-report-presets a.is-on {
    background: var(--ph-surface-primary);
    border-color: var(--ph-brand-primary-dark);
    color: var(--ph-neutral-950);
}

.ph-report-jump {
    position: sticky;
    top: 0;
    z-index: 2;
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem 0.85rem;
    margin: 0 0 1.15rem;
    padding: 0.55rem 0.75rem;
    font-size: 0.9rem;
    background: color-mix(in srgb, var(--ph-neutral-50) 88%, transparent);
    border: 1px solid var(--ph-border);
    border-radius: var(--ph-radius-md);
    backdrop-filter: blur(8px);
}

.ph-report-jump a {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    min-height: 44px;
    padding: 0 0.2rem;
    color: var(--ph-neutral-700);
    text-decoration: none;
}

.ph-report-jump a:hover,
.ph-report-jump a:focus-visible {
    color: var(--ph-neutral-950);
}

.ph-report-page section[id] {
    scroll-margin-top: 4.5rem;
}

.ph-report-mix {
    display: flex;
    flex-wrap: wrap;
    gap: 0.55rem;
    margin: -0.5rem 0 1.25rem;
}

.ph-report-chip {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.35rem 0.65rem;
    padding: 0.55rem 0.8rem;
    border: 1px solid var(--ph-border);
    border-radius: var(--ph-radius-md);
    background: var(--ph-surface);
    font-size: 0.85rem;
}

.ph-report-chip strong {
    font-size: 0.95rem;
}

.ph-report-bars {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 0.85rem;
}

.ph-report-bars li {
    display: grid;
    gap: 0.35rem 0.75rem;
}

@media (min-width: 800px) {
    .ph-report-bars li {
        grid-template-columns: minmax(9rem, 14rem) minmax(0, 1fr) auto;
        align-items: center;
    }

    .ph-report-bars .ph-report-bar-stack {
        grid-column: 2;
    }

    .ph-report-bars .ph-num {
        align-self: start;
    }

    .ph-report-bars .ph-hint {
        grid-column: 2 / span 2;
    }
}

.ph-report-bar-label {
    font-size: 0.85rem;
    color: var(--ph-neutral-700);
}

.ph-report-bar-stack {
    display: grid;
    gap: 0.28rem;
}

.ph-report-bar-track {
    display: block;
    height: 0.5rem;
    border-radius: 999px;
    background: var(--ph-neutral-100);
    overflow: hidden;
}

.ph-report-bar-fill {
    display: block;
    height: 100%;
    border-radius: 999px;
    background: var(--ph-brand-primary);
}

.ph-report-bar-fill.is-money {
    background: var(--ph-brand-primary-dark);
}

.ph-report-bar-fill.is-visits {
    background: var(--ph-info);
}

.ph-report-share {
    display: block;
    width: min(7rem, 100%);
    height: 0.35rem;
    margin-top: 0.3rem;
    border-radius: 999px;
    background: var(--ph-neutral-100);
    overflow: hidden;
}

.ph-report-share > span {
    display: block;
    height: 100%;
    background: var(--ph-brand-primary);
    border-radius: 999px;
}

.ph-report-legend,
.ph-report-legend-list {
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem 0.9rem;
    margin: 0;
    padding: 0;
    list-style: none;
    font-size: 0.82rem;
    color: var(--ph-neutral-700);
}

.ph-report-legend span,
.ph-report-legend-list li {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
}

.ph-report-dot {
    display: inline-block;
    width: 0.55rem;
    height: 0.55rem;
    border-radius: 999px;
    background: var(--ph-neutral-400);
}

.ph-report-dot.is-money,
.ph-report-mixbar-seg.is-primary {
    background: var(--ph-brand-primary-dark);
}

.ph-report-dot.is-visits,
.ph-report-dot.is-info,
.ph-report-mixbar-seg.is-info {
    background: var(--ph-info);
}

.ph-report-dot.is-warn,
.ph-report-mixbar-seg.is-warn {
    background: var(--ph-warning);
}

.ph-report-dot.is-lime,
.ph-report-mixbar-seg.is-lime {
    background: var(--ph-brand-lime);
}

.ph-report-dot.is-dark,
.ph-report-mixbar-seg.is-dark {
    background: var(--ph-brand-primary);
}

.ph-report-dot.is-mute,
.ph-report-mixbar-seg.is-mute {
    background: var(--ph-neutral-400);
}

.ph-report-mixbar {
    display: flex;
    overflow: hidden;
    height: 0.55rem;
    margin: 0.55rem 0 0.45rem;
    border-radius: 999px;
    background: var(--ph-neutral-100);
}

.ph-report-mixbar-lg {
    height: 0.75rem;
    margin: 0 0 0.85rem;
}

.ph-report-mixbar-seg {
    display: block;
    min-width: 0;
    height: 100%;
}

.ph-report-hours-wrap {
    overflow-x: auto;
    padding-bottom: 0.25rem;
}

.ph-report-hours {
    display: grid;
    grid-auto-flow: column;
    grid-auto-columns: minmax(1.7rem, 1fr);
    gap: 0.3rem;
    min-width: 26rem;
    margin: 0;
    padding: 0;
    list-style: none;
    align-items: end;
}

.ph-report-hours li {
    display: grid;
    justify-items: center;
    gap: 0.2rem;
}

.ph-report-hour-col {
    display: flex;
    align-items: flex-end;
    width: 100%;
    max-width: 1.15rem;
    height: 7rem;
    border-radius: 999px;
    background: var(--ph-neutral-100);
    overflow: hidden;
}

.ph-report-hour-fill {
    display: block;
    width: 100%;
    min-height: 0;
    border-radius: 999px;
    background: var(--ph-info);
}

.ph-report-hour-label,
.ph-report-hour-count {
    font-size: 0.7rem;
    color: var(--ph-neutral-700);
}

.ph-report-bars-compact .ph-hint {
    margin: 0;
}

@media (max-width: 799px) {
    .ph-report-bars-compact li {
        grid-template-columns: minmax(4rem, 6.5rem) minmax(0, 1fr) auto;
        align-items: center;
    }

    .ph-report-bars-compact .ph-report-bar-stack {
        grid-column: 2;
    }

    .ph-report-bars-compact .ph-hint {
        grid-column: 2 / span 2;
    }
}

.ph-date-wrap {
    position: relative;
    display: block;
    width: 100%;
    direction: ltr;
}

.ph-main .row .ph-date-wrap,
.ph-main .ph-toolbar .ph-date-wrap {
    width: auto;
    min-width: 12rem;
    flex: 1;
}

.ph-date-wrap .ph-date-input {
    padding-inline-start: 0.75rem;
    padding-inline-end: 2.75rem;
}

.ph-date-wrap .ph-date-input::-webkit-calendar-picker-indicator {
    display: none;
}

.ph-main .ph-date-open,
.ph-date-open {
    position: absolute;
    inset-inline-end: 0.2rem;
    inset-inline-start: auto;
    top: 50%;
    z-index: 1;
    display: grid;
    place-items: center;
    width: 2.4rem;
    height: 2.4rem;
    min-width: 2.4rem;
    min-height: 2.4rem;
    padding: 0;
    border: 0;
    border-radius: var(--ph-radius-sm);
    background: transparent;
    color: var(--ph-neutral-700);
    box-shadow: none;
    font-weight: 400;
    transform: translateY(-50%);
}

.ph-main .ph-date-open:hover,
.ph-date-open:hover,
.ph-main .ph-date-open:focus-visible,
.ph-date-open:focus-visible {
    color: var(--ph-neutral-950);
    background: var(--ph-surface-primary);
    border-color: transparent;
}

.ph-date-open .ph-icon {
    width: 1.15rem;
    height: 1.15rem;
}

.ph-date-pop {
    position: fixed;
    z-index: 55;
    width: min(20.5rem, calc(100vw - 1.5rem));
    padding: 0.75rem;
    border: 1px solid var(--ph-border);
    border-radius: var(--ph-radius-lg);
    background: var(--ph-surface);
    box-shadow: var(--ph-shadow-md);
    color: var(--ph-neutral-950);
}

.ph-date-pop.is-sheet {
    inset: auto 0 0 0;
    width: 100%;
    border-radius: var(--ph-radius-xl) var(--ph-radius-xl) 0 0;
    padding-bottom: calc(0.75rem + env(safe-area-inset-bottom, 0px));
}

.ph-date-pop-head {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    margin-bottom: 0.65rem;
}

.ph-date-caption {
    flex: 1;
    min-height: 44px;
    border: 0;
    border-radius: var(--ph-radius-md);
    background: transparent;
    color: var(--ph-neutral-950);
    font-weight: 600;
}

.ph-date-nav,
.ph-date-day,
.ph-date-chip {
    min-height: 44px;
    border: 0;
    border-radius: var(--ph-radius-md);
    background: transparent;
    color: inherit;
    cursor: pointer;
}

.ph-date-nav {
    width: 2.5rem;
    font-size: 1.25rem;
    color: var(--ph-neutral-700);
}

.ph-date-caption:hover,
.ph-date-nav:hover,
.ph-date-day:hover:not(:disabled),
.ph-date-chip:hover {
    background: var(--ph-surface-warm);
}

.ph-date-grid {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    gap: 0.15rem;
    text-align: center;
}

.ph-date-wd {
    font-size: 0.75rem;
    color: var(--ph-neutral-500);
    padding: 0.2rem 0;
}

.ph-date-day {
    min-height: 2.4rem;
    font-variant-numeric: tabular-nums;
}

.ph-date-day.is-today {
    box-shadow: inset 0 0 0 1px var(--ph-brand-primary);
}

.ph-date-day.is-on,
.ph-date-chip.is-on {
    background: var(--ph-brand-primary);
    color: var(--ph-brand-on-primary);
    font-weight: 700;
}

.ph-date-day:disabled {
    color: var(--ph-neutral-400);
    cursor: not-allowed;
}

.ph-date-months {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.35rem;
}

.ph-date-chip {
    padding: 0.45rem 0.3rem;
    font-size: 0.9rem;
}

.ph-date-time {
    display: flex;
    gap: 0.6rem;
    margin-top: 0.7rem;
}

.ph-date-time label {
    display: grid;
    gap: 0.25rem;
    flex: 1;
    font-size: 0.8rem;
    color: var(--ph-neutral-700);
}

.ph-date-time select {
    width: 100%;
    min-height: 44px;
    border: 1px solid var(--ph-border);
    border-radius: var(--ph-radius-md);
    background: var(--ph-white);
    padding: 0.4rem 0.55rem;
}

.ph-date-pop-foot {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin-top: 0.75rem;
}

.ph-date-pop-foot .ph-btn,
.ph-date-pop-foot .ph-btn-ghost {
    flex: 1;
    min-width: 5.5rem;
}

.ph-content-type-grid {
    display: grid;
    gap: 1rem;
    margin-bottom: 1.25rem;
    grid-template-columns: repeat(auto-fill, minmax(17.5rem, 1fr));
}

.ph-content-type-card {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 1rem;
    margin: 0;
    height: 100%;
}

.ph-content-type-head {
    display: flex;
    align-items: center;
    gap: 0.85rem;
    min-width: 0;
}

.ph-content-type-icon {
    display: grid;
    place-items: center;
    width: 2.85rem;
    height: 2.85rem;
    flex-shrink: 0;
    border-radius: var(--ph-radius-md);
    background: var(--ph-surface-primary);
    color: var(--ph-brand-primary-dark);
}

.ph-content-type-icon .ph-icon {
    width: 1.4rem;
    height: 1.4rem;
}

.ph-content-type-copy {
    min-width: 0;
}

.ph-content-type-copy h2 {
    margin: 0;
    font-size: 1.08rem;
}

.ph-content-type-copy .ph-hint {
    margin: 0.2rem 0 0;
}

.ph-content-type-card .ph-row-actions {
    margin-top: auto;
    justify-content: flex-start;
}

.ph-content-editor {
    display: grid;
    gap: 1rem;
}

.ph-rich-field textarea {
    min-height: 16rem;
}

.tox-tinymce {
    border: 1px solid var(--ph-border) !important;
    border-radius: var(--ph-radius-md) !important;
}

.tox .tox-toolbar,
.tox .tox-toolbar__overflow,
.tox .tox-toolbar__primary,
.tox .tox-menubar,
.tox .tox-edit-area__iframe {
    background: var(--ph-surface-warm) !important;
}

.tox .tox-toolbar-overlord,
.tox .tox-toolbar__primary {
    flex-wrap: nowrap !important;
}

.tox .tox-toolbar__primary {
    overflow-x: auto;
    scrollbar-width: thin;
}

.tox .tox-toolbar__group {
    padding: 0 0.2rem !important;
}

.tox .tox-tbtn--select {
    max-width: 7.25rem;
}

.tox .tox-tbtn--select .tox-tbtn__select-label {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ph-attach-list {
    list-style: none;
    margin: 0 0 1rem;
    padding: 0;
    display: grid;
    gap: 0.65rem;
}

.ph-attach-item {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.75rem;
    padding: 0.65rem 0;
    border-bottom: 1px solid var(--ph-border);
}

.ph-attach-item:last-child {
    border-bottom: 0;
}

.ph-attach-thumb {
    width: 4.5rem;
    height: 4.5rem;
    object-fit: cover;
    border-radius: var(--ph-radius-md);
    border: 1px solid var(--ph-border);
}

.ph-attach-file {
    display: grid;
    place-items: center;
    width: 4.5rem;
    height: 4.5rem;
    border-radius: var(--ph-radius-md);
    background: var(--ph-surface-primary);
    color: var(--ph-neutral-700);
}

.ph-attach-meta {
    flex: 1 1 12rem;
    min-width: 0;
}

.ph-attach-form {
    margin-top: 0.5rem;
}

.ph-rich-content {
    color: var(--ph-neutral-700);
    line-height: 1.8;
}

.ph-rich-content h2,
.ph-rich-content h3,
.ph-rich-content h4 {
    color: var(--ph-neutral-950);
    margin: 1.1rem 0 0.45rem;
}

.ph-rich-content p {
    margin: 0 0 0.75rem;
}

.ph-rich-content img {
    max-width: 100%;
    height: auto;
    border-radius: var(--ph-radius-md);
}

.ph-rich-content table {
    width: 100%;
    border-collapse: collapse;
    margin: 0.75rem 0;
}

.ph-rich-content th,
.ph-rich-content td {
    border: 1px solid var(--ph-border);
    padding: 0.4rem 0.55rem;
}

.ph-rich-content ul,
.ph-rich-content ol {
    padding-inline-start: 1.4rem;
    margin: 0 0 0.75rem;
}

.ph-gallery {
    display: grid;
    gap: 0.75rem;
    grid-template-columns: repeat(auto-fill, minmax(9rem, 1fr));
    margin: 1rem 0 0;
}

.ph-gallery img {
    width: 100%;
    aspect-ratio: 1;
    object-fit: cover;
    border-radius: var(--ph-radius-md);
    border: 1px solid var(--ph-border);
}

.ph-file-list {
    list-style: none;
    margin: 1rem 0 0;
    padding: 0;
    display: grid;
    gap: 0.45rem;
}

.ph-file-list a {
    display: flex;
    align-items: center;
    gap: 0.4rem;
}

.ph-content-head {
    margin: 0 0 1.25rem;
}

.ph-content-head h1 {
    margin: 0.25rem 0 0;
    font-size: clamp(1.55rem, 2.5vw, 2rem);
    line-height: 1.35;
}

.ph-content-head .ph-lead {
    margin-top: 0.65rem;
    max-width: 38rem;
}

.ph-content-types {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    margin: 0 0 1.35rem;
}

.ph-content-types .ph-nav-link.is-current {
    background: var(--ph-surface-primary);
    color: var(--ph-brand-dark);
}

.ph-content-types .ph-nav-link.is-current .ph-icon {
    color: var(--ph-brand-primary-dark);
}

.ph-content-cards {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 1rem;
}

@media (min-width: 760px) {
    .ph-content-cards {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (min-width: 1100px) {
    .ph-content-cards {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

.ph-content-card {
    display: grid;
    gap: 0.75rem;
    margin: 0;
    height: 100%;
    padding: 0 0 1rem;
    text-decoration: none;
    color: inherit;
    overflow: hidden;
    transition: transform 0.18s ease, border-color 0.18s ease, box-shadow 0.18s ease;
}

.ph-content-card:hover {
    transform: translateY(-2px);
    border-color: var(--ph-brand-primary);
    box-shadow: var(--ph-shadow-md);
}

.ph-content-card img {
    width: 100%;
    aspect-ratio: 16 / 10;
    object-fit: cover;
    background: var(--ph-surface-beige);
}

.ph-content-card div {
    padding: 0 1rem;
}

.ph-content-card h2 {
    margin: 0;
    font-size: 1.05rem;
    line-height: 1.5;
}

.ph-content-card p {
    margin: 0.4rem 0 0;
    color: var(--ph-neutral-700);
    font-size: 0.9rem;
    line-height: 1.7;
}

.ph-content-gallery {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.75rem;
}

@media (min-width: 800px) {
    .ph-content-gallery {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

.ph-content-gallery a {
    display: grid;
    gap: 0.45rem;
    text-decoration: none;
    color: inherit;
}

.ph-content-gallery img,
.ph-content-gallery-fallback {
    width: 100%;
    aspect-ratio: 1;
    object-fit: cover;
    border-radius: var(--ph-radius-lg);
    border: 1px solid var(--ph-border);
    background: var(--ph-surface-beige);
}

.ph-content-gallery-fallback {
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--ph-neutral-500);
}

.ph-content-gallery span {
    font-size: 0.88rem;
    font-weight: 600;
}

.ph-content-faq {
    display: grid;
    gap: 0.65rem;
}

.ph-content-faq .ph-card {
    margin: 0;
    padding: 0.85rem 1rem;
}

.ph-content-faq summary {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    cursor: pointer;
    font-weight: 600;
    list-style: none;
}

.ph-content-faq summary::-webkit-details-marker {
    display: none;
}

.ph-content-faq summary .ph-icon {
    color: var(--ph-brand-primary-dark);
}

.ph-content-faq details p {
    margin: 0.65rem 0 0;
    color: var(--ph-neutral-700);
    line-height: 1.75;
}

.ph-content-crumb {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem 0.55rem;
    margin: 0 0 1rem;
    font-size: 0.85rem;
    color: var(--ph-neutral-500);
}

.ph-content-crumb a {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    color: var(--ph-neutral-700);
    text-decoration: none;
}

.ph-content-crumb a:hover {
    color: var(--ph-brand-primary-dark);
}

.ph-content-crumb .ph-icon {
    width: 0.95rem;
    height: 0.95rem;
}

.ph-content-article {
    padding: 1.25rem 1.2rem 1.35rem;
}

.ph-content-article h1 {
    margin: 0.2rem 0 0.5rem;
}

.ph-content-article h2 {
    margin: 0.35rem 0 0.5rem;
    font-size: 1.35rem;
}

.ph-content-cover {
    width: 100%;
    max-height: 22rem;
    object-fit: cover;
    border-radius: var(--ph-radius-lg);
    margin: 0 0 1.1rem;
    border: 1px solid var(--ph-border);
}

.ph-content-meta {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    margin: 0 0 1rem;
    color: var(--ph-neutral-700);
    font-size: 0.9rem;
}

.ph-content-about {
    margin: 0.75rem 0 0;
    white-space: pre-wrap;
    color: var(--ph-neutral-700);
    line-height: 1.9;
}

.ph-content-actions {
    margin-top: 1.35rem;
}

.ph-contact-social-inline {
    margin-top: 1.25rem;
    padding-top: 1rem;
    border-top: 1px solid var(--ph-border);
}

.ph-contact-social-inline h2 {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    margin: 0 0 0.65rem;
    font-size: 1rem;
}

.ph-content .ph-empty {
    display: grid;
    justify-items: start;
    gap: 0.55rem;
}

@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        transition: none !important;
        animation: none !important;
    }
}

@media print {
    header, aside, nav, form, button {
        display: none !important;
    }
}


