/*
 * Consigner portal ([pa_portal], PA_Portal_App). Built to match docs/portal/mockup/
 * (portal.css there); mobile first. Everything is scoped to .pa-portal-app and uses pap-*
 * class names so the theme's own classes (card, button, section...) are never touched.
 * Colours: the live Blocksy palette (plum #3e0862, violet #560090, slate #3A4F66, text #333,
 * borders #e1e8ed, footer #f2f5f7, page tint #FAFBFC). Fonts: the site's Crimson Pro and
 * Levenim MT, falling back to Georgia and a system sans-serif.
 */

.pa-portal-app {
	--bb-plum: #3e0862;
	--bb-violet: #560090;
	--bb-slate: #3a4f66;
	--bb-ink: #333333;
	--bb-line: #e1e8ed;
	--bb-mist: #f2f5f7;
	--bb-paper: #fafbfc;
	--bb-white: #ffffff;
	--bb-muted: #5d6b79;
	--pap-font-body: 'Crimson Pro', Georgia, 'Times New Roman', serif;
	--pap-font-head: 'Levenim MT', ct_font_levenim__m_t, 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
	--pap-tap: 44px;
	--pap-radius: 6px;
	--pap-tabbar-h: 64px;

	box-sizing: border-box;
	width: 100%;
	max-width: 1180px;
	margin: 0 auto;
	padding: 8px 0 24px;
	color: var(--bb-ink);
	font-family: var(--pap-font-body);
	font-size: 18px;
	line-height: 1.6;
	overflow-wrap: anywhere;
	text-align: left;
}
.entry-content > .pa-portal-app,
.is-layout-constrained > .pa-portal-app { max-width: 1180px; }
.pa-portal-app *, .pa-portal-app *::before, .pa-portal-app *::after { box-sizing: border-box; }

.pa-portal-app h1, .pa-portal-app h2, .pa-portal-app h3 {
	font-family: var(--pap-font-head);
	font-weight: 400;
	color: var(--bb-ink);
	line-height: 1.25;
	margin: 0 0 .5em;
	text-transform: none;
	letter-spacing: normal;
}
.pa-portal-app h1 { font-size: 30px; }
.pa-portal-app h2 { font-size: 21px; }
.pa-portal-app h3 { font-size: 18px; }
.pa-portal-app p { margin: 0 0 .75em; }
.pa-portal-app a { color: var(--bb-violet); text-underline-offset: 3px; }
.pa-portal-app a:hover { color: var(--bb-plum); }
.pa-portal-app :focus-visible { outline: 3px solid var(--bb-violet); outline-offset: 2px; }
.pa-portal-app ul { margin: 0; padding: 0; list-style: none; }
.pa-portal-app li { margin: 0; }

.pa-portal-app .pap-num { font-variant-numeric: tabular-nums lining-nums; white-space: nowrap; }
.pa-portal-app .pap-muted { color: var(--bb-muted); }
.pa-portal-app .pap-small { font-size: 16px; }
.pa-portal-app .pap-eyebrow {
	font-family: var(--pap-font-head);
	text-transform: uppercase;
	letter-spacing: .12em;
	font-size: 12px;
	color: var(--bb-muted);
	margin: 0 0 6px;
}
.pa-portal-app .woocommerce-Price-amount { white-space: nowrap; }

