/* VoxBB Public UX Foundation v1.0 — shared behavior/layout contract, theme-neutral. */
:root{--vxp-focus:0 0 0 3px color-mix(in srgb,currentColor 24%,transparent);--vxp-radius:8px;--vxp-hit:36px;--vxp-gap:12px;--vxp-motion:140ms ease}
:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline:2px solid currentColor;outline-offset:2px;box-shadow:var(--vxp-focus)}
:where(button,input,select,textarea){font:inherit}:where(button,[role=button],summary){touch-action:manipulation}
[hidden]{display:none!important}[aria-busy=true]{cursor:progress}.is-busy{pointer-events:none;opacity:.68}
[data-voxbb-ui~="menu"]{position:relative}[data-vxc-menu]{z-index:80}[data-vxc-menu][hidden]{display:none!important}
[data-vxc-menu] a,[data-vxc-menu] button,.vxc-semantic-menu a,.vxc-semantic-menu button{min-height:var(--vxp-hit);display:flex;align-items:center;gap:9px}
[data-vxc-menu] :where(a,button):focus-visible,.vxc-semantic-menu :where(a,button):focus-visible{outline-offset:-3px}
.vxc-dialog::backdrop,.vxc-profile-edit-dialog::backdrop,.vxp-post-dialog::backdrop{background:rgb(0 0 0/.54);backdrop-filter:blur(2px)}
dialog[open]{animation:vxp-dialog-in var(--vxp-motion)}@keyframes vxp-dialog-in{from{opacity:0;transform:translateY(7px) scale(.99)}to{opacity:1;transform:none}}
:where(dialog) form :where(input:not([type=checkbox]):not([type=radio]),select,textarea){width:100%;max-width:100%}
:where(form)[aria-busy=true] :where(button[type=submit],input[type=submit]){cursor:progress}
.vxc-route-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px}.vxc-route-head h1{margin-block:0}.vxc-route-head p{margin:.35rem 0 0}
.vxc-thread-row,.vxc-forum-row,.vxc-conversation-row{contain:layout style;transition:background-color var(--vxp-motion),box-shadow var(--vxp-motion),border-color var(--vxp-motion)}
.vxc-thread-row:focus-within,.vxc-forum-row:focus-within,.vxc-conversation-row:focus-within{position:relative;z-index:1}
.vxc-thread-title-link{display:inline;line-height:1.3;text-wrap:pretty}.vxc-thread-copy p{line-height:1.45}.vxc-thread-badges{display:flex;flex-wrap:wrap;gap:5px}
.vxc-thread-stat{font-variant-numeric:tabular-nums}.vxc-thread-last time{font-variant-numeric:tabular-nums}
.vxc-post-actions button,.vxc-post-actions a{min-height:32px}.vxp-post-actionbar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.vxp-post-management,.vxp-post-conversation{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.vxp-post-more{position:relative}.vxp-post-more>summary{list-style:none}.vxp-post-more>summary::-webkit-details-marker{display:none}
.vxc-post-more-menu{min-width:220px;max-width:min(320px,calc(100vw - 24px));max-height:min(70vh,520px);overflow:auto;overscroll-behavior:contain}
.vxp-reaction-form{display:inline-flex;margin:0}.vxp-reaction-form button{white-space:nowrap}
[data-entity-type][data-entity-id].is-updating{opacity:.72;transition:opacity var(--vxp-motion)}
.vxc-account-layout{display:grid;grid-template-columns:minmax(190px,240px) minmax(0,1fr);gap:20px;align-items:start}.vxc-account-nav{position:sticky;top:12px;display:flex;flex-direction:column;gap:2px}.vxc-account-nav a{display:flex;align-items:center;min-height:40px;padding:7px 10px;border-radius:var(--vxp-radius)}
.vxc-profile-section,.vxc-profile-about{min-width:0}.vxc-about-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.vxc-about-grid>div{min-width:0}.vxc-about-grid span{overflow-wrap:anywhere}
.vxc-semantic-account-menu{display:grid;gap:2px}.vxc-semantic-account-menu a{padding-inline:10px;border-radius:6px}
.vxc-conversation-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:center}.vxc-conversation-row>*{min-width:0}
.vxc-member-card,.vxc-member-hovercard{min-width:0}.vxc-member-hovercard{max-width:min(390px,calc(100vw - 24px))}
[data-voxbb-ui~="ajax-form"] [data-form-status],[data-composer-status]{min-height:1.25em}.vxp-inline-status[role=status]{font-size:.9em}
.vxp-skeleton{display:block;min-height:1em;border-radius:5px;background:currentColor;opacity:.09;animation:vxp-pulse 1.1s ease-in-out infinite alternate}@keyframes vxp-pulse{to{opacity:.17}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
@media (max-width:760px){
 .vxc-route-head{align-items:flex-start;flex-direction:column}.vxc-account-layout{display:block}.vxc-account-nav{position:static;display:flex;flex-direction:row;overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:thin;gap:4px;padding:2px 0 8px;margin-bottom:12px}.vxc-account-nav a{flex:0 0 auto;white-space:nowrap}
 .vxc-about-grid{grid-template-columns:1fr}.vxp-post-actionbar{align-items:stretch}.vxp-post-management,.vxp-post-conversation{flex:1 1 auto}.vxp-post-conversation{justify-content:flex-end}.vxc-post-more-menu{position:fixed!important;left:12px!important;right:12px!important;bottom:12px!important;top:auto!important;width:auto!important;max-width:none!important}
 .vxc-thread-row{grid-template-columns:auto minmax(0,1fr)!important}.vxc-thread-main{min-width:0}.pnf-thread-counts,.vxc-thread-counts{display:none!important}.vxc-thread-last{grid-column:2;justify-self:start!important}.vxc-thread-starter-avatar{display:none!important}
 .vxc-conversation-row{grid-template-columns:auto minmax(0,1fr)}.vxc-conversation-row>:last-child{grid-column:2}
}
@media (max-width:480px){.vxp-post-management{order:2}.vxp-post-conversation{order:1;justify-content:flex-start;width:100%}.vxc-post-actions button,.vxc-post-actions a{min-height:36px}.vxc-thread-row{column-gap:8px!important}}
/* Shared confirmation surface */
.voxbb-confirm-dialog{width:min(440px,calc(100vw - 28px));padding:0;border:0;border-radius:12px;background:Canvas;color:CanvasText;box-shadow:0 24px 80px rgb(0 0 0/.34)}.voxbb-confirm-dialog::backdrop{background:rgb(0 0 0/.55);backdrop-filter:blur(2px)}.voxbb-confirm-card{display:grid;gap:12px;padding:20px}.voxbb-confirm-card h2{margin:0;font-size:1.15rem}.voxbb-confirm-card p{margin:0;line-height:1.55;opacity:.78}.voxbb-confirm-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}.voxbb-confirm-actions button{min-height:38px;padding:7px 14px;border-radius:7px;border:1px solid color-mix(in srgb,currentColor 24%,transparent);background:transparent;color:inherit;font-weight:700}.voxbb-confirm-actions button:last-child{background:color-mix(in srgb,currentColor 9%,transparent)}.voxbb-confirm-actions button.is-danger{background:#a82121;color:#fff;border-color:#a82121}
/* Member/account/conversation composition contract */
.vxc-profile-tabs{display:flex;gap:3px;overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:thin}.vxc-profile-tabs a{flex:0 0 auto;min-height:38px;display:inline-flex;align-items:center;white-space:nowrap}
.hx-member-top{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:16px;align-items:center}.hx-member-info,.hx-member-namerow{min-width:0}.hx-member-namerow{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.hx-member-namerow h1{overflow-wrap:anywhere}.hx-member-actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.hx-member-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(92px,1fr));gap:1px}.hx-member-stats>div{min-width:0}.hx-member-stats dd{font-variant-numeric:tabular-nums}
.vxc-message-layout{display:grid;grid-template-columns:minmax(170px,220px) minmax(0,1fr);gap:18px;align-items:start}.vxc-message-layout>*,.vxc-conversation-list{min-width:0}.vxc-mailbox-nav{position:sticky;top:12px}.vxc-message-search{display:flex;align-items:center;gap:7px}.vxc-message-search .field{min-width:0;flex:1 1 auto}
.vxc-alert-list .vxc-list-item{min-width:0}.vxc-alert-list .vxc-list-item strong{overflow-wrap:anywhere}
@media(max-width:760px){.hx-member-top{grid-template-columns:auto minmax(0,1fr)}.hx-member-actions{grid-column:1/-1;justify-content:flex-start}.hx-member-stats{grid-template-columns:repeat(3,minmax(0,1fr))}.vxc-message-layout{display:block}.vxc-mailbox-nav{position:static;display:flex;gap:5px;overflow-x:auto;margin-bottom:10px}.vxc-mailbox-group-title{display:none}.vxc-mailbox-nav a{flex:0 0 auto;white-space:nowrap}.vxc-message-search{flex-wrap:wrap}.vxc-message-search .field{flex-basis:100%}}
@media(max-width:480px){.hx-member-top{display:block}.hx-member-avatar-wrap{margin-bottom:10px}.hx-member-actions{margin-top:10px}.hx-member-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Public section navigation + alerts */
.vxc-section-tabs{display:flex;align-items:center;gap:4px;overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:thin;border-bottom:1px solid color-mix(in srgb,currentColor 14%,transparent);margin:0 0 14px}.vxc-section-tabs a{position:relative;flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;min-height:42px;padding:8px 11px;text-decoration:none;white-space:nowrap}.vxc-section-tabs a[aria-current=page],.vxc-section-tabs a.is-active{font-weight:750}.vxc-section-tabs a[aria-current=page]::after,.vxc-section-tabs a.is-active::after{content:"";position:absolute;left:8px;right:8px;bottom:-1px;height:2px;background:currentColor;border-radius:2px 2px 0 0}.vxc-count,.vxc-status-badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.6em;min-height:1.6em;padding:0 .45em;border-radius:999px;font-size:.78em;font-weight:800;line-height:1}.vxc-alert-list{display:grid;gap:1px}.vxc-alert-row{display:grid;grid-template-columns:8px minmax(0,1fr) auto;align-items:center;gap:11px;min-height:64px;padding:11px 12px}.vxc-alert-row.is-unread{font-weight:inherit}.vxc-alert-marker{width:7px;height:7px;border-radius:50%;background:currentColor;opacity:.18}.vxc-alert-row.is-unread .vxc-alert-marker{opacity:.9}.vxc-alert-copy{min-width:0;display:grid;gap:4px}.vxc-alert-link{min-width:0;text-decoration:none}.vxc-alert-link strong{overflow-wrap:anywhere}.vxc-alert-time{font-size:.84em;opacity:.68;font-variant-numeric:tabular-nums}.vxc-alerts-head form{margin:0}.vxc-status-badge{opacity:.78}
@media(max-width:600px){.vxc-alert-row{grid-template-columns:7px minmax(0,1fr);padding-inline:8px}.vxc-alert-row>.vxc-status-badge{display:none}.vxc-section-tabs{margin-inline:-4px}.vxc-section-tabs a{min-height:44px}}
/* 1.9.57: shared in-post edit workspace, matching the normal thread rather than a detached edit page. */
.vxp-inline-edit-host{margin:10px 0 14px;border:1px solid color-mix(in srgb,currentColor 18%,transparent);border-radius:8px;background:color-mix(in srgb,currentColor 3%,transparent);overflow:hidden}.vxp-inline-edit-host .vxp-post-edit-form{margin:0}.vxp-inline-edit-host .vxp-post-edit-form>header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:10px 12px;border-bottom:1px solid color-mix(in srgb,currentColor 15%,transparent);background:color-mix(in srgb,currentColor 3%,transparent)}.vxp-inline-edit-host .vxp-post-edit-form>header small{display:block;font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;opacity:.62}.vxp-inline-edit-host .vxp-post-edit-form>header h2{margin:2px 0 0;font-size:16px}.vxp-inline-edit-host .vxp-post-edit-form>header>button{border:0;background:transparent;color:inherit;font:inherit;font-size:20px;cursor:pointer}.vxp-inline-edit-host .vxp-post-edit-form>section{padding:12px}.vxp-inline-edit-host .vxp-post-edit-form>footer{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border-top:1px solid color-mix(in srgb,currentColor 15%,transparent)}.vxp-inline-edit-host .vxp-post-edit-form>footer>div{display:flex;gap:7px}.vxp-inline-edit-host .vxp-post-edit-form>footer button{min-height:32px;padding:6px 10px;border:1px solid color-mix(in srgb,currentColor 20%,transparent);border-radius:6px;background:color-mix(in srgb,currentColor 4%,transparent);color:inherit;font:inherit;font-weight:700;cursor:pointer}.vxp-inline-edit-host .vxp-post-edit-form>footer .is-primary{background:var(--vxc-blue-2,var(--hx-blue,#2d75a8));border-color:var(--vxc-blue-2,var(--hx-blue,#2d75a8));color:#fff}.vxp-inline-edit-host .vxp-edit-reason{display:grid;gap:4px;margin-top:10px;font-size:12px;font-weight:700}.vxp-inline-edit-host .vxp-edit-reason input{width:100%;padding:7px 8px;border:1px solid color-mix(in srgb,currentColor 20%,transparent);border-radius:6px;background:color-mix(in srgb,currentColor 2%,transparent);color:inherit;font:inherit}.vxp-inline-edit-host .vxp-form-status{min-height:18px;margin:7px 0 0;font-size:12px;opacity:.72}.is-inline-post-editing [data-post-content][hidden],.is-inline-post-editing .postcontent[hidden]{display:none!important}
/* Reaction controls share the active theme palette and remain usable on touch. */
.vxc-reaction-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;position:relative}
.vxc-reaction-summary{display:flex;align-items:center;gap:6px;color:var(--vxm-muted,#6a7b88);font-size:12px}
[data-reaction-icons]{display:inline-flex;gap:2px;font-size:17px}
.vx-reaction-actions{display:flex;align-items:center;gap:1px}
.vx-reaction-actions form{margin:0}.vx-reaction-actions button{cursor:pointer;color:var(--vxm-link,#2475aa);background:transparent;border:0;font:inherit;padding:5px 6px}
.vx-reaction-actions button[aria-pressed="true"]{font-weight:700}
.vx-reaction-picker{position:relative}.vx-reaction-picker summary{list-style:none;cursor:pointer;padding:5px 8px;color:var(--vxm-link,#2475aa);border-radius:4px}
.vx-reaction-picker summary:hover,.vx-reaction-picker summary:focus-visible{background:var(--vxm-panel-2,#eaf1f8)}
.vx-reaction-choices{position:absolute;right:0;bottom:calc(100% + 8px);z-index:35;display:grid;grid-template-columns:repeat(4,60px);gap:3px;padding:7px;border:1px solid var(--vxm-line,#b9cbd8);border-radius:8px;background:var(--vxm-content,var(--vxm-panel,#fff));color:var(--vxm-text,#243441);box-shadow:0 8px 24px #0003}
.vx-reaction-choices button{display:grid;width:100%;gap:2px;justify-items:center;border-radius:5px;color:inherit;min-height:58px;padding:6px}
.vx-reaction-choices button:hover,.vx-reaction-choices button:focus-visible,.vx-reaction-choices button[aria-pressed="true"]{background:var(--vxm-panel-2,#eaf1f8)}
.vx-reaction-choices button>span{font-size:25px;transition:transform .1s}.vx-reaction-choices button:hover>span{transform:scale(1.15)}
.vx-reaction-choices small{font-size:10px}
.vxc-live-runtime.nb-live-strip{display:flex!important;flex-wrap:wrap!important;gap:10px}
.vxc-live-runtime .vxc-live-runtime-state{flex:1 1 360px;min-width:0;flex-wrap:wrap!important;overflow:visible!important;row-gap:8px}
.vxc-live-runtime .vxc-live-runtime-actions{flex:0 0 auto;margin-left:auto}
