/*!
Theme Name: Purple Moon Systems
Theme URI: https://www.purplemoondesigns.co.uk/
Author: Purple Moon Designs
Author URI: https://www.purplemoondesigns.co.uk
Description: A reusable base theme for Purple Moon Designs application projects — internal operations tools and client login/member portals. Ships the pmd framework (CPT + AJAX + Modal), role-based access, branded email, Cloudflare R2 media offload, Twilio 2FA login, PWA scaffold and an audit log. Brand everything per project from a single style-guide.php. Built on a WordPress + ACF Pro + Tailwind stack.
Version: 1.0.61
Requires at least: 6.0
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: purplemoonsystems

This theme is intended as a starting point. Per project: fill in the brand tokens
in the :root block below (this file is the live stylesheet), preview them on the
hub Style tab (renatas/style-guide.php), then build features with pmd_cpt() +
pmd_ajax() + pmd_modal_*(). See CLAUDE.md.
*/

/* =============================================================================
 * DESIGN TOKENS — single source of truth for the whole UI.
 *
 * Every component (including the pmd-modal system) reads these variables with a
 * fallback. Re-skin an entire project by editing ONLY this block, or by setting
 * the same variables inside pages/style-guide.php for that project.
 *
 * The default values below are the Rotary International palette (royal, azure,
 * gold, cranberry). Swap --ac / --ach / --acbg for another brand if needed.
 * Keep the same block in sync in renatas/style-guide.php (hub Style tab).
 * ============================================================================= */
:root {
	/* Surfaces */
	--bg:   #ffffff;   /* white — panels, inputs, modal card */
	--s1:   #F4F6FA;   /* canvas — page background, table headers, modal footer */
	--s2:   #EEF3FB;   /* royal-50 — tints, selected rows */
	--s3:   #DCE6F6;   /* royal-100 — stronger tint */

	/* Text */
	--t:    #101A2B;   /* ink — headings, primary text, modal scrim */
	--tm:   #38475F;   /* ink-700 — body copy, table cells */
	--td:   #64748B;   /* ink-500 — labels, captions, metadata */
	--td2:  #94A3B8;   /* ink-300 — icons at rest, placeholders */

	/* Borders */
	--bd:   #E2E7F0;   /* line — every border and divider */

	/* Brand — Rotary International */
	--ac:   #17458F;                     /* royal — primary actions, sidebar, accent bar */
	--ach:  #123770;                     /* royal-700 — hover / focused label */
	--acbg: #EEF3FB;                     /* royal-50 — chips, info callouts */
	--ac2:  #0067C8;                     /* azure — focus rings, links, secondary series */
	--royal-100: #DCE6F6;
	--royal-200: #B7CBEC;
	--royal-800: #0E2A56;
	--royal-900: #0A1E3D;

	/* Supporting brand */
	--azure:      #0067C8;
	--sky:        #00A2E0;
	--gold:       #F7A81B;
	--gold-50:    #FEF7E8;
	--gold-700:   #B77C08;
	--cranberry:  #D41367;
	--cranberry-50: #FDEAF2;
	--turquoise:  #00ADBB;
	--turquoise-50: #E5F8F9;
	--violet:     #901F93;
	--violet-50:  #F7EAF7;

	/* Status */
	--gn:   #047857;   /* emerald-700 — success / nothing to do */
	--am:   #B77C08;   /* gold-700 — warning / act soon */
	--rd:   #D41367;   /* cranberry — danger / overdue */
	--bl:   #0067C8;   /* azure — info */

	/* Radius scale */
	--r:    8px;       /* rounded-lg — controls, buttons, fields */
	--rm:   16px;      /* rounded-2xl — panels, modals */
	--rs:   8px;       /* chips, icon wells */

	/* Elevation */
	--shadow-soft: 0 1px 2px rgba(16, 26, 43, 0.04), 0 8px 24px -16px rgba(16, 26, 43, 0.18); /* panel */
	--shadow-md:   0 2px 4px rgba(16, 26, 43, 0.04), 0 18px 40px -24px rgba(16, 26, 43, 0.35); /* lift */
	--shadow-xl:   0 2px 4px rgba(16, 26, 43, 0.04), 0 18px 40px -24px rgba(16, 26, 43, 0.35);

	/* Motion */
	--ease: cubic-bezier(0.23, 1, 0.32, 1);
	--dur-press: 150ms;
	--dur-menu:  160ms;
	--dur-modal: 200ms;

	/* Type — one family; weight and colour carry hierarchy */
	--font-heading: 'Open Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;
	--font-body:    'Open Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;
}

/* =============================================================================
 * MINIMAL RESET / BASE
 * Tailwind (loaded per-page or via build) handles utilities. This file owns
 * brand tokens + the app shell structure so it survives Tailwind JIT purging.
 * ============================================================================= */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body { margin: 0; font-family: var(--font-body); color: var(--t); background: var(--s1); -webkit-font-smoothing: antialiased; }
h1, h2, h3, h4, h5, h6 { font-family: var(--font-heading); font-weight: 700; }
img { max-width: 100%; height: auto; display: block; }
a { color: var(--azure); text-decoration: none; }
a:hover { color: var(--ach); }
*:focus-visible { outline: 2px solid var(--azure); outline-offset: 2px; }
.tabular-nums { font-variant-numeric: tabular-nums; }

.content_wrap { max-width: 1400px; width: 90%; margin: 0 auto; }
.screen-reader-text { position: absolute !important; clip: rect(1px,1px,1px,1px); width: 1px; height: 1px; overflow: hidden; }

/* =============================================================================
 * APP SHELL — sidebar + main, both fully token-driven.
 * Class prefix: pms-  (rename freely; keep prefixes consistent per project)
 * ============================================================================= */
.pms-app { display: flex; min-height: 100vh; background: var(--s1); }