/* ---- Staff view-as banner (PA_Portal_Access::view_as_banner) ---- */
.pa-portal-app .pa-portal-view-as-banner {
	background: #fff8e1; border: 1px solid #f0e2b6; color: #5c4a12;
	border-radius: var(--pap-radius); padding: 10px 16px; margin: 0 0 20px;
	font-family: var(--pap-font-head); font-size: 15px;
}
.pa-portal-app .pa-portal-view-as-banner a { color: #5c4a12; font-weight: 600; display: inline-flex; align-items: center; min-height: var(--pap-tap); padding: 0 4px; }

/* ---- Portal shell ---- */
.pa-portal-app .pap-head {
	display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between;
	gap: 8px 16px;
	padding-bottom: 20px; margin-bottom: 24px;
	border-bottom: 1px solid var(--bb-line);
}
.pa-portal-app .pap-head h1 { margin: 0; }
.pa-portal-app .pap-who { font-size: 16px; color: var(--bb-muted); margin: 0; }
.pa-portal-app .pap-who strong { color: var(--bb-ink); font-weight: 600; }
.pa-portal-app .pap-badge {
	display: inline-block; margin-left: 6px;
	font-family: var(--pap-font-head); font-size: 11px; letter-spacing: .1em; text-transform: uppercase;
	background: #f1e8f8; color: var(--bb-plum); border-radius: 99px; padding: 3px 10px; vertical-align: 2px;
}

.pa-portal-app .pap-body { display: block; }
.pa-portal-app .pap-side { display: none; }
.pa-portal-app .pap-main { min-width: 0; }

/* Side menu (desktop) */
.pa-portal-app .pap-sidenav a {
	display: flex; align-items: center; gap: 12px;
	min-height: var(--pap-tap);
	padding: 8px 14px;
	border-radius: var(--pap-radius);
	color: var(--bb-slate);
	text-decoration: none;
	font-family: var(--pap-font-head);
	font-size: 15px;
}
.pa-portal-app .pap-sidenav a:hover { background: var(--bb-mist); color: var(--bb-plum); }
.pa-portal-app .pap-sidenav a[aria-current="page"] { background: var(--bb-plum); color: var(--bb-white); }
.pa-portal-app .pap-sidenav svg { width: 20px; height: 20px; flex: none; stroke: currentColor; }
.pa-portal-app .pap-sidenav .pap-sep { border-top: 1px solid var(--bb-line); margin: 12px 0; }
.pa-portal-app .pap-help {
	margin-top: 24px; padding: 16px;
	background: var(--bb-mist); border-radius: var(--pap-radius);
	font-size: 16px; line-height: 1.5;
}
.pa-portal-app .pap-help p { margin: 0 0 6px; }

/* Bottom tab bar (phone) */
.pa-portal-app .pap-tabbar {
	position: fixed; left: 0; right: 0; bottom: 0; z-index: 999;
	background: var(--bb-white);
	border-top: 1px solid var(--bb-line);
	box-shadow: 0 -4px 16px rgba(41, 51, 61, .06);
	padding-bottom: env(safe-area-inset-bottom);
}
.pa-portal-app .pap-tabbar ul { margin: 0 auto; padding: 0; display: flex; max-width: 640px; }
.pa-portal-app .pap-tabbar li { flex: 1 1 0; min-width: 0; }
.pa-portal-app .pap-tabbar a {
	display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px;
	min-height: var(--pap-tabbar-h);
	padding: 6px 2px;
	color: var(--bb-muted);
	text-decoration: none;
	font-family: var(--pap-font-head);
	font-size: 11.5px;
	letter-spacing: .02em;
	line-height: 1.1;
	text-align: center;
}
.pa-portal-app .pap-tabbar svg { width: 22px; height: 22px; stroke: currentColor; }
.pa-portal-app .pap-tabbar a[aria-current="page"] { color: var(--bb-plum); }
.pa-portal-app .pap-tabbar a[aria-current="page"] svg { stroke-width: 2.2; }
.pa-portal-app .pap-tabbar a[aria-current="page"]::after {
	content: ""; display: block; width: 22px; height: 3px; border-radius: 3px; background: var(--bb-plum); margin-top: 2px;
}
/* Room under the page for the fixed tab bar. */
body.pa-portal-page { padding-bottom: calc(var(--pap-tabbar-h, 64px) + env(safe-area-inset-bottom)); }

/* ---- Content blocks ---- */
.pa-portal-app .pap-section { margin: 0 0 36px; }
.pa-portal-app .pap-section-head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 4px 16px; margin-bottom: 12px; }
.pa-portal-app .pap-section-head h2 { margin: 0; }
.pa-portal-app .pap-section-head a { min-height: var(--pap-tap); display: inline-flex; align-items: center; font-size: 16px; }

.pa-portal-app .pap-lede { font-size: 18px; color: var(--bb-slate); max-width: 60ch; margin: 0 0 24px; }

.pa-portal-app .pap-card {
	background: var(--bb-white);
	border: 1px solid var(--bb-line);
	border-radius: var(--pap-radius);
	padding: 20px;
}

.pa-portal-app .pap-totals { display: grid; grid-template-columns: 1fr; gap: 12px; }
.pa-portal-app .pap-total { background: var(--bb-white); border: 1px solid var(--bb-line); border-radius: var(--pap-radius); padding: 18px 20px; min-width: 0; }
.pa-portal-app .pap-total .pap-eyebrow { margin-bottom: 4px; }
.pa-portal-app .pap-total .pap-amount { font-family: var(--pap-font-head); font-size: 28px; color: var(--bb-ink); line-height: 1.2; margin: 0; }
.pa-portal-app .pap-total .pap-amount.is-text { font-size: 20px; }
.pa-portal-app .pap-total .pap-sub { font-size: 16px; color: var(--bb-muted); margin: 4px 0 0; }
.pa-portal-app .pap-total .pap-sub a { display: inline-flex; align-items: center; min-height: var(--pap-tap); }
.pa-portal-app .pap-total.is-due { border-left: 4px solid var(--bb-plum); }

/* Needs-attention list */
.pa-portal-app .pap-attention { border: 1px solid var(--bb-line); border-radius: var(--pap-radius); background: var(--bb-white); }
.pa-portal-app .pap-attention li { display: flex; gap: 14px; padding: 16px 18px; border-top: 1px solid var(--bb-line); }
.pa-portal-app .pap-attention li:first-child { border-top: 0; }
.pa-portal-app .pap-attention .pap-dot { flex: none; width: 10px; height: 10px; border-radius: 50%; background: var(--bb-violet); margin-top: 9px; }
.pa-portal-app .pap-attention p { margin: 0; }
.pa-portal-app .pap-attention .pap-act { display: inline-flex; align-items: center; min-height: var(--pap-tap); font-size: 16px; }
.pa-portal-app .pap-allclear { margin: 0; }

/* Row lists (instead of wide tables, so nothing scrolls sideways) */
.pa-portal-app .pap-rows { border: 1px solid var(--bb-line); border-radius: var(--pap-radius); background: var(--bb-white); }
.pa-portal-app .pap-rows > li { padding: 16px 18px; border-top: 1px solid var(--bb-line); }
.pa-portal-app .pap-rows > li:first-child { border-top: 0; }
.pa-portal-app .pap-row-main { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: 4px 16px; }
.pa-portal-app .pap-row-title { font-weight: 600; }
.pa-portal-app .pap-row-meta { font-size: 16px; color: var(--bb-muted); margin: 2px 0 0; }
.pa-portal-app .pap-row-amount { font-family: var(--pap-font-head); font-size: 18px; }