/* Sign-in — royal-900 canvas, white card (demo SignIn) */
.pms-login-body { margin: 0; min-height: 100vh; background: var(--royal-900); }
.pms-login {
	min-height: 100vh;
	display: flex; align-items: center; justify-content: center;
	padding: 48px 16px;
	background: var(--royal-900);
}
.pms-login__card {
	width: 100%; max-width: 448px;
	background: var(--bg);
	border-radius: var(--rm);
	padding: 32px;
	box-shadow: var(--shadow-md);
}
.pms-login__logo { display: block; height: 100px; width: auto; margin: 0 auto; }
.pms-login__wordmark {
	margin: 0; text-align: center;
	font-size: 18px; font-weight: 700; letter-spacing: -.3px; color: var(--ac);
}
.pms-login__title {
	margin: 24px 0 0; text-align: center;
	font-size: 24px; font-weight: 700; line-height: 1.25; color: var(--t);
}
.pms-login__lede {
	margin: 8px 0 0; text-align: center;
	font-size: 14px; font-weight: 400; line-height: 1.6; color: var(--td);
}
.pms-login__card > .pms-note { margin: 16px 0 0; }
.pms-login__form { margin-top: 24px; display: flex; flex-direction: column; gap: 16px; }
.pms-login__honeypot { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.pms-login__row {
	display: flex; align-items: center; justify-content: space-between; gap: 12px;
}
.pms-login__remember {
	display: flex; align-items: center; gap: 8px;
	font-size: 12px; font-weight: 600; color: var(--tm); cursor: pointer;
}
.pms-login__remember input {
	width: 14px; height: 14px; margin: 0;
	accent-color: var(--ac);
}
.pms-login__forgot {
	font-size: 12px; font-weight: 600; color: var(--ach);
	background: none; border: 0; padding: 0; cursor: pointer;
}
.pms-login__forgot:hover { color: var(--ach); text-decoration: underline; }
.pms-login__submit { width: 100%; font-weight: 700; }
.pms-login__submit i { width: 16px; height: 16px; }
.pms-login__otp { letter-spacing: .3em; text-align: center; }

.pms-tabbar,
.pms-sheet,
.pms-sheet-back,
.pms-topbar { display: none; }

.pms-sidebar {
	width: 256px; flex: 0 0 256px;
	background: var(--royal-900);
	display: flex; flex-direction: column;
	position: sticky; top: 0; height: 100vh; overflow: visible;
	z-index: 40;
	transition: width 200ms var(--ease), flex-basis 200ms var(--ease);
}
.pms-sidebar__brand { position: relative; padding: 20px 16px; }
.pms-sidebar__logo {
	display: flex; align-items: center; justify-content: center;
	width: fit-content; min-width: 148px; min-height: 56px; margin: 0 auto;
	background: #fff; border-radius: 12px; padding: 8px 16px;
}
.pms-sidebar__logo a { display: block; line-height: 0; }
.pms-sidebar__logo img,
.pms-sidebar__logo .custom-logo { display: block; height: 40px; width: auto; }
.pms-sidebar__logo-text {
	display: block; max-width: 168px;
	font-family: var(--font-heading); font-size: 13px; font-weight: 700;
	line-height: 1.25; color: var(--ac); text-align: center;
}
.pms-sidebar__club {
	margin: 0 12px 4px;
	padding: 10px 12px;
	border-radius: 12px;
	background: rgba(212, 168, 67, .15);
}
.pms-sidebar__club-kicker {
	margin: 0;
	font-size: 11px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase;
	color: var(--gold);
}
.pms-sidebar__club-name {
	margin: 2px 0 0;
	font-size: 14px; font-weight: 700; line-height: 1.3; color: #fff;
}

.pms-sidebar__nav { flex: 1 1 auto; padding: 16px 12px; display: flex; flex-direction: column; gap: 2px; }

.pms-sidebar__item,
.pms-sidebar__collapse {
	position: relative;
	display: flex; align-items: center; gap: 12px;
	width: 100%;
	padding: 10px 12px; border-radius: 12px;
	color: var(--royal-100); font-weight: 600; font-size: 14px;
	text-decoration: none; text-align: left;
	border: 0; background: transparent; cursor: pointer;
	font-family: var(--font-body);
	transition: background 150ms var(--ease), color 150ms var(--ease);
}
.pms-sidebar__item:hover,
.pms-sidebar__collapse:hover { background: rgba(255,255,255,.1); color: #fff; }
.pms-sidebar__item--active,
.pms-sidebar__item--active:hover {
	background: #fff;
	color: var(--royal-800);
}
.pms-sidebar__icon { width: 16px; height: 16px; flex: 0 0 16px; color: currentColor; }
.pms-sidebar__label { white-space: nowrap; }

.pms-sidebar__foot { margin-top: auto; padding: 12px; display: flex; flex-direction: column; gap: 2px; }
.pms-sidebar__meta {
	position: relative;
	display: flex; align-items: center; gap: 8px;
	padding: 8px 12px; border-radius: 12px;
	color: var(--royal-200); font-size: 12px; font-weight: 600;
	text-decoration: none;
	transition: background 150ms var(--ease), color 150ms var(--ease);
}
.pms-sidebar__meta:hover { background: rgba(255,255,255,.1); color: #fff; }
.pms-sidebar__meta i { width: 14px; height: 14px; flex: 0 0 14px; }

/* Collapsed icon rail + hover tooltip */
.pms-sidebar.is-collapsed { width: 72px; flex: 0 0 72px; min-width: 0; max-width: 72px; }
.pms-sidebar.is-collapsed .pms-sidebar__brand { padding: 16px 10px; }
.pms-sidebar.is-collapsed .pms-sidebar__logo { min-width: 0; min-height: 0; padding: 6px; }
.pms-sidebar.is-collapsed .pms-sidebar__logo img,
.pms-sidebar.is-collapsed .pms-sidebar__logo .custom-logo { height: 28px; }
.pms-sidebar.is-collapsed .pms-sidebar__logo-text { display: none; }
.pms-sidebar.is-collapsed .pms-sidebar__club { display: none; }
.pms-sidebar.is-collapsed .pms-sidebar__nav,
.pms-sidebar.is-collapsed .pms-sidebar__foot { padding-left: 10px; padding-right: 10px; }
.pms-sidebar.is-collapsed .pms-sidebar__item,
.pms-sidebar.is-collapsed .pms-sidebar__collapse,
.pms-sidebar.is-collapsed .pms-sidebar__meta { justify-content: center; gap: 0; padding: 10px; }
.pms-sidebar.is-collapsed .pms-sidebar__label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0,0,0,0); }
.pms-sidebar.is-collapsed .pms-sidebar__item[data-tooltip]::after,
.pms-sidebar.is-collapsed .pms-sidebar__collapse[data-tooltip]::after,
.pms-sidebar.is-collapsed .pms-sidebar__meta[data-tooltip]::after {
	content: attr(data-tooltip);
	position: absolute; left: calc(100% + 10px); top: 50%;
	transform: translateY(-50%);
	padding: 6px 10px; border-radius: 8px;
	background: var(--t); color: #fff;
	font-size: 12px; font-weight: 600; line-height: 1.3; white-space: nowrap;
	box-shadow: var(--shadow-md);
	opacity: 0; pointer-events: none;
	transition: opacity 150ms var(--ease);
	z-index: 50;
}
.pms-sidebar.is-collapsed .pms-sidebar__item:hover::after,
.pms-sidebar.is-collapsed .pms-sidebar__collapse:hover::after,
.pms-sidebar.is-collapsed .pms-sidebar__meta:hover::after { opacity: 1; }

.pms-main { flex: 1 1 auto; min-width: 0; padding: 28px 32px; }

/* Generic card / panel surface */
.pms-card,
.pms-panel { background: var(--bg); border: 1px solid var(--bd); border-radius: var(--rm); box-shadow: var(--shadow-soft); }
.pms-card { padding: 20px; }
.pms-panel { overflow: hidden; }
.pms-panel__head {
	display: flex; align-items: flex-start; justify-content: space-between; gap: 16px;
	padding: 16px 20px; border-bottom: 1px solid var(--bd);
}
.pms-panel__title { margin: 0; font-size: 14px; font-weight: 700; color: var(--t); }
.pms-panel__desc { margin: 2px 0 0; font-size: 12px; color: var(--td); }
.pms-panel__body { padding: 20px; }
.pms-accent-bar { display: block; height: 4px; width: 100%; background: var(--ac); }
.pms-accent-bar--royal { background: var(--ac); }
.pms-accent-bar--azure { background: var(--azure); }
.pms-accent-bar--sky { background: var(--sky); }
.pms-accent-bar--gold { background: var(--gold); }
.pms-accent-bar--cranberry { background: var(--cranberry); }
.pms-accent-bar--turquoise { background: var(--turquoise); }
.pms-accent-bar--violet { background: var(--violet); }

/* Buttons — one primary action per surface */
.pms-btn {
	display: inline-flex; align-items: center; justify-content: center; gap: 6px;
	height: 40px; padding: 0 16px; border-radius: var(--r);
	font-family: var(--font-body); font-weight: 600; font-size: 14px;
	cursor: pointer; border: 1px solid transparent;
	transition: background-color var(--dur-press) var(--ease), border-color var(--dur-press) var(--ease), color var(--dur-press) var(--ease);
}
.pms-btn:disabled { opacity: .4; cursor: not-allowed; }
button.pms-btn.pms-btn--primary,
.pms-btn.pms-btn--primary { background-color: var(--ac); color: #fff; }
button.pms-btn.pms-btn--primary:hover:not(:disabled),
.pms-btn.pms-btn--primary:hover:not(:disabled) { background-color: var(--ach); color: #fff; }
.pms-btn.pms-btn--secondary { background-color: var(--bg); color: var(--tm); border-color: var(--bd); }
.pms-btn.pms-btn--secondary:hover:not(:disabled) { background-color: var(--s1); }
.pms-btn.pms-btn--row { background-color: var(--bg); color: var(--tm); border-color: var(--bd); }
.pms-btn.pms-btn--row:hover:not(:disabled) { border-color: #B7CBEC; background-color: var(--acbg); color: var(--ach); }
.pms-btn.pms-btn--row.is-attended { background-color: #ecfdf5; color: #047857; border-color: transparent; box-shadow: inset 0 0 0 1px rgba(5,150,105,.20); }
.pms-btn.pms-btn--row.is-attended:hover:not(:disabled) { background-color: #d1fae5; color: #047857; border-color: transparent; }
.pms-btn.pms-btn--destructive { background-color: var(--cranberry-50); color: var(--cranberry); border-color: transparent; }
.pms-btn.pms-btn--destructive:hover:not(:disabled) { background-color: var(--cranberry); color: #fff; }
.pms-btn.pms-btn--ghost { background-color: transparent; color: var(--td); }
.pms-btn.pms-btn--ghost:hover:not(:disabled) { background-color: var(--s1); color: var(--t); }
.pms-btn--sm { height: 32px; padding: 0 12px; font-size: 12px; font-weight: 700; }

/* Status pills — state is always a word, never colour alone */
.pms-pill {
	display: inline-flex; align-items: center;
	padding: 2px 10px; border-radius: 999px;
	font-size: 11px; font-weight: 600; line-height: 1.4;
	box-shadow: inset 0 0 0 1px var(--pill-ring, transparent);
}
.pms-pill--green,
.pms-pill--active   { background: #ecfdf5; color: #047857; --pill-ring: rgba(5,150,105,.20); }
.pms-pill--amber,
.pms-pill--pending  { background: var(--gold-50); color: var(--gold-700); --pill-ring: rgba(183,124,8,.20); }
.pms-pill--red,
.pms-pill--expired  { background: #fff1f2; color: #be123c; --pill-ring: rgba(225,29,72,.20); }
.pms-pill--blue,
.pms-pill--draft    { background: var(--acbg); color: var(--ach); --pill-ring: rgba(23,69,143,.20); }
.pms-pill--gray,
.pms-pill--archived { background: #f1f5f9; color: var(--td); --pill-ring: rgba(148,163,184,.30); }
.pms-pill--azure { background: #e6f1fb; color: var(--azure); --pill-ring: rgba(0,103,200,.20); }
.pms-pill--turquoise { background: var(--turquoise-50); color: var(--turquoise); --pill-ring: rgba(0,173,187,.22); }

/* Floating-label fields — label sits in the field, then rises on focus/value */
.pms-field { display: block; }
.pms-field__wrap { position: relative; display: block; }
.pms-field__input,
.pms-field__textarea {
	width: 100%; box-sizing: border-box;
	min-height: 48px;
	border: 1px solid var(--bd); border-radius: var(--r);
	background: var(--bg); color: var(--t);
	font-family: var(--font-body); font-size: 14px;
	padding: 20px 12px 6px;
	transition: border-color var(--dur-press) var(--ease);
}
.pms-field__textarea { min-height: 88px; resize: vertical; }
.pms-field__input::placeholder,
.pms-field__textarea::placeholder { color: transparent; }
.pms-field__input:focus::placeholder,
.pms-field__textarea:focus::placeholder { color: var(--td2); }
.pms-field__input:focus,
.pms-field__textarea:focus,
.pms-field__select:focus {
	outline: none;
	border-color: var(--azure);
}
.pms-field__label {
	position: absolute; left: 12px; top: 6px; z-index: 1;
	pointer-events: none;
	font-size: 10px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase;
	color: var(--td);
	transition: top var(--dur-press) ease-out, font-size var(--dur-press) ease-out, color var(--dur-press) ease-out;
}
.pms-field__input:placeholder-shown:not(:focus) + .pms-field__label,
.pms-field__textarea:placeholder-shown:not(:focus) + .pms-field__label {
	top: 13px; font-size: 14px; font-weight: 400; letter-spacing: normal; text-transform: none; color: var(--td2);
}
.pms-field__input:focus + .pms-field__label,
.pms-field__textarea:focus + .pms-field__label,
.pms-field--raised .pms-field__label { top: 6px; font-size: 10px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
.pms-field__input:focus + .pms-field__label,
.pms-field__textarea:focus + .pms-field__label { color: var(--ach); }
.pms-field__hint { margin: 4px 4px 0; font-size: 12px; color: var(--td); }

/* Selects — no floater, no placeholder, full width, same 48px box as inputs */
.pms-field--select { display: block; width: 100%; }
.pms-field__select {
	display: block;
	width: 100%;
	box-sizing: border-box;
	height: 48px;
	min-height: 48px;
	padding: 0 36px 0 12px;
	border: 1px solid var(--bd);
	border-radius: var(--r);
	background-color: var(--bg);
	color: var(--t);
	font-family: var(--font-body);
	font-size: 14px;
	line-height: 48px;
	appearance: none;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%2394A3B8' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 12px center;
	transition: border-color var(--dur-press) var(--ease);
}

/* Searchable combo — closed state matches a select; search appears once open */
.pms-combo { position: relative; display: block; width: 100%; }
.pms-combo__btn {
	position: relative;
	display: flex; align-items: center; width: 100%; box-sizing: border-box;
	height: 48px; min-height: 48px; padding: 0 36px 0 12px;
	border: 1px solid var(--bd); border-radius: var(--r);
	background-color: var(--bg); color: var(--t);
	font-family: var(--font-body); font-size: 14px; font-weight: 400; text-align: left;
	appearance: none; cursor: pointer;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%2394A3B8' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 12px center;
	transition: border-color var(--dur-press) var(--ease);
}
.pms-combo--filled .pms-combo__btn,
.pms-combo__btn.is-open,
.pms-combo__btn:focus { padding: 20px 36px 6px 12px; }
.pms-combo__btn:focus,
.pms-combo__btn.is-open { outline: none; border-color: var(--azure); }
.pms-combo__value { display: block; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pms-combo__label {
	position: absolute; left: 12px; top: 13px; z-index: 1;
	pointer-events: none;
	font-size: 14px; font-weight: 400; letter-spacing: normal; text-transform: none;
	color: var(--td2);
	transition: top var(--dur-press) ease-out, font-size var(--dur-press) ease-out, color var(--dur-press) ease-out;
}
.pms-combo--filled .pms-combo__label,
.pms-combo__btn.is-open .pms-combo__label,
.pms-combo__btn:focus .pms-combo__label {
	top: 6px; font-size: 10px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--td);
}
.pms-combo__btn:focus .pms-combo__label,
.pms-combo__btn.is-open .pms-combo__label { color: var(--ach); }
.pms-combo__panel {
	display: flex; flex-direction: column; min-height: 0;
	background: var(--bg); border: 1px solid var(--bd); border-radius: 12px;
	box-shadow: var(--shadow-md); overflow: hidden;
}
.pms-combo__panel[hidden] { display: none !important; }
.pms-combo__search {
	display: flex; align-items: center; gap: 8px; flex: 0 0 auto;
	padding: 8px 12px; border-bottom: 1px solid var(--bd); background: var(--s1);
}
.pms-combo__search i { width: 16px; height: 16px; color: var(--td2); flex: 0 0 16px; }
.pms-combo__search input {
	flex: 1 1 auto; min-width: 0; height: 32px; border: 0; padding: 0;
	background: transparent; color: var(--t);
	font-family: var(--font-body); font-size: 14px;
}
.pms-combo__search input:focus { outline: none; }
.pms-combo__search input::placeholder { color: var(--td2); }
.pms-combo__list { margin: 0; padding: 4px 0; list-style: none; overflow-y: auto; flex: 1 1 auto; }
.pms-combo__list [role="option"] { padding: 8px 12px; font-size: 14px; color: var(--tm); cursor: pointer; }
.pms-combo__list [role="option"]:hover,
.pms-combo__list [role="option"].is-active { background: var(--acbg); color: var(--ach); }
.pms-combo__list [role="option"][aria-selected="true"] { font-weight: 600; color: var(--t); }
.pms-combo__empty { margin: 0; padding: 16px 12px; font-size: 12px; color: var(--td); text-align: center; }

/* Callouts / inline feedback */
.pms-note { display: flex; align-items: flex-start; gap: 8px; border-radius: 12px; padding: 12px 16px; font-size: 14px; line-height: 1.5; }
.pms-page-head + .pms-note { margin-bottom: 20px; }
.pms-note--info    { background: var(--acbg); color: var(--ach); }
.pms-note--success { background: #ecfdf5; color: #047857; }
.pms-note--warning { background: var(--gold-50); color: var(--t); }
.pms-note--error   { background: var(--cranberry-50); color: var(--cranberry); }
.pms-note i { width: 16px; height: 16px; flex: 0 0 16px; margin-top: 2px; }

/* Stat card */
.pms-stat { overflow: hidden; background: var(--bg); border: 1px solid var(--bd); border-radius: var(--rm); box-shadow: var(--shadow-soft); }
.pms-stat::before { content: ''; display: block; height: 4px; background: var(--ac); }
.pms-stat__body { display: flex; align-items: flex-start; gap: 12px; padding: 20px; }
.pms-stat__icon { display: flex; align-items: center; justify-content: center; width: 40px; height: 40px; flex: 0 0 40px; border-radius: 12px; background: var(--acbg); color: var(--ach); }
.pms-stat__icon i { width: 20px; height: 20px; }
.pms-stat__label { margin: 0; font-size: 12px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--td); }
.pms-stat__value { margin: 2px 0 0; font-size: 30px; font-weight: 700; line-height: 1; font-variant-numeric: tabular-nums; color: var(--t); }
.pms-stat__sub { margin: 4px 0 0; font-size: 12px; color: var(--td); }
.pms-stat--highlight { max-width: 320px; margin-bottom: 20px; }
.pms-stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; margin-bottom: 20px; }
.pms-stats--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.pms-stats--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.pms-stats .pms-stat,
.pms-stats .pms-stat--highlight { max-width: none; margin: 0; }
.pms-stat--azure::before { background: var(--azure); }
.pms-stat--azure .pms-stat__icon { background: #e6f1fb; color: var(--azure); }
.pms-stat--gold::before { background: var(--gold); }
.pms-stat--gold .pms-stat__icon { background: var(--gold-50); color: var(--gold-700); }
.pms-stat--cranberry::before { background: var(--cranberry); }
.pms-stat--cranberry .pms-stat__icon { background: var(--cranberry-50); color: var(--cranberry); }
.pms-stat--turquoise::before { background: var(--turquoise); }
.pms-stat--turquoise .pms-stat__icon { background: var(--turquoise-50); color: var(--turquoise); }
.pms-stat--emerald::before { background: var(--gn); }
.pms-stat--emerald .pms-stat__icon { background: #ecfdf5; color: #047857; }

/* Page heading */
.pms-page-head { margin-bottom: 24px; }
.pms-page-head h1 { margin: 0; font-size: 24px; font-weight: 700; color: var(--t); }
.pms-page-head p { margin: 4px 0 0; font-size: 14px; color: var(--td); }
.pms-page-head__kicker { margin: 0 0 4px; font-size: 12px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--td); }
.pms-page-head .pms-btn i { width: 16px; height: 16px; }
a.pms-stat { text-decoration: none; color: inherit; }

/* List toolbar — search, select, status chips */
.pms-toolbar {
	display: flex; flex-wrap: wrap; align-items: center; gap: 12px;
	padding: 12px 16px; margin-bottom: 20px;
}
.pms-search { position: relative; display: block; flex: 1 1 20px; min-width: 220px; }
.pmd-modal .pms-search { width: 100%; flex: none; min-width: 0; margin: 0 0 8px; }
.pms-search--compact { flex: 0 1 260px; min-width: 200px; }
.pms-search__icon {
	position: absolute; left: 12px; top: 50%; transform: translateY(-50%);
	width: 16px; height: 16px; color: var(--td2); pointer-events: none;
}
.pms-search__input {
	width: 100%; height: 40px; box-sizing: border-box;
	padding: 0 12px 0 36px;
	border: 1px solid var(--bd); border-radius: var(--r);
	background: var(--s1); color: var(--t);
	font-family: var(--font-body); font-size: 14px;
	transition: border-color var(--dur-press) var(--ease), background var(--dur-press) var(--ease);
}
.pms-search__input::placeholder { color: var(--td2); }
.pms-search__input:focus { outline: none; border-color: var(--azure); background: var(--bg); }
.pms-toolbar__select { width: auto; min-width: 200px; flex: 0 1 240px; }
.pms-toolbar__select .pms-field__select { height: 40px; min-height: 40px; line-height: 40px; }
.pms-filters { display: flex; flex-wrap: wrap; gap: 4px; }
.pms-filters__btn {
	display: inline-flex; align-items: center; height: 32px; padding: 0 12px;
	border: 0; border-radius: var(--r); background: transparent;
	color: var(--td); font-family: var(--font-body); font-size: 12px; font-weight: 600;
	text-decoration: none; cursor: pointer;
	transition: background var(--dur-press) var(--ease), color var(--dur-press) var(--ease);
}
.pms-filters__btn:hover { background: var(--s1); color: var(--t); }
.pms-filters__btn.is-active { background: var(--acbg); color: var(--ach); }
.pms-toolbar__count { margin: 0 0 0 auto; font-size: 12px; font-weight: 600; color: var(--td); font-variant-numeric: tabular-nums; }

/* Data table */
.pms-table-wrap { overflow-x: auto; }
.pms-table { width: 100%; min-width: 720px; border-collapse: collapse; text-align: left; font-size: 14px; }
.pms-table th {
	padding: 12px 20px; font-size: 11px; font-weight: 700; letter-spacing: .04em;
	text-transform: uppercase; color: var(--td); background: var(--s1); border-bottom: 1px solid var(--bd);
}
.pms-table td { padding: 12px 20px; color: var(--tm); border-bottom: 1px solid var(--bd); vertical-align: middle; }
.pms-table th:nth-child(2),
.pms-table td:nth-child(2),
.pms-table th:nth-child(4),
.pms-table td:nth-child(4) { white-space: nowrap; }
.pms-table__actions { text-align: right; width: 1%; white-space: nowrap; }
.pms-table tbody tr:last-child td { border-bottom: 0; }
.pms-table tbody tr:hover { background: var(--s1); }
.pms-table__name { margin: 0; font-weight: 700; color: var(--t); }
.pms-table__name a { color: inherit; text-decoration: none; }
.pms-table__name a:hover { color: var(--ach); }
.pms-table__meta { display: block; margin: 2px 0 0; font-size: 12px; color: var(--td); }
.pms-table__num { font-variant-numeric: tabular-nums; }
.pms-table__num .pms-table__meta { display: inline; margin: 0 0 0 8px; }
.pms-table__empty { margin: 0; padding: 48px 20px; text-align: center; font-size: 14px; color: var(--td); }
.pms-table__docs { font-size: 12px; font-weight: 600; }
.pms-table__docs--active { color: #047857; }
.pms-table__docs--pending { color: var(--gold-700); }
.pms-table__docs--expired { color: #be123c; }
.pms-table__docs--draft { color: var(--ach); }
.pms-table__docs--archived { color: var(--td2); }

/* Document count chips — used on mobile row cards */
.pms-count {
	display: inline-flex; align-items: center; gap: 4px;
	padding: 2px 8px; border-radius: 999px;
	font-size: 11px; font-weight: 600; line-height: 1.4;
	box-shadow: inset 0 0 0 1px var(--pill-ring, transparent);
}
.pms-count .tabular-nums { font-variant-numeric: tabular-nums; }
.pms-count--expired  { background: #fff1f2; color: #be123c; --pill-ring: rgba(225,29,72,.20); }
.pms-count--expiring { background: var(--gold-50); color: var(--gold-700); --pill-ring: rgba(183,124,8,.20); }
.pms-count--valid    { background: #ecfdf5; color: #047857; --pill-ring: rgba(5,150,105,.20); }
.pms-count--review   { background: var(--acbg); color: var(--ach); --pill-ring: rgba(23,69,143,.20); }

/* Mobile row card — replaces the table below 1024px */
.pms-list__cards { display: none; }
.pms-row-card {
	overflow: hidden;
	background: var(--bg);
	border: 1px solid var(--bd);
	border-radius: var(--rm);
	box-shadow: var(--shadow-soft);
}
.pms-row-card__bar { display: block; height: 4px; background: var(--gold); }
.pms-row-card__body {
	display: flex; align-items: flex-start; justify-content: space-between; gap: 12px;
	padding: 14px 16px 12px;
}
.pms-row-card__main { min-width: 0; }
.pms-row-card__title {
	margin: 0; font-size: 14px; font-weight: 700; color: var(--t);
	white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.pms-row-card__meta {
	margin: 2px 0 0; font-size: 12px; color: var(--td);
	white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.pms-row-card__chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.pms-row-card__foot {
	display: flex; justify-content: flex-end;
	padding: 10px 16px;
	border-top: 1px solid var(--bd);
	background: var(--s1);
}

/* Pagination */
.pms-pager {
	display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px;
	padding: 12px 20px; border-top: 1px solid var(--bd);
}
.pms-pager p { margin: 0; font-size: 12px; color: var(--td); font-variant-numeric: tabular-nums; }
.pms-pager__nav { display: flex; align-items: center; gap: 8px; }
.pms-pager__page { font-size: 12px; font-weight: 600; color: var(--t); font-variant-numeric: tabular-nums; }
.pms-pager .pms-btn i { width: 14px; height: 14px; }
.pms-pager .is-disabled { pointer-events: none; opacity: .4; }

/* Action-menu portal target (see CLAUDE.md — dropdowns are portalled to body) */
.pms-actions { position: relative; display: inline-block; }
.pms-actions__btn i { width: 14px; height: 14px; transition: transform 150ms var(--ease); }
.pms-actions__btn.is-open i { transform: rotate(180deg); }
.pms-dropdown { position: fixed; z-index: 9999; min-width: 160px; background: var(--bg); border: 1px solid var(--bd); border-radius: 12px; box-shadow: var(--shadow-md); padding: 4px 0; }
.pms-dropdown[hidden] { display: none !important; }
.pms-dropdown__item {
	display: flex; align-items: center; gap: 10px; width: 100%; box-sizing: border-box;
	padding: 8px 12px; border: 0; background: transparent;
	font-family: var(--font-body); font-size: 14px; font-weight: 600;
	color: var(--tm); text-align: left; text-decoration: none; cursor: pointer;
}
.pms-dropdown__item:hover:not(:disabled) { background: var(--s1); }
.pms-dropdown__item:disabled,
.pms-dropdown__item[aria-disabled="true"] {
	opacity: .4; cursor: not-allowed;
}
.pms-dropdown__item i { width: 16px; height: 16px; flex: 0 0 16px; }

.pms-back { margin: 0 0 16px; }
.pms-back a {
	display: inline-flex; align-items: center; gap: 4px;
	font-size: 13px; font-weight: 600; color: var(--td); text-decoration: none;
}
.pms-back a:hover { color: var(--ach); }
.pms-back i { width: 14px; height: 14px; }
.pms-page-head--row { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: 16px; }
.pms-page-head__aside { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.pms-detail-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 20px; margin-bottom: 20px; }
.pms-dl { margin: 0; padding: 8px 20px 20px; display: grid; gap: 14px; }
.pms-dl dt { margin: 0; font-size: 10px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--td); }
.pms-dl dd { margin: 4px 0 0; font-size: 14px; color: var(--tm); }
.pms-form-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 16px; }
.pms-form-actions {
	display: flex; justify-content: flex-end; gap: 8px;
	padding: 12px 20px; border-top: 1px solid var(--bd); background: var(--s1);
}

/* Member profile — hero + 2/3 + 1/3, document rows, facts */
.pms-profile { width: 100%; max-width: 1400px; margin: 0 auto; }
.pms-profile > .pms-note { margin: 0 0 24px; }
.pms-profile-hero {
	display: flex; flex-wrap: wrap; align-items: flex-start; gap: 20px;
	padding: 24px; margin-bottom: 24px;
	background: var(--bg); border: 1px solid var(--bd); border-radius: var(--rm);
	box-shadow: var(--shadow-soft);
	overflow: hidden;
}
.pms-profile-hero > .pms-avatar--lg { margin-top: 2px; }
.pms-profile-hero > .pms-club-logo--hero { margin-top: 2px; flex: 0 0 auto; }
.pms-profile-hero > .pms-accent-bar { flex: 1 0 100%; margin: -24px -24px 0; width: auto; }
.pms-profile-hero__main { min-width: 0; flex: 1 1 240px; }
.pms-profile-hero__title { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; }
.pms-profile-hero__title h1 { margin: 0; font-size: 24px; font-weight: 700; color: var(--t); }
.pms-profile-hero__role { margin: 4px 0 0; font-size: 14px; color: var(--tm); }
.pms-profile-hero__meta { margin: 2px 0 0; font-size: 12px; color: var(--td); }
.pms-profile-hero__facts { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 20px; margin: 8px 0 0; font-size: 14px; color: var(--td); }
.pms-profile-hero__facts span { display: inline-flex; align-items: center; gap: 6px; }
.pms-profile-hero__facts i { width: 16px; height: 16px; }
.pms-profile-hero__facts a { color: inherit; font-weight: 600; text-decoration: none; }
.pms-profile-hero__facts a:hover { color: var(--ach); }
.pms-profile-hero__actions { display: flex; flex-wrap: wrap; gap: 8px; }
.pms-profile-hero__actions .pms-btn i { width: 16px; height: 16px; }
.pms-tabs {
	display: flex; flex-wrap: wrap; gap: 4px;
	margin: 0 0 20px; border-bottom: 1px solid var(--bd);
}
.pms-tabs__btn {
	display: inline-flex; align-items: center; gap: 8px;
	height: 40px; padding: 0 16px; margin-bottom: -1px;
	border: 0; border-bottom: 2px solid transparent; background: none;
	color: var(--td); font-family: var(--font-body); font-size: 14px; font-weight: 600;
	cursor: pointer;
	transition: color 150ms var(--ease), border-color 150ms var(--ease);
}
.pms-tabs__btn:hover { color: var(--t); }
.pms-tabs__btn.is-active { color: var(--ach); border-bottom-color: var(--ac); }
.pms-tabs__count {
	display: inline-flex; align-items: center; height: 20px; padding: 0 7px;
	border-radius: 999px; background: var(--s1); color: var(--td);
	font-size: 12px; font-weight: 700; font-variant-numeric: tabular-nums;
}
.pms-tabs__btn.is-active .pms-tabs__count { background: var(--acbg); color: var(--ach); }
.pms-tabs--flush { margin: 16px 0 0; }
.pms-tab-panel[hidden] { display: none !important; }
.pms-profile-grid { display: grid; grid-template-columns: minmax(0, 2fr) minmax(260px, 1fr); gap: 24px; }
.pms-profile-grid__main,
.pms-profile-grid__side { display: flex; flex-direction: column; gap: 24px; min-width: 0; }
.pms-text-link {
	display: inline-flex; align-items: center; gap: 6px;
	margin: 0; padding: 0; border: 0; background: none; cursor: pointer;
	font-family: var(--font-body); font-size: 12px; font-weight: 600; color: var(--ach);
}
.pms-text-link:hover { text-decoration: underline; }
.pms-text-link i { width: 14px; height: 14px; }
.pms-doc-list { margin: 0; }
.pms-doc-row {
	display: flex; flex-wrap: wrap; align-items: center; gap: 12px;
	padding: 14px 20px; border-top: 1px solid var(--bd);
}
.pms-doc-list .pms-doc-row:first-child { border-top: 0; }
.pms-doc-row__main { min-width: 0; flex: 1 1 180px; }
.pms-doc-row__title { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0; font-size: 14px; font-weight: 700; color: var(--t); }
.pms-doc-row__meta { margin: 2px 0 0; font-size: 12px; color: var(--td); }
.pms-doc-row__aside { text-align: right; margin-left: auto; }
.pms-doc-row__actions { flex: 0 0 auto; }
.pms-doc-viewer {
	display: flex; flex-direction: column; gap: 16px;
	padding: 0 20px 8px; min-height: 0; flex: 1 1 auto;
}
.pms-doc-preview {
	position: relative; flex: 1 1 auto;
	min-height: 360px; height: 56vh;
	border: 1px solid var(--bd); border-radius: 12px; background: var(--s1);
	overflow: hidden;
}
.pms-doc-preview iframe,
.pms-doc-preview img {
	display: block; width: 100%; height: 100%; border: 0;
	object-fit: contain; background: var(--s1);
	user-select: none; -webkit-user-select: none;
}
.pms-doc-preview iframe[hidden],
.pms-doc-preview img[hidden],
.pms-doc-preview__empty[hidden] { display: none !important; }
.pms-doc-preview__empty {
	margin: 0; position: absolute; inset: 0;
	display: flex; align-items: center; justify-content: center;
	padding: 24px; font-size: 14px; color: var(--td); text-align: center;
}
.pms-doc-viewer__facts {
	display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px;
}
.pms-doc-viewer__facts--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.pms-doc-row__date { margin: 0; font-size: 14px; font-weight: 600; color: var(--t); }
.pms-finance-facts {
	display: grid; grid-template-columns: 1fr 1fr; gap: 0;
	border-bottom: 1px solid var(--bd);
}
.pms-finance-facts__item { padding: 16px 20px; }
.pms-finance-facts__item + .pms-finance-facts__item { border-left: 1px solid var(--bd); }
.pms-invoice {
	margin: 16px; padding: 20px; overflow: auto; max-height: 100%;
	background: var(--bg); border: 1px solid var(--bd); border-radius: 12px;
}
.pms-invoice__head {
	display: flex; align-items: flex-start; justify-content: space-between; gap: 12px;
	padding-bottom: 16px; border-bottom: 1px solid var(--bd);
}
.pms-invoice__kicker {
	margin: 0; font-size: 10px; font-weight: 700; letter-spacing: .12em;
	text-transform: uppercase; color: var(--td);
}
.pms-invoice__ref { margin: 4px 0 0; font-size: 20px; font-weight: 700; color: var(--t); }
.pms-invoice__grid {
	display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px;
	padding: 16px 0;
}
.pms-invoice__muted { margin: 2px 0 0; font-size: 12px; color: var(--td); }
.pms-invoice__lines { width: 100%; border-collapse: collapse; font-size: 14px; }
.pms-invoice__lines th {
	padding: 8px 0; text-align: left; font-size: 10px; font-weight: 700;
	letter-spacing: .08em; text-transform: uppercase; color: var(--td);
	border-bottom: 1px solid var(--bd);
}
.pms-invoice__lines td { padding: 12px 0; color: var(--t); border-bottom: 1px solid var(--bd); }
.pms-invoice__lines td:last-child,
.pms-invoice__lines th:last-child { text-align: right; }
.pms-invoice__note { margin: 16px 0 0; font-size: 12px; line-height: 1.5; color: var(--td); }
.pms-fact-list { margin: 0; }
.pms-fact { display: flex; align-items: flex-start; gap: 12px; padding: 12px 20px; border-top: 1px solid var(--bd); }
.pms-fact-list .pms-fact:first-child { border-top: 0; }
.pms-fact i { width: 16px; height: 16px; flex: 0 0 16px; margin-top: 2px; color: var(--td2); }
.pms-fact__label { margin: 0; font-size: 11px; letter-spacing: .04em; text-transform: uppercase; color: var(--td); }
.pms-fact__value { margin: 2px 0 0; font-size: 14px; font-weight: 600; color: var(--t); word-break: break-word; }
.pms-fact__action { margin: 8px 0 0; }
.pms-fact__hint { margin: 4px 0 0; font-size: 12px; font-weight: 400; color: var(--td); }
.pms-arabic-fill { margin: 0 0 12px; }
.pms-arabic-fill .pms-text-link { font-size: 12px; }
.pms-fact__value a { color: inherit; text-decoration: none; }
.pms-fact__value a:hover { color: var(--ach); }
.pms-simple-list { margin: 0; padding: 0; list-style: none; }
.pms-simple-list li { padding: 12px 20px; border-top: 1px solid var(--bd); }
.pms-simple-list li:first-child { border-top: 0; }
.pms-simple-list a { font-weight: 600; color: var(--t); text-decoration: none; }
.pms-simple-list a:hover { color: var(--ach); }
.pms-simple-list .pms-table__meta { display: block; }
.pms-speaker-list { margin: 0; }
.pms-speaker {
	display: flex; align-items: flex-start; gap: 12px;
	padding: 14px 20px; border-top: 1px solid var(--bd);
}
.pms-speaker-list .pms-speaker:first-child { border-top: 0; }
.pms-speaker__icon {
	display: flex; align-items: center; justify-content: center;
	width: 36px; height: 36px; flex: 0 0 36px;
	border-radius: 12px; background: var(--gold-50); color: var(--gold-700);
}
.pms-speaker__icon i { width: 16px; height: 16px; }
.pms-speaker__body { min-width: 0; flex: 1 1 auto; }
.pms-speaker__name { margin: 0; font-size: 14px; font-weight: 700; color: var(--t); }
.pms-speaker__role { margin: 2px 0 0; font-size: 12px; color: var(--td); }
.pms-speaker__note {
	margin: 6px 0 0; padding: 8px 10px;
	border-radius: 8px; background: var(--s1);
	font-size: 12px; line-height: 1.45; color: var(--tm);
}
.pms-speaker__edit { flex: 0 0 auto; width: 32px; padding: 0; }
.pms-empty-block { padding: 32px 20px; text-align: center; }
.pms-empty-block p { margin: 0 0 12px; font-size: 14px; color: var(--td); }
.pms-rsvp { margin-top: 24px; }
.pms-rsvp__head {
	display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: 12px;
	padding: 16px 20px; border-bottom: 1px solid var(--bd);
}
.pms-rsvp__head .pms-panel__title { display: inline-flex; align-items: center; gap: 8px; font-size: 16px; }
.pms-rsvp__head .pms-panel__title i { width: 16px; height: 16px; color: var(--td2); }
.pms-rsvp__tools { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.pms-rsvp__tools .pms-search { min-width: 200px; flex: 1 1 200px; }
.pms-rsvp__filters { padding: 10px 20px; border-bottom: 1px solid var(--bd); }
.pms-history { margin: 0; padding: 0; list-style: none; }
.pms-history__item {
	display: flex; justify-content: space-between; align-items: flex-start; gap: 16px;
	padding: 12px 20px; font-size: 14px;
}
.pms-history__item:nth-child(even) { background: var(--s2); }
.pms-history__copy { min-width: 0; }
.pms-history__text { display: block; color: var(--t); }
.pms-history a.pms-history__text { color: var(--t); font-weight: 600; text-decoration: none; }
.pms-history a.pms-history__text:hover { color: var(--ach); }
.pms-history__who { display: block; margin-top: 2px; font-size: 12px; color: var(--td); }
.pms-history__when { flex: 0 0 auto; font-size: 12px; color: var(--td2); }
a.pmd-modal__btn { text-decoration: none; }
a.pmd-modal__btn[hidden] { display: none !important; }
.pms-club-split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: 24px; margin-bottom: 24px; }
.pms-kv-list { margin: 0; }
.pms-kv { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; padding: 10px 20px; border-top: 1px solid var(--bd); }
.pms-kv-list .pms-kv:first-child { border-top: 0; }
.pms-kv dt { margin: 0; font-size: 10px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--td); }
.pms-kv dd { margin: 0; font-size: 14px; font-weight: 600; color: var(--t); text-align: right; }
.pms-kv dd a { color: var(--ach); text-decoration: none; }
.pms-kv dd a:hover { text-decoration: underline; }
.pms-seats { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; padding: 20px; }
.pms-seat {
	display: block; width: 100%; padding: 12px 16px; border: 1px solid var(--bd); border-radius: 12px;
	text-decoration: none; background: var(--bg); color: inherit; text-align: left;
	font-family: inherit; cursor: pointer;
	transition: border-color var(--dur-press) var(--ease), background-color var(--dur-press) var(--ease);
}
.pms-seat:hover { border-color: var(--royal-200); background: var(--acbg); }
.pms-seat__name { margin: 0; font-size: 14px; font-weight: 700; color: var(--t); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pms-seat__role { margin: 2px 0 0; font-size: 12px; color: var(--td); }
.pms-seat--empty { border-style: dashed; }
.pms-seat--empty .pms-seat__name { color: var(--td2); }
.pms-picker {
	display: flex; flex-direction: column; gap: 0;
	max-height: 320px; overflow: auto; margin: 0 0 12px;
	border: 1px solid var(--bd); border-radius: 12px; background: var(--bg);
}
.pms-picker__row {
	display: flex; align-items: center; gap: 12px; width: 100%;
	padding: 10px 12px; border: 0; border-radius: 0; background: var(--bg);
	text-align: left; font: inherit; cursor: pointer; color: inherit;
	transition: background-color 150ms var(--ease);
}
.pms-picker__row.is-alt { background: var(--s2); }
.pms-picker__row:hover,
.pms-picker__row.is-selected { background: var(--acbg); }
.pms-picker__name { display: block; font-size: 14px; font-weight: 700; color: var(--t); }
.pms-picker__meta { display: block; margin-top: 2px; font-size: 12px; color: var(--td); }
.pms-picker--checks .pms-picker__row { cursor: pointer; }
.pms-picker--checks .pms-picker__row input[type="checkbox"] {
	width: 16px; height: 16px; flex: 0 0 16px; accent-color: var(--ac);
}
.pms-picker--checks .pms-picker__row:has(input:disabled) { opacity: .45; cursor: not-allowed; }
.pms-picker--checks .pms-picker__row:has(input:not(:checked)):not(:has(input:disabled)) { opacity: .7; }
.pms-send-stat {
	display: flex; align-items: baseline; gap: 8px;
	margin: 0 0 12px;
}
.pms-send-stat__value {
	font-size: 30px; font-weight: 700; line-height: 1;
	font-variant-numeric: tabular-nums; color: var(--t);
}
.pms-send-stat__label { font-size: 14px; color: var(--td); }
.pms-picker__empty { margin: 0; padding: 16px 12px; text-align: center; font-size: 14px; color: var(--td); }
.pms-vars { margin: 8px 0 0; }
.pms-vars__label {
	margin: 0 0 6px; font-size: 10px; font-weight: 700;
	letter-spacing: .04em; text-transform: uppercase; color: var(--td);
}
.pms-vars__row { display: flex; flex-wrap: wrap; gap: 6px; }
.pms-vars__btn {
	display: inline-flex; align-items: center; gap: 6px;
	height: 28px; padding: 0 8px;
	border: 1px solid var(--bd); border-radius: 6px;
	background: var(--s1); color: var(--tm);
	font-family: var(--font-body); font-size: 12px; font-weight: 600;
	cursor: pointer;
	transition: background-color 150ms var(--ease), border-color 150ms var(--ease), color 150ms var(--ease);
}
.pms-vars__btn:hover { background: var(--acbg); border-color: #B7CBEC; color: var(--ach); }
.pms-vars__btn code {
	font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
	font-size: 11px; font-weight: 500; color: var(--td);
}
.pms-board-extra { margin: 0 0 8px; }
.pms-board-extra__label { margin: 0 0 8px; font-size: 10px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--td); }
.pms-board-list { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 8px; }
.pms-board-empty { margin: 0; padding: 8px 12px; border-radius: var(--r); background: var(--s1); font-size: 14px; color: var(--td); }
.pms-board-item {
	display: flex; align-items: center; justify-content: space-between; gap: 12px;
	padding: 8px 12px; border: 1px solid var(--bd); border-radius: var(--r);
}
.pms-board-item__name { font-size: 14px; font-weight: 600; color: var(--t); }
.pms-board-item__remove {
	display: inline-flex; align-items: center; justify-content: center;
	width: 28px; height: 28px; padding: 0; border: 0; border-radius: 6px;
	background: transparent; color: var(--td2); cursor: pointer;
	transition: background-color var(--dur-press) var(--ease), color var(--dur-press) var(--ease);
}
.pms-board-item__remove:hover { background: var(--s1); color: var(--cranberry); }
.pms-board-item__remove i { width: 16px; height: 16px; }
.pms-board-add { display: block; margin-top: 12px; }
.pms-board-add .pmd-modal__select { width: 100%; }
.pms-row-card__title a { color: inherit; text-decoration: none; }
.pms-row-card__title a:hover { color: var(--ach); }
.pms-club-card__name { margin: 0; font-size: 14px; font-weight: 700; color: var(--t); }
.pms-club-card__meta { margin: 2px 0 0; font-size: 12px; color: var(--td); display: flex; align-items: center; gap: 6px; }
.pms-club-card__meta i { width: 14px; height: 14px; flex: 0 0 14px; }
.pms-choice-set { margin: 0 0 16px; padding: 0; border: 0; }
.pms-choice-set legend { font-size: 10px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--td); }
.pms-choice-set__row { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.pms-choice {
	display: inline-flex; align-items: center; gap: 8px;
	padding: 8px 12px; border: 1px solid var(--bd); border-radius: var(--r);
	font-size: 14px; font-weight: 600; color: var(--tm); cursor: pointer;
	transition: background-color var(--dur-press) var(--ease), border-color var(--dur-press) var(--ease), color var(--dur-press) var(--ease);
}
.pms-choice:hover { background: var(--s1); }
.pms-choice:has(input:checked) { border-color: #B7CBEC; background: var(--acbg); color: var(--ach); }
.pms-choice:has(input:disabled) { opacity: .45; cursor: not-allowed; }
.pms-choice input { width: 14px; height: 14px; accent-color: var(--ac); }
.pms-avatar {
	display: block; width: 40px; height: 40px; flex: 0 0 40px;
	border-radius: 50%; object-fit: cover; background: var(--s1);
}
.pms-avatar--lg { width: 72px; height: 72px; flex-basis: 72px; }
.pms-club-logo {
	display: block;
	height: 36px; width: auto; max-width: 160px;
	object-fit: contain; object-position: left center;
	background: var(--s1); border: 1px solid var(--bd);
	border-radius: 8px; padding: 6px 8px;
	box-sizing: content-box;
}
.pms-club-logo--hero {
	height: 48px; max-width: 220px; padding: 8px 10px;
}
.pms-club-cell { display: flex; align-items: center; gap: 12px; min-width: 0; }
.pms-club-cell > div { min-width: 0; }
.pms-row-card__main > .pms-club-logo { margin-bottom: 8px; }
.pms-person { display: flex; align-items: center; gap: 12px; min-width: 0; }
.pms-person__text { min-width: 0; }
.pms-photo-field { display: flex; flex-direction: column; gap: 12px; margin: 4px 0 16px; }
.pms-photo-field__label {
	margin: 0; font-size: 10px; font-weight: 700; letter-spacing: .04em;
	text-transform: uppercase; color: var(--td);
}
.pms-photo-field__row { display: flex; align-items: center; gap: 16px; }
.pms-photo-field__preview:empty { display: none; }
.pms-photo-field .pms-file-field { flex: 1 1 auto; min-width: 0; margin: 0; }
.pms-photo-field .pms-dropzone { flex: 1 1 auto; margin: 0; padding: 20px 16px; }
.pms-toggle {
	margin: 0 0 16px; padding: 14px 16px;
	border: 1px solid var(--bd); border-radius: 12px; background: var(--s1);
}
.pms-toggle__row { display: flex; align-items: flex-start; gap: 12px; cursor: pointer; }
.pms-toggle__control { position: relative; flex: 0 0 44px; width: 44px; height: 24px; }
.pms-toggle__control input {
	position: absolute; inset: 0; z-index: 1; margin: 0; opacity: 0; cursor: pointer;
}
.pms-toggle__ui {
	display: block; width: 44px; height: 24px; border-radius: 999px;
	background: #CBD5E1; position: relative;
	transition: background-color 150ms var(--ease);
}
.pms-toggle__ui::after {
	content: ""; position: absolute; top: 2px; left: 2px;
	width: 20px; height: 20px; border-radius: 50%; background: #fff;
	box-shadow: 0 1px 2px rgba(16,26,43,.2);
	transition: transform 150ms var(--ease);
}
.pms-toggle__control input:checked + .pms-toggle__ui { background: var(--ac); }
.pms-toggle__control input:checked + .pms-toggle__ui::after { transform: translateX(20px); }
.pms-toggle__control input:focus-visible + .pms-toggle__ui { box-shadow: 0 0 0 3px var(--acbg); }
.pms-toggle__title { display: block; font-size: 14px; font-weight: 700; color: var(--t); }
.pms-toggle__hint { display: block; margin-top: 2px; font-size: 12px; color: var(--td); }
.pms-file-field { margin: 0 0 8px; }
.pms-file-field.is-drag .pms-dropzone { border-color: var(--azure); background: var(--s2); }
.pms-dropzone {
	position: relative;
	display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px;
	padding: 32px 16px; margin: 0 0 8px; cursor: pointer; text-align: center;
	border: 2px dashed var(--bd); border-radius: 12px; background: var(--s1);
	transition: border-color 150ms var(--ease), background-color 150ms var(--ease);
}
.pms-dropzone[hidden],
.pms-file[hidden] { display: none !important; }
.pms-dropzone:hover { border-color: var(--azure); }
.pms-dropzone i { width: 24px; height: 24px; color: var(--td2); }
.pms-dropzone__name { font-size: 14px; font-weight: 600; color: var(--t); }
.pms-dropzone__hint { font-size: 12px; color: var(--td); }
.pms-dropzone input { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); border: 0; }
.pms-file {
	padding: 14px 16px;
	border: 1px solid var(--bd); border-radius: 12px; background: var(--bg);
}
.pms-file.is-done { background: var(--s1); }
.pms-file.is-uploading .pms-file__remove { display: none; }
.pms-file__row { display: flex; align-items: center; gap: 12px; }
.pms-file__icon {
	display: flex; align-items: center; justify-content: center;
	width: 40px; height: 40px; flex: 0 0 40px;
	border-radius: 8px; background: var(--acbg); color: var(--ac);
}
.pms-file__icon i { width: 20px; height: 20px; }
.pms-file__copy { min-width: 0; flex: 1 1 auto; }
.pms-file__name {
	margin: 0; font-size: 14px; font-weight: 600; color: var(--t);
	white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.pms-file__meta { margin: 2px 0 0; font-size: 12px; color: var(--td); font-variant-numeric: tabular-nums; }
.pms-file__remove {
	display: inline-flex; align-items: center; justify-content: center;
	width: 32px; height: 32px; flex: 0 0 32px; padding: 0;
	border: 1px solid var(--bd); border-radius: 8px; background: var(--bg);
	color: var(--td); cursor: pointer;
	transition: background-color 150ms var(--ease), color 150ms var(--ease), border-color 150ms var(--ease);
}
.pms-file__remove:hover { background: var(--cranberry-50); border-color: var(--cranberry); color: var(--rd); }
.pms-file__remove i { width: 14px; height: 14px; }
.pms-file__track {
	margin-top: 12px; height: 6px; border-radius: 999px;
	background: var(--s1); overflow: hidden;
	box-shadow: inset 0 0 0 1px var(--bd);
}
.pms-file__fill {
	display: block; height: 100%; width: 0;
	background: var(--ac); border-radius: inherit;
	transition: width 200ms var(--ease);
}
.pms-file.is-done .pms-file__fill { background: var(--gn); }
.pms-file__status {
	margin: 8px 0 0; font-size: 12px; font-weight: 600; color: var(--td);
}
.pms-file.is-done .pms-file__status { color: var(--gn); }
.pms-file.is-uploading .pms-file__status { color: var(--ac); }

.pms-banner {
	display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 24px;
	padding: 24px; margin-bottom: 24px;
	background: #0E2A56; border: 1px solid #0E2A56; border-radius: var(--rm);
	box-shadow: var(--shadow-soft); color: #fff;
}
.pms-banner__copy { max-width: 40rem; }
.pms-banner__kicker { margin: 0; font-size: 11px; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: #B7CBEC; }
.pms-banner h1 { margin: 8px 0 0; font-size: 24px; font-weight: 700; color: #fff; }
.pms-banner p { margin: 8px 0 0; font-size: 14px; line-height: 1.6; color: #DCE6F6; }
.pms-banner__chart { width: 100%; max-width: 280px; }
.pms-banner__chart p { margin: 0 0 6px; font-size: 12px; font-weight: 600; color: #B7CBEC; }
.pms-banner__chart-box { height: 48px; background: rgba(255,255,255,.08); border-radius: 12px; overflow: hidden; }
.pms-banner__chart canvas { display: block; width: 100%; height: 48px; }
.pms-chart-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; margin-bottom: 24px; }
.pms-chart-pair {
	grid-column: 1 / -1;
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	gap: 16px;
	align-items: stretch;
}
.pms-chart-pair > .pms-panel {
	display: flex;
	flex-direction: column;
	margin: 0;
	min-width: 0;
}
.pms-chart-pair .pms-chart-card__body {
	flex: 1 1 auto;
	min-height: 260px;
}
.pms-chart-card { min-width: 0; }
.pms-chart-card--wide { grid-column: span 2; }
.pms-chart-card__body { padding: 8px 16px 20px; height: 260px; }
.pms-chart-card__body--tall { height: 360px; }
.pms-chart-card__body--dash { height: 220px; }
.pms-chart-card__body canvas { display: block; width: 100%; height: 100%; }
.pms-chart-legend { display: flex; gap: 12px; font-size: 11px; font-weight: 600; color: var(--td); }
.pms-chart-legend span { display: inline-flex; align-items: center; gap: 6px; }
.pms-dot { display: inline-block; width: 8px; height: 8px; border-radius: 999px; }
.pms-dot--royal { background: var(--ac); }
.pms-dot--gold { background: var(--gold); }
.pms-dot--sky { background: var(--sky); }
.pms-dot--turquoise { background: var(--turquoise); }
.pms-tenure { margin: 0; }
.pms-tenure .pms-chart-card__body {
	display: flex;
	flex-direction: column;
	gap: 16px;
}
.pms-tenure__split { display: flex; gap: 20px; flex: 0 0 auto; }
.pms-tenure__bands {
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	gap: 10px;
	flex: 1 1 auto;
	min-height: 0;
	padding: 0;
}
.pms-tenure__label { display: flex; justify-content: space-between; gap: 8px; font-size: 12px; font-weight: 600; color: var(--tm); }
.pms-tenure__label span:last-child { font-size: 16px; font-weight: 700; color: var(--t); font-variant-numeric: tabular-nums; }
.pms-tenure__track { margin-top: 6px; height: 8px; border-radius: 999px; background: var(--s1); overflow: hidden; }
.pms-tenure__track span { display: block; height: 100%; border-radius: 999px; background: var(--violet); }
.pms-report-clubs { overflow-x: auto; border-top: 1px solid var(--bd); }
.pms-report-clubs table { width: 100%; border-collapse: collapse; font-size: 14px; }
.pms-report-clubs th {
	text-align: left; padding: 10px 20px; font-size: 10px; font-weight: 700;
	letter-spacing: .06em; text-transform: uppercase; color: var(--td); border-bottom: 1px solid var(--bd);
}
.pms-report-clubs td { padding: 12px 20px; color: var(--tm); border-bottom: 1px solid var(--bd); }
.pms-report-clubs tbody tr:last-child td { border-bottom: 0; }
.pms-report-clubs th.tabular-nums,
.pms-report-clubs td.tabular-nums { text-align: right; font-variant-numeric: tabular-nums; }
.pms-chart-card__body--clubs { height: auto; min-height: 140px; }
.pms-report-library { margin-bottom: 8px; }
.pms-report-library__head {
	display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 12px;
	margin-bottom: 16px;
}
.pms-report-library__head h2 { margin: 0; font-size: 16px; font-weight: 700; color: var(--t); }
.pms-report-library__head p { margin: 2px 0 0; font-size: 14px; color: var(--td); }
.pms-report-library .pms-filters { padding: 4px; background: var(--bg); border: 1px solid var(--bd); border-radius: 12px; box-shadow: var(--shadow-soft); }
.pms-report-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; margin: 0; padding: 0; list-style: none; }
.pms-report-card { display: flex; flex-direction: column; overflow: hidden; }
.pms-report-card__body { display: flex; flex-direction: column; flex: 1; padding: 20px; }
.pms-report-card__top { display: flex; align-items: flex-start; gap: 12px; }
.pms-report-card__icon {
	display: flex; align-items: center; justify-content: center;
	width: 40px; height: 40px; flex: 0 0 40px; border-radius: 12px;
	background: var(--acbg); color: var(--ach);
}
.pms-report-card__icon i { width: 20px; height: 20px; }
.pms-report-card__icon--azure { background: #e6f1fb; color: var(--azure); }
.pms-report-card__icon--gold { background: var(--gold-50); color: var(--gold-700); }
.pms-report-card__icon--cranberry { background: var(--cranberry-50); color: var(--cranberry); }
.pms-report-card__icon--turquoise { background: var(--turquoise-50); color: var(--turquoise); }
.pms-report-card__icon--violet { background: #f6e8f6; color: var(--violet); }
.pms-report-card h3 { margin: 0; font-size: 14px; font-weight: 700; color: var(--t); }
.pms-report-card__cat { margin: 2px 0 0; font-size: 11px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--ach); }
.pms-report-card__desc { margin: 12px 0 0; font-size: 14px; line-height: 1.5; color: var(--tm); }
.pms-report-card__meta { display: flex; align-items: center; gap: 6px; margin: 12px 0 0; font-size: 12px; color: var(--td); }
.pms-report-card__meta i { width: 14px; height: 14px; }
.pms-report-card__foot { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: auto; padding-top: 16px; }
.pms-report-card__formats { display: flex; gap: 4px; }
.pms-report-card__formats span {
	padding: 2px 6px; border-radius: 6px; background: var(--s1);
	font-size: 10px; font-weight: 700; color: var(--td);
}
.pms-report-card__run { margin-right: auto; font-size: 11px; color: var(--td2); }
.pms-pass { margin: 0; }
.pms-pass .pmd-modal__input,
.pms-pass .pms-field__input { padding-right: 80px; }
.pms-pass--login .pms-field__input { padding-right: 48px; }
.pms-pass__icons {
	position: absolute; right: 6px; top: 50%; transform: translateY(-50%);
	z-index: 2; display: flex; align-items: center; gap: 2px;
}
.pms-pass__icon {
	display: inline-flex; align-items: center; justify-content: center;
	width: 32px; height: 32px; padding: 0; border: 0; border-radius: 8px;
	background: transparent; color: var(--td); cursor: pointer;
	transition: background 150ms var(--ease), color 150ms var(--ease);
}
.pms-pass__icon:hover { background: var(--s1); color: var(--ach); }
.pms-pass__icon i { width: 16px; height: 16px; }
.pms-pass__gen {
	display: inline-flex; align-items: center; gap: 6px;
	margin: 8px 4px 0; padding: 0; border: 0; background: none;
	color: var(--ac); font-family: var(--font-body);
	font-size: 12px; font-weight: 700; cursor: pointer;
}
.pms-pass__gen:hover { color: var(--ach); }
.pms-pass__gen i { width: 14px; height: 14px; }
.pms-check { display: flex; align-items: flex-start; gap: 8px; margin: 8px 0 0; padding: 10px 12px; border-radius: 8px; background: var(--s1); font-size: 14px; color: var(--tm); }
.pms-check input { width: 14px; height: 14px; margin-top: 3px; accent-color: var(--ac); }
.pms-seg {
	display: flex; flex-wrap: wrap; gap: 4px;
	padding: 6px; margin-bottom: 24px;
	background: var(--bg); border: 1px solid var(--bd); border-radius: 16px;
	box-shadow: var(--shadow-soft);
}
.pms-seg__btn {
	display: inline-flex; align-items: center; gap: 8px;
	height: 40px; padding: 0 16px; border: 0; border-radius: 12px;
	background: transparent; color: var(--td);
	font-family: var(--font-body); font-size: 14px; font-weight: 600;
	cursor: pointer;
	transition: background 150ms var(--ease), color 150ms var(--ease);
}
.pms-seg__btn i { width: 16px; height: 16px; }
.pms-seg__btn:hover { background: var(--s1); color: var(--t); }
.pms-seg__btn.is-active { background: var(--ac); color: #fff; }
.pms-set-panel__head {
	display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 12px;
	margin-bottom: 16px;
}
.pms-set-panel__head h2 { margin: 0; font-size: 16px; font-weight: 700; color: var(--t); }
.pms-set-panel__head p { margin: 2px 0 0; font-size: 14px; color: var(--td); }
.pms-table__actions { text-align: right; white-space: nowrap; }
.pms-table__actions .pms-btn { margin-left: 4px; }
.pms-2fa { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 600; color: var(--td); }
.pms-2fa i { width: 14px; height: 14px; }
.pms-2fa--on { color: #047857; }
.pms-tpl { display: grid; grid-template-columns: 320px minmax(0, 1fr); gap: 16px; align-items: start; }
.pms-tpl__list { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 8px; }
.pms-tpl__card {
	width: 100%; padding: 16px; text-align: left; cursor: pointer;
	background: var(--bg); border: 1px solid var(--bd); border-radius: 16px;
	box-shadow: var(--shadow-soft);
	transition: background 150ms var(--ease), border-color 150ms var(--ease);
}
.pms-tpl__card:hover { background: var(--s1); }
.pms-tpl__card.is-active { border-color: #B7CBEC; box-shadow: 0 0 0 1px #B7CBEC, var(--shadow-soft); }
.pms-tpl__card p { display: flex; flex-wrap: wrap; gap: 6px; margin: 0; }
.pms-tpl__card strong { display: block; margin: 8px 0 0; font-size: 14px; font-weight: 700; color: var(--t); }
.pms-tpl__card span { display: block; margin: 2px 0 0; font-size: 12px; color: var(--td); }
.pms-tpl__detail .pms-panel__desc { display: flex; flex-wrap: wrap; gap: 8px 16px; }
.pms-tpl__detail .pms-panel__desc span { display: inline-flex; align-items: center; gap: 6px; }
.pms-tpl__detail .pms-panel__desc i { width: 14px; height: 14px; }
.pms-tpl__tools { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.pms-tpl__switch { display: inline-flex; align-items: center; gap: 8px; font-size: 12px; font-weight: 600; color: var(--tm); }
.pms-tpl__switch input { width: 14px; height: 14px; accent-color: var(--ac); }
.pms-tpl__letter { border: 1px solid var(--bd); border-radius: 12px; overflow: hidden; }
.pms-tpl__letter p {
	display: flex; align-items: center; gap: 8px; margin: 0; padding: 10px 16px;
	background: var(--s1); border-bottom: 1px solid var(--bd); font-size: 14px;
}
.pms-tpl__letter i { width: 16px; height: 16px; color: var(--td2); }
.pms-tpl__letter pre {
	margin: 0; padding: 16px; white-space: pre-wrap;
	font-family: var(--font-body); font-size: 14px; line-height: 1.6; color: var(--tm);
}
.pms-tpl__hint { margin: 12px 0 0; font-size: 12px; color: var(--td); }
.pms-tpl__form { padding: 0 20px 20px; }
.pms-tpl__merge { margin: 16px 0 0; }
.pms-tpl__merge p { margin: 0 0 8px; font-size: 10px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--td); }
.pms-tpl__merge div { display: flex; flex-wrap: wrap; gap: 6px; }
.pms-tpl__token {
	padding: 4px 8px; border: 0; border-radius: 6px; background: var(--s1);
	font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 11px; font-weight: 600; color: var(--tm);
	cursor: pointer;
}
.pms-tpl__token:hover { background: var(--acbg); color: var(--ach); }
.pms-tpl__save { display: flex; justify-content: flex-end; gap: 8px; margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--bd); }
.pms-tpl__view { padding: 0 20px 20px; }

/* Office dashboard */
.pms-queue__head { padding: 20px 20px 0; }
.pms-queue__head-row { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: 12px; }
.pms-queue__head-row > div { flex: 1 1 220px; min-width: 0; }
.pms-queue__head-row .pms-btn { flex: 0 0 auto; }
.pms-queue__title { margin: 0; font-size: 16px; font-weight: 700; color: var(--t); }
.pms-queue__name { font-size: 14px; font-weight: 700; color: var(--t); text-decoration: none; }
.pms-queue__name:hover { color: var(--ach); }
.pms-queue__empty {
	display: flex; align-items: center; gap: 8px;
	margin: 0; padding: 40px 20px; font-size: 14px; color: var(--td);
}
.pms-queue__empty i { width: 16px; height: 16px; color: #047857; }
.pms-queue__foot { padding: 12px 20px; border-top: 1px solid var(--bd); }
.pms-queue .pms-text-link { font-size: 14px; }
.pms-notice-list { display: flex; flex-direction: column; gap: 16px; padding: 0 20px 20px; }
.pms-notice { padding-bottom: 16px; border-bottom: 1px solid var(--bd); }
.pms-notice:last-child { padding-bottom: 0; border-bottom: 0; }
.pms-notice__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0; font-size: 12px; color: var(--td); }
.pms-notice__title { margin: 6px 0 0; font-size: 14px; font-weight: 700; color: var(--t); }
.pms-notice__body { margin: 4px 0 0; font-size: 14px; line-height: 1.45; color: var(--tm); }
.pms-feed { margin: 0; padding: 20px; list-style: none; }
.pms-feed__item { display: flex; gap: 12px; }
.pms-feed__item + .pms-feed__item { margin-top: 16px; }
.pms-feed__icon {
	display: flex; align-items: center; justify-content: center;
	width: 28px; height: 28px; flex: 0 0 28px; margin-top: 2px;
	border-radius: 999px; background: var(--s1); color: var(--tm);
}
.pms-feed__icon i { width: 14px; height: 14px; }
.pms-feed__copy { min-width: 0; }
.pms-feed__text { margin: 0; font-size: 14px; line-height: 1.4; color: var(--tm); }
.pms-feed__actor { font-weight: 700; color: var(--t); }
.pms-feed__text a { color: var(--t); font-weight: 600; text-decoration: none; }
.pms-feed__text a:hover { color: var(--ach); }
.pms-feed__meta { margin: 2px 0 0; font-size: 12px; letter-spacing: .04em; text-transform: uppercase; color: var(--td2); }
.pms-meter-list { margin: 0; padding: 0; list-style: none; }
.pms-meter-row { padding: 12px 20px; border-top: 1px solid var(--bd); }
.pms-meter-row:first-child { border-top: 0; }
.pms-meter-row__top { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.pms-meter-row__top a { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 14px; font-weight: 600; color: var(--t); text-decoration: none; }
.pms-meter-row__top a:hover { color: var(--ach); }
.pms-meter-row__top span { flex: 0 0 auto; font-size: 14px; font-weight: 700; font-variant-numeric: tabular-nums; color: var(--t); }
.pms-meter { height: 6px; margin-top: 8px; border-radius: 999px; background: var(--s1); overflow: hidden; }
.pms-meter__bar { display: block; height: 100%; border-radius: inherit; }
.pms-meter__bar--ok { background: #10b981; }
.pms-meter__bar--warn { background: var(--gold); }
.pms-meter__bar--bad { background: var(--cranberry); }
.pms-meter-row__meta { margin: 6px 0 0; font-size: 12px; color: var(--td); }
.pms-ri {
	padding: 20px;
	border: 1px solid #B7CBEC;
	border-radius: var(--rm);
	background: var(--acbg);
}
.pms-ri h2 { margin: 0; font-size: 14px; font-weight: 700; color: var(--ach); }
.pms-ri p { margin: 4px 0 0; font-size: 14px; color: var(--ach); }
.pms-ri .pms-text-link { margin-top: 12px; font-size: 14px; font-weight: 700; }
.pms-tasks { margin: 0; padding: 0; list-style: none; }
.pms-task {
	display: flex; flex-wrap: wrap; align-items: center; gap: 12px;
	padding: 14px 20px; border-top: 1px solid var(--bd);
}
.pms-tasks .pms-task:first-child { border-top: 0; }
.pms-task--current { background: var(--s2); }
.pms-task--locked { opacity: .55; }
.pms-task__mark {
	display: inline-flex; align-items: center; justify-content: center;
	width: 28px; height: 28px; flex: 0 0 28px; border-radius: 999px;
	font-size: 12px; font-weight: 700; font-variant-numeric: tabular-nums;
	background: var(--s1); color: var(--td); border: 1px solid var(--bd);
}
.pms-task--done .pms-task__mark { background: #ecfdf5; color: var(--gn); border-color: rgba(5,150,105,.2); }
.pms-task--current .pms-task__mark { background: var(--ac); color: #fff; border-color: var(--ac); }
.pms-task__mark i { width: 14px; height: 14px; }
.pms-task__main { min-width: 0; flex: 1 1 160px; }
.pms-task__title {
	display: flex; flex-wrap: wrap; align-items: center; gap: 8px;
	margin: 0; font-size: 14px; font-weight: 700; color: var(--t);
}
.pms-task__meta { margin: 2px 0 0; font-size: 12px; color: var(--td); }
.pms-task__action { flex: 0 0 auto; }
.pms-task--done .pms-task__title { color: var(--tm); }

/* Mobile: app tab bar + half-screen More sheet */
@media (max-width: 1023px) {
	.pms-app { flex-direction: column; }
	.pms-sidebar { display: none; }
	.pms-topbar {
		display: flex; align-items: center; justify-content: center;
		order: 1; width: 100%; flex: 0 0 auto;
		padding: calc(10px + env(safe-area-inset-top, 0px)) 16px 10px;
		background: var(--royal-900);
	}
	.pms-topbar .pms-sidebar__logo { min-width: 128px; min-height: 48px; padding: 6px 14px; }
	.pms-topbar .pms-sidebar__logo img,
	.pms-topbar .pms-sidebar__logo .custom-logo { height: 32px; }
	body.pms-sheet-open { overflow: hidden; }
	.pms-tabbar {
		display: flex; align-items: stretch; justify-content: space-around;
		position: fixed; left: 0; right: 0; bottom: 0; z-index: 40;
		min-height: 56px;
		padding: 8px 8px calc(24px + env(safe-area-inset-bottom, 0px));
		background: var(--bg);
		border-top: 1px solid var(--bd);
		box-shadow: 0 -8px 24px -16px rgba(16, 26, 43, .22);
	}
	.pms-tabbar__item {
		flex: 1 1 0; min-width: 0;
		display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px;
		height: 52px; padding: 4px 2px; border: 0; border-radius: 8px;
		background: transparent; color: var(--td);
		font-family: var(--font-body); font-size: 12px; font-weight: 600; line-height: 1.2;
		text-decoration: none; cursor: pointer;
		transition: color 150ms var(--ease), background 150ms var(--ease);
	}
	.pms-tabbar__item i { width: 20px; height: 20px; flex: 0 0 20px; }
	.pms-tabbar__item span { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
	.pms-tabbar__item.is-active { color: var(--ac); }
	.pms-tabbar--gold .pms-tabbar__item.is-active { color: var(--gold-700); }
	.pms-tabbar--turquoise .pms-tabbar__item.is-active { color: var(--turquoise); }
	.pms-sheet-back {
		display: none; position: fixed; inset: 0; z-index: 45;
		background: rgba(16, 26, 43, .5); border: 0; padding: 0; cursor: default;
	}
	.pms-sheet-back.is-open { display: block; }
	.pms-sheet {
		display: flex; flex-direction: column;
		position: fixed; left: 0; right: 0; bottom: 0; z-index: 46;
		height: 50vh; max-height: 50vh;
		background: var(--bg);
		border-radius: 16px 16px 0 0;
		box-shadow: var(--shadow-md);
		transform: translateY(100%);
		transition: transform 200ms var(--ease);
		padding-bottom: calc(24px + env(safe-area-inset-bottom, 0px));
	}
	.pms-sheet.is-open { transform: translateY(0); pointer-events: auto; }
	.pms-sheet:not(.is-open) { pointer-events: none; }
	.pms-sheet__handle {
		display: block; width: 36px; height: 4px; margin: 8px auto 0;
		border-radius: 999px; background: var(--bd);
	}
	.pms-sheet__head {
		display: flex; align-items: flex-start; justify-content: space-between; gap: 12px;
		padding: 8px 20px 12px; border-bottom: 1px solid var(--bd);
	}
	.pms-sheet__title { margin: 0; font-size: 16px; font-weight: 700; color: var(--t); }
	.pms-sheet__desc { margin: 2px 0 0; font-size: 12px; color: var(--td); }
	.pms-sheet__close {
		display: inline-flex; align-items: center; justify-content: center;
		width: 32px; height: 32px; padding: 0; border: 0; border-radius: 8px;
		background: var(--s1); color: var(--tm); cursor: pointer;
	}
	.pms-sheet__close:hover { background: var(--s2); color: var(--t); }
	.pms-sheet__close i { width: 16px; height: 16px; }
	.pms-sheet__body { flex: 1 1 auto; overflow: auto; padding: 8px 0; }
	.pms-sheet__item {
		display: flex; align-items: center; gap: 12px;
		min-height: 48px; padding: 12px 20px;
		color: var(--t); font-size: 14px; font-weight: 600; text-decoration: none;
		transition: background 150ms var(--ease), color 150ms var(--ease);
	}
	.pms-sheet__item i { width: 20px; height: 20px; flex: 0 0 20px; color: var(--td); }
	.pms-sheet__item:hover { background: var(--s1); }
	.pms-sheet__item.is-active { background: var(--acbg); color: var(--ach); }
	.pms-sheet__item.is-active i { color: var(--ach); }
	.pms-sheet__item--out { color: var(--cranberry); }
	.pms-sheet__item--out i { color: var(--cranberry); }
	.pms-profile-grid { grid-template-columns: 1fr; }
	.pms-photo-field__row { flex-direction: column; align-items: stretch; }
	.pms-club-split { grid-template-columns: 1fr; }
	.pms-stats { grid-template-columns: 1fr; }
	.pms-stats--4 { grid-template-columns: 1fr 1fr; }
	.pms-queue__head-row .pms-btn { width: 100%; }
	.pms-chart-grid,
	.pms-chart-pair,
	.pms-report-grid,
	.pms-tpl { grid-template-columns: 1fr; }
	.pms-chart-card--wide { grid-column: auto; }
	.pms-seats { grid-template-columns: 1fr; }
	.pms-doc-row__aside { text-align: left; margin-left: 0; }
	.pms-doc-preview { height: 42vh; min-height: 240px; }
	.pms-doc-viewer__facts,
	.pms-finance-facts,
	.pms-invoice__grid { grid-template-columns: 1fr 1fr; }
	.pms-finance-facts__item + .pms-finance-facts__item { border-left: 0; border-top: 1px solid var(--bd); }
	.pms-main { order: 2; width: 100%; padding: 20px 16px calc(120px + env(safe-area-inset-bottom, 0px)); }
	.pms-list__table { display: none; }
	.pms-list__cards {
		display: flex; flex-direction: column; gap: 12px;
		padding: 0; margin: 0; background: none; border: 0; box-shadow: none;
	}
	.pms-panel:has(.pms-list):not(.pms-panel--solid) {
		background: none; border: 0; box-shadow: none; overflow: visible;
	}
	.pms-panel:has(.pms-list):not(.pms-panel--solid) .pms-pager {
		padding: 4px 0 0; border-top: 0; background: none;
	}
}