/* Status chips */
.pa-portal-app .pap-chip {
	display: inline-block;
	font-family: var(--pap-font-head);
	font-size: 12px; letter-spacing: .06em; text-transform: uppercase;
	padding: 3px 10px; border-radius: 99px; line-height: 1.5;
	white-space: nowrap;
	border: 1px solid transparent;
}
.pa-portal-app .pap-chip-awaiting   { background: #fbf3e2; color: #7a4f00; border-color: #efdcb2; }
.pa-portal-app .pap-chip-received   { background: #eef2f6; color: #2f4256; border-color: #d6dfe8; }
.pa-portal-app .pap-chip-available  { background: #e8f3ea; color: #23572f; border-color: #c9e2ce; }
.pa-portal-app .pap-chip-reserved   { background: #f1e8f8; color: #4b0a78; border-color: #dfcbee; }
.pa-portal-app .pap-chip-sold       { background: var(--bb-plum); color: #fff; }
.pa-portal-app .pap-chip-on_loan    { background: #e4f1f2; color: #19525a; border-color: #c4e0e3; }
.pa-portal-app .pap-chip-returned   { background: #efefef; color: #4a4a4a; border-color: #dcdcdc; }
.pa-portal-app .pap-chip-due        { background: #fbf3e2; color: #7a4f00; border-color: #efdcb2; }
.pa-portal-app .pap-chip-held       { background: #eef2f6; color: #2f4256; border-color: #d6dfe8; }
.pa-portal-app .pap-chip-paid       { background: #e8f3ea; color: #23572f; border-color: #c9e2ce; }
.pa-portal-app .pap-chip-current    { background: #e8f3ea; color: #23572f; border-color: #c9e2ce; }
.pa-portal-app .pap-chip-superseded { background: #efefef; color: #4a4a4a; border-color: #dcdcdc; }
.pa-portal-app .pap-chip-missing    { background: #fbf3e2; color: #7a4f00; border-color: #efdcb2; }

/* Status overview (dashboard) */
.pa-portal-app .pap-strip { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.pa-portal-app .pap-strip a {
	display: flex; justify-content: space-between; align-items: center; gap: 8px;
	min-height: var(--pap-tap); padding: 8px 14px;
	background: var(--bb-white); border: 1px solid var(--bb-line); border-radius: var(--pap-radius);
	text-decoration: none; color: var(--bb-ink); font-size: 16px;
}
.pa-portal-app .pap-strip a:hover { border-color: var(--bb-violet); }
.pa-portal-app .pap-strip b { font-family: var(--pap-font-head); font-weight: 400; font-size: 18px; }

/* Filter chips (My Artwork); links that work without JavaScript */
.pa-portal-app .pap-filters { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 20px; }
.pa-portal-app .pap-filters a {
	display: inline-flex; align-items: center;
	min-height: var(--pap-tap); padding: 8px 14px;
	font-family: var(--pap-font-head); font-size: 14px; text-decoration: none;
	background: var(--bb-white); color: var(--bb-slate);
	border: 1px solid var(--bb-line); border-radius: 99px;
}
.pa-portal-app .pap-filters a[aria-current="true"] { background: var(--bb-plum); color: #fff; border-color: var(--bb-plum); }
.pa-portal-app .pap-filters .pap-count { opacity: .75; margin-left: 4px; }

/* Artwork cards */
.pa-portal-app .pap-art-list { display: grid; grid-template-columns: 1fr; gap: 14px; }
.pa-portal-app .pap-art {
	display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: 16px;
	background: var(--bb-white); border: 1px solid var(--bb-line); border-radius: var(--pap-radius);
	padding: 14px;
}
.pa-portal-app .pap-art[hidden] { display: none; }
.pa-portal-app .pap-thumb {
	width: 96px; height: 96px; border-radius: 4px; overflow: hidden;
	display: grid; place-items: center;
	background: linear-gradient(160deg, #9aa5ae, #c9d0d6 60%, #eef1f3);
	color: rgba(255,255,255,.9); font-family: var(--pap-font-head); font-size: 11px; letter-spacing: .1em; text-transform: uppercase;
}
.pa-portal-app .pap-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; margin: 0; }
.pa-portal-app .pap-art h3 { margin: 0 0 2px; font-size: 18px; }
.pa-portal-app .pap-art .pap-medium { font-size: 16px; color: var(--bb-muted); margin: 0; }
.pa-portal-app .pap-art .pap-price { font-family: var(--pap-font-head); font-size: 17px; margin: 6px 0; }
.pa-portal-app .pap-art .pap-dates { margin: 6px 0 0; font-size: 15px; color: var(--bb-muted); line-height: 1.45; }
.pa-portal-app .pap-art .pap-why { font-size: 15px; color: var(--bb-slate); margin: 6px 0 0; }

/* Agreements */
.pa-portal-app .pap-agreement { padding: 0; margin-bottom: 20px; }
.pa-portal-app .pap-agreement-head { padding: 18px 18px 4px; }
.pa-portal-app .pap-agreement h3 { margin: 0; }
.pa-portal-app .pap-version { padding: 16px 18px; border-top: 1px solid var(--bb-line); }
.pa-portal-app .pap-agreement-head + .pap-version { border-top: 0; }
.pa-portal-app .pap-version.is-old { background: var(--bb-paper); }
.pa-portal-app .pap-version.is-old .pap-v-title { color: var(--bb-muted); }
.pa-portal-app .pap-v-title { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; font-weight: 600; }
.pa-portal-app .pap-v-meta { font-size: 16px; color: var(--bb-muted); margin: 4px 0 10px; }
.pa-portal-app .pap-v-actions { display: flex; flex-wrap: wrap; gap: 8px; }

/* Buttons */
.pa-portal-app .pap-btn {
	display: inline-flex; align-items: center; justify-content: center; gap: 8px;
	min-height: var(--pap-tap); padding: 8px 18px; margin: 0;
	font-family: var(--pap-font-head); font-size: 15px; font-weight: 400; line-height: 1.3;
	text-transform: none; letter-spacing: normal;
	border-radius: var(--pap-radius); border: 1px solid var(--bb-plum);
	background: var(--bb-plum); color: #fff; text-decoration: none; cursor: pointer;
}
.pa-portal-app .pap-btn:hover { background: var(--bb-violet); border-color: var(--bb-violet); color: #fff; }
.pa-portal-app .pap-btn-quiet { background: var(--bb-white); color: var(--bb-plum); border-color: var(--bb-line); }
.pa-portal-app .pap-btn-quiet:hover { background: var(--bb-mist); color: var(--bb-plum); border-color: var(--bb-line); }
.pa-portal-app .pap-btn[disabled], .pa-portal-app .pap-btn[aria-disabled="true"] { background: var(--bb-mist); color: var(--bb-muted); border-color: var(--bb-line); cursor: not-allowed; }
.pa-portal-app .pap-btn svg { width: 18px; height: 18px; stroke: currentColor; }

/* Breakdown */
.pa-portal-app details.pap-breakdown { margin-top: 8px; font-size: 16px; }
.pa-portal-app details.pap-breakdown summary { min-height: var(--pap-tap); display: inline-flex; align-items: center; cursor: pointer; color: var(--bb-violet); }
.pa-portal-app dl.pap-split { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 4px 16px; margin: 6px 0 0; padding: 12px 14px; background: var(--bb-paper); border-radius: var(--pap-radius); }
.pa-portal-app dl.pap-split dt { color: var(--bb-muted); margin: 0; font-weight: 400; }
.pa-portal-app dl.pap-split dd { margin: 0; text-align: right; }
.pa-portal-app dl.pap-split .pap-total-line { border-top: 1px solid var(--bb-line); padding-top: 6px; font-weight: 600; color: var(--bb-ink); }

/* Forms */
.pa-portal-app .pap-form-row { margin: 0 0 16px; }
.pa-portal-app label, .pa-portal-app .pap-label { display: block; font-family: var(--pap-font-head); font-size: 14px; color: var(--bb-slate); margin-bottom: 6px; }
.pa-portal-app input[type="text"], .pa-portal-app input[type="email"], .pa-portal-app input[type="date"], .pa-portal-app input[type="password"], .pa-portal-app select, .pa-portal-app textarea {
	width: 100%; max-width: 100%;
	min-height: var(--pap-tap);
	font: inherit; font-size: 17px;
	padding: 8px 12px; margin: 0;
	border: 1px solid #b8c4ce; border-radius: var(--pap-radius);
	background: var(--bb-white); color: var(--bb-ink);
}
.pa-portal-app select[disabled], .pa-portal-app input[disabled] { background: var(--bb-mist); color: var(--bb-muted); }
.pa-portal-app fieldset { border: 0; padding: 0; margin: 0 0 16px; min-width: 0; }
.pa-portal-app legend { font-family: var(--pap-font-head); font-size: 15px; color: var(--bb-ink); padding: 0; margin-bottom: 8px; }
.pa-portal-app .pap-choice {
	display: flex; gap: 12px; align-items: flex-start;
	min-height: var(--pap-tap); padding: 12px 14px; margin-bottom: 8px;
	border: 1px solid var(--bb-line); border-radius: var(--pap-radius); background: var(--bb-white);
	cursor: pointer; font-family: var(--pap-font-body); font-size: 17px; color: var(--bb-ink);
}
.pa-portal-app .pap-choice input { width: 20px; height: 20px; margin: 3px 0 0; flex: none; accent-color: var(--bb-plum); }
.pa-portal-app .pap-choice:has(input:checked) { border-color: var(--bb-plum); box-shadow: inset 0 0 0 1px var(--bb-plum); }
.pa-portal-app .pap-choice small { display: block; color: var(--bb-muted); font-size: 15px; }
.pa-portal-app .pap-pref-detail { margin: 4px 0 16px 0; }
.pa-portal-app .pap-pref-detail[hidden] { display: none; }
.pa-portal-app .pap-field-error { color: #9b1c1c; font-size: 15px; margin: 4px 0 0; }
.pa-portal-app .pap-errors { background: #fdecec; color: #7a1414; border: 1px solid #f3c4c4; }
.pa-portal-app .pap-errors ul { margin: 6px 0 0 18px; list-style: disc; }
.pa-portal-app .pap-saved { background: #e8f3ea; color: #23572f; border: 1px solid #c9e2ce; }

.pa-portal-app dl.pap-readonly { margin: 0; display: grid; grid-template-columns: 1fr; gap: 2px 24px; }
.pa-portal-app dl.pap-readonly dt { font-family: var(--pap-font-head); font-size: 13px; color: var(--bb-muted); text-transform: uppercase; letter-spacing: .08em; margin: 12px 0 0; font-weight: 400; }
.pa-portal-app dl.pap-readonly dt:first-child { margin-top: 0; }
.pa-portal-app dl.pap-readonly dd { margin: 0; }

.pa-portal-app .pap-note { background: var(--bb-mist); border-radius: var(--pap-radius); padding: 14px 16px; font-size: 16px; line-height: 1.5; margin: 0 0 16px; }
.pa-portal-app .pap-note.is-phase { background: #fff8e1; color: #5c4a12; }

/* More page */
.pa-portal-app .pap-more > li { padding: 0; }
.pa-portal-app .pap-more a { display: flex; align-items: center; gap: 14px; min-height: 56px; padding: 10px 18px; color: var(--bb-ink); text-decoration: none; }
.pa-portal-app .pap-more svg { width: 22px; height: 22px; stroke: var(--bb-slate); flex: none; }
.pa-portal-app .pap-more .pap-chev { margin-left: auto; color: var(--bb-muted); }

/* Login form (logged out) */
.pa-portal-app .pap-login form p { margin: 0 0 14px; }
.pa-portal-app .pap-login .login-remember label { display: flex; gap: 8px; align-items: center; font-family: var(--pap-font-body); font-size: 16px; }
.pa-portal-app .pap-login input[type="submit"] {
	min-height: var(--pap-tap); padding: 8px 18px;
	font-family: var(--pap-font-head); font-size: 15px;
	border-radius: var(--pap-radius); border: 1px solid var(--bb-plum);
	background: var(--bb-plum); color: #fff; cursor: pointer;
}

/* ---- Batches (artist batch intake) ---- */
.pa-portal-app .pap-chip-b-draft     { background: #efefef; color: #4a4a4a; border-color: #dcdcdc; }
.pa-portal-app .pap-chip-b-submitted { background: #f1e8f8; color: #4b0a78; border-color: #dfcbee; }
.pa-portal-app .pap-chip-b-closed    { background: #eef2f6; color: #2f4256; border-color: #d6dfe8; }
.pa-portal-app .pap-chip-i-draft     { background: #efefef; color: #4a4a4a; border-color: #dcdcdc; }
.pa-portal-app .pap-chip-i-submitted { background: #fbf3e2; color: #7a4f00; border-color: #efdcb2; }
.pa-portal-app .pap-chip-i-accepted  { background: #e8f3ea; color: #23572f; border-color: #c9e2ce; }
.pa-portal-app .pap-chip-i-needs_fix { background: #fdecec; color: #7a1414; border-color: #f3c4c4; }
.pa-portal-app .pap-chip-i-declined,
.pa-portal-app .pap-chip-i-retired   { background: #efefef; color: #4a4a4a; border-color: #dcdcdc; }
.pa-portal-app .pap-chip-i-received  { background: #eef2f6; color: #2f4256; border-color: #d6dfe8; }
.pa-portal-app .pap-chip-i-converted { background: #e4f1f2; color: #19525a; border-color: #c4e0e3; }

.pa-portal-app .pap-back { margin: 0 0 12px; font-size: 16px; }
.pa-portal-app .pap-back a { display: inline-flex; align-items: center; min-height: var(--pap-tap); }
.pa-portal-app .pap-batch-head { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; margin: 0 0 12px; }
.pa-portal-app .pap-batch-head .pap-piece-no { margin: 0; font-size: 20px; }
.pa-portal-app .pap-piece-no { margin: 0 0 2px; font-size: 15px; }
.pa-portal-app .pap-piece-no b { font-family: var(--pap-font-head); font-weight: 400; color: var(--bb-slate); }
.pa-portal-app .pap-piece-no b.is-final { color: var(--bb-plum); font-weight: 600; }
.pa-portal-app .pap-batches a.pap-row-link { display: block; margin: -16px -18px; padding: 16px 18px; color: var(--bb-ink); text-decoration: none; }
.pa-portal-app .pap-batches a.pap-row-link:hover .pap-row-title { color: var(--bb-plum); text-decoration: underline; }

.pa-portal-app .pap-pieces { display: grid; grid-template-columns: 1fr; gap: 12px; margin: 0 0 16px; }
.pa-portal-app .pap-piece { background: var(--bb-white); border: 1px solid var(--bb-line); border-radius: var(--pap-radius); }
.pa-portal-app .pap-piece-link { display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: 14px; padding: 12px; color: var(--bb-ink); text-decoration: none; }
.pa-portal-app .pap-piece-link:hover h3 { color: var(--bb-plum); text-decoration: underline; }
.pa-portal-app .pap-piece h3 { margin: 0 0 2px; font-size: 18px; }
.pa-portal-app .pap-piece .pap-medium { font-size: 16px; color: var(--bb-muted); margin: 0 0 4px; }
.pa-portal-app .pap-needs { color: #9b1c1c; font-size: 15px; margin: 6px 0 0; }
.pa-portal-app .pap-why { font-size: 15px; color: var(--bb-slate); margin: 6px 0 0; }
.pa-portal-app .pap-needs-box { background: #fdecec; color: #7a1414; border: 1px solid #f3c4c4; }
.pa-portal-app .pap-needs-box ul { margin: 6px 0 0 18px; list-style: disc; }
.pa-portal-app .pap-needs-box[hidden], .pa-portal-app .pap-needs-box li[hidden] { display: none; }
.pa-portal-app .pap-problems { margin: 0 0 14px; }
.pa-portal-app .pap-problems > li { padding: 8px 0; border-top: 1px solid var(--bb-line); }
.pa-portal-app .pap-problems > li:first-child { border-top: 0; }
.pa-portal-app .pap-problems ul { margin: 2px 0 0 18px; list-style: disc; font-size: 16px; color: #9b1c1c; }
.pa-portal-app .pap-req { font-size: 12px; color: var(--bb-muted); }

.pa-portal-app .pap-photos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin: 0 0 12px; }
.pa-portal-app .pap-photo { position: relative; background: var(--bb-white); border: 1px solid var(--bb-line); border-radius: var(--pap-radius); padding: 6px; }
.pa-portal-app .pap-photo img { display: block; width: 100%; aspect-ratio: 1 / 1; object-fit: cover; border-radius: 4px; margin: 0; }
.pa-portal-app .pap-photo .pap-thumb { width: 100%; height: auto; aspect-ratio: 1 / 1; }
.pa-portal-app .pap-photo form { margin: 6px 0 0; }
.pa-portal-app .pap-photo-main {
	position: absolute; top: 12px; left: 12px;
	background: var(--bb-plum); color: #fff; border-radius: 99px; padding: 2px 10px;
	font-family: var(--pap-font-head); font-size: 11px; letter-spacing: .06em; text-transform: uppercase;
}
.pa-portal-app .pap-btn-small { width: 100%; min-height: 40px; padding: 4px 10px; font-size: 14px; }
.pa-portal-app .pap-btn-danger { color: #9b1c1c; }
.pa-portal-app .pap-upload[hidden] { display: none; }
.pa-portal-app .pap-upload .pap-btn { position: relative; overflow: hidden; margin: 0; }
.pa-portal-app .pap-file { position: absolute; inset: 0; opacity: 0; width: 100%; height: 100%; cursor: pointer; font-size: 0; }
.pa-portal-app .pap-upload .pap-v-actions { margin: 0 0 8px; }
.pa-portal-app .pap-progress-list > li { display: grid; grid-template-columns: minmax(0, 1fr); gap: 2px; padding: 8px 0; border-top: 1px solid var(--bb-line); font-size: 15px; }
.pa-portal-app .pap-progress-name { color: var(--bb-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pa-portal-app .pap-progress-list progress { width: 100%; height: 8px; accent-color: var(--bb-plum); }
.pa-portal-app .pap-progress-list .is-done .pap-progress-status { color: #23572f; }
.pa-portal-app .pap-progress-list .is-error .pap-progress-status { color: #9b1c1c; }
.pa-portal-app .pap-add-piece { margin: 0; }
.pa-portal-app .pap-remove-piece { margin: 0 0 24px; }
.pa-portal-app .pap-review { border-left: 4px solid var(--bb-plum); }

/* ---- Wider screens ---- */
@media (min-width: 600px) {
	.pa-portal-app .pap-totals { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.pa-portal-app .pap-totals.is-two { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.pa-portal-app .pap-strip { grid-template-columns: repeat(4, minmax(0, 1fr)); }
	.pa-portal-app .pap-art { grid-template-columns: 120px minmax(0, 1fr); }
	.pa-portal-app .pap-thumb { width: 120px; height: 120px; }
	.pa-portal-app .pap-piece-link { grid-template-columns: 120px minmax(0, 1fr); }
	.pa-portal-app .pap-photos { grid-template-columns: repeat(4, minmax(0, 1fr)); }
	.pa-portal-app dl.pap-readonly { grid-template-columns: 180px minmax(0, 1fr); }
	.pa-portal-app dl.pap-readonly dt { margin-top: 0; }
}

@media (min-width: 960px) {
	.pa-portal-app { padding: 16px 0 40px; }
	.pa-portal-app h1 { font-size: 36px; }
	.pa-portal-app .pap-body { display: grid; grid-template-columns: 230px minmax(0, 1fr); gap: 48px; align-items: start; }
	.pa-portal-app .pap-side { display: block; position: sticky; top: 24px; }
	.pa-portal-app .pap-tabbar { display: none; }
	body.pa-portal-page { padding-bottom: 0; }
	.pa-portal-app .pap-art-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.pa-portal-app .pap-two-col { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 32px; align-items: start; }
}
