/* Readable request workspace; scoped to the portal and its existing iframe. */
#app[data-view=client-portal] > #main-content {display:flex;flex-direction:column;min-height:0;overflow:hidden}
#app[data-view=client-portal] > #main-content > .workspace-brand-header {flex:none}
#view-client-portal:not(.hidden) {display:flex;flex:1;min-height:0;overflow:hidden}
#view-client-portal #client-portal-frame {flex:1;width:100%;height:100%!important;min-height:0!important;border:0}
body.portal-admin {--font:'Manrope','Segoe UI',sans-serif;--font-heading:var(--font);font:15px/1.55 var(--font)}
body.portal-admin :is(button,input,textarea) {font-family:var(--font);font-size:15px}
body.portal-admin :is(input,textarea) {font-size:16px}
:root body.portal-admin #app #workspace :is(#request-query,#client-query,#invite-url) {font-size:16px}
body.portal-admin button {min-height:42px}
.portal-admin .visually-hidden {position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
body.portal-admin #main-content {display:flex;flex-direction:column;min-height:0;overflow:hidden}
body.portal-admin #workspace {flex:1;min-height:0;overflow:auto;scrollbar-width:thin;scrollbar-color:var(--v7-line) transparent;padding-bottom:2px}
html.portal-embedded,html.portal-embedded body {height:100%!important;overflow:hidden!important}
html.portal-embedded #app {height:100dvh!important;overflow:hidden!important;contain:paint}
html.portal-embedded #app #main-content {height:100dvh!important;overflow:hidden!important}
body.portal-admin:has(#request-dialog[open]) #workspace {overflow:hidden}
.portal-admin .portal-section-tabs {gap:8px;flex-wrap:wrap;padding-bottom:12px}
.portal-admin .portal-section-tabs button {padding:9px 14px;font-size:14px}
@media (min-width:801px) {
 html:not(.portal-embedded) .portal-admin .portal-section-tabs {display:none}
}
.portal-admin .portal-panel-header {padding:16px 20px}
.portal-admin .portal-panel-header p {font-size:14px;line-height:1.5}
.portal-admin .portal-metrics {gap:10px;margin:14px 20px}
.portal-admin .portal-metrics > div {padding:10px 14px}
.portal-admin .portal-metrics span {font-size:13px;line-height:1.4}
.portal-admin .portal-metrics strong {font-size:26px}
.portal-admin .portal-toolbar {gap:10px;padding-bottom:14px}
.portal-admin .portal-toolbar form {display:flex;flex-wrap:nowrap;gap:8px}
.portal-admin .portal-toolbar form input {min-width:0}
.portal-admin .portal-filters {gap:7px}
.portal-admin .portal-filters button {min-height:38px;font-size:14px;padding:7px 12px}
.portal-admin :is(.request-table-head,.request-row) {grid-template-columns:minmax(160px,1fr) minmax(200px,1.3fr) minmax(160px,1fr) minmax(130px,.8fr) 155px;gap:16px}
.portal-admin .request-table-head {font-size:13px;padding-block:11px}
.portal-admin .request-row {padding-block:18px;align-items:start}
.portal-admin .request-row > div {min-width:0}
.portal-admin .request-row strong {font-size:15px;line-height:1.5;font-weight:700}
.portal-admin .request-client > strong {font-size:16px}
.portal-admin .request-row small {font-size:13px;line-height:1.5;margin-top:5px}
.portal-admin .request-row .portal-phone {font-size:14px;line-height:1.5;margin-top:4px}
.portal-admin .request-row .request-excerpt {display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;margin:7px 0 0;color:var(--v7-muted);font-size:13px;line-height:1.5;overflow-wrap:anywhere}
.portal-admin .request-row .request-response {-webkit-line-clamp:1}
.portal-admin .request-slot {display:grid;gap:5px;overflow-wrap:anywhere}
.portal-admin .request-slot > span {font-size:14px;line-height:1.5;color:var(--v7-muted);white-space:pre-wrap}
.portal-admin .request-slot > :is(strong,span) {display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.portal-admin .request-kind[data-kind=move] {color:var(--portal-warn)}
.portal-admin .request-kind[data-kind=cancel] {color:var(--portal-danger)}
.portal-admin .portal-status-help {display:inline-flex;align-items:center;width:auto;max-width:100%;min-height:32px!important;margin:0;padding:6px 9px;border-radius:8px;font:600 13px/1.5 var(--font);text-align:left;white-space:normal}
.portal-admin .request-row .request-actions {gap:7px}
.portal-admin .request-row .request-actions button {font-size:14px;padding:9px 11px;min-height:40px}
.portal-admin .request-row .request-actions .ghost {color:var(--v7-muted);border-color:transparent}
.portal-admin .portal-pagination {font-size:13px}
.portal-admin .portal-pagination button {font-size:14px;min-height:40px}
.portal-admin .portal-guidance {font-size:14px;line-height:1.6}
.portal-admin .portal-guidance strong {font-size:14px}
.portal-admin .portal-search {padding-top:14px}
.portal-admin label {font-size:14px}
.portal-admin .portal-invite-result p,.portal-admin .portal-notice {font-size:14px}
.portal-admin #portal-tooltip {font-size:13px;line-height:1.6}

/* The dialog has one scrolling body, with its heading and actions outside it. */
:root body.portal-admin > dialog#request-dialog.form-dialog {max-height:calc(100dvh - 28px);overflow:hidden}
:root body.portal-admin > dialog#request-dialog.form-dialog[open] {display:flex;flex-direction:column}
:root body.portal-admin > #request-dialog .dialog-header {flex:none;padding:17px 20px}
:root body.portal-admin > #request-dialog .dialog-header h2 {font-size:23px}
:root body.portal-admin > #request-dialog .dialog-header p {font-size:13px;line-height:1.5}
:root body.portal-admin > #request-dialog .request-dialog-layout {flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;grid-template-columns:minmax(0,1.3fr) minmax(310px,1fr);padding:18px;gap:16px;align-items:start}
:root body.portal-admin > #request-dialog .request-detail-section {padding:16px}
:root body.portal-admin > #request-dialog .request-detail-section h3 {font-size:17px;margin-bottom:13px}
:root body.portal-admin > #request-dialog .request-detail-section dl > div {grid-template-columns:128px minmax(0,1fr);gap:12px;padding-bottom:10px}
:root body.portal-admin > #request-dialog .request-detail-section dt {font-size:13px;line-height:1.6}
:root body.portal-admin > #request-dialog .request-detail-section dd {font-size:15px;line-height:1.6}
:root body.portal-admin > #request-dialog .request-detail-section .request-text {font-size:15px;line-height:1.6}
:root body.portal-admin > #request-dialog .request-detail-section small {font-size:13px;line-height:1.5}
:root body.portal-admin > #request-dialog .portal-status {font-size:13px}
:root body.portal-admin > #request-dialog .portal-calendar-action {display:flex;align-items:center;justify-content:center;min-height:44px;margin:14px 0;padding:10px 12px;border:1px solid var(--v7-line);border-radius:9px;text-decoration:none;font-size:15px;font-weight:600;text-align:center}
:root body.portal-admin > #request-dialog .portal-calendar-action.primary {background:var(--v7-brand);border-color:var(--v7-section-header-line);color:#fff}
:root body.portal-admin > #request-dialog .request-next-step {margin:10px 0 0;font-size:14px;line-height:1.55;color:var(--v7-muted)}
:root body.portal-admin > #request-dialog .request-empty-payment {margin:0;font-size:14px;line-height:1.6;color:var(--v7-muted)}
:root body.portal-admin > #request-dialog .portal-guidance {margin:12px 0;font-size:14px}
:root body.portal-admin > #request-dialog legend {font-size:14px;line-height:1.5}
:root body.portal-admin > #request-dialog .portal-booking-choice {padding:12px;gap:10px;font-size:15px;line-height:1.5}
:root body.portal-admin > #request-dialog .portal-booking-choice > span {min-width:0;overflow-wrap:anywhere}
:root body.portal-admin > #request-dialog .portal-booking-choice strong {font-size:15px}
:root body.portal-admin > #request-dialog input[type=radio] {width:18px;height:18px;min-height:18px;flex:none;margin-top:3px}
:root body.portal-admin > #request-dialog textarea#resolution-note {font-size:16px;min-height:104px}
:root body.portal-admin > #request-dialog .dialog-footer {flex:none;display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:8px;padding:13px 18px;border-top:1px solid var(--v7-line);background:var(--v7-surface)}
:root body.portal-admin > #request-dialog .dialog-footer button {min-height:44px;padding:10px 14px;font-size:15px}
:root body.portal-admin > #request-dialog .dialog-footer button.ghost {border-color:transparent}
:root body.portal-admin > #request-dialog .dialog-footer .portal-calendar-action {margin:0;padding:10px 14px;min-height:44px}
:root body.portal-admin > #request-dialog #dialog-error:empty {display:none}

@media (max-width:960px) {
 .portal-admin :is(.request-table-head,.request-row) {grid-template-columns:minmax(140px,1fr) minmax(170px,1.3fr) minmax(140px,1fr) 135px;gap:12px}
 .portal-admin .request-table-head > :last-child {display:none}
 .portal-admin .request-row .request-actions {grid-column:1/-1;display:flex;justify-content:flex-end;flex-wrap:wrap;padding-top:2px}
 .portal-admin .request-row .request-actions button {min-width:140px}
}
@media (max-width:800px) {
 .portal-admin .request-table-head {display:none}
 .portal-admin .request-row {grid-template-columns:minmax(0,1fr) auto;gap:12px;padding:16px}
 .portal-admin .request-client {grid-column:1;grid-row:1}
 .portal-admin .request-status-cell {grid-column:2;grid-row:1;max-width:140px}
 .portal-admin .request-row .request-wishes {grid-column:1/-1;grid-row:2}
 .portal-admin .request-row .request-slot {grid-column:1/-1;grid-row:3;padding:10px 12px;border:1px solid var(--v7-line);border-radius:8px;background:var(--v7-panel)}
 .portal-admin .request-row .request-actions {grid-column:1/-1;grid-row:4;justify-content:flex-start}
 .portal-admin .request-row .request-actions button {flex:1;min-width:0}
 .portal-admin .portal-metrics {margin:12px 14px}
 .portal-admin .portal-metrics > div {display:grid;gap:6px;padding:10px;align-content:start}
 .portal-admin .portal-panel-header {padding:15px}
 .portal-admin .portal-toolbar {padding-inline:14px}
 :root body.portal-admin > #request-dialog .request-dialog-layout {grid-template-columns:1fr;padding:12px;gap:12px}
 :root body.portal-admin > #request-dialog .request-detail-section {padding:14px}
}
@media (max-width:420px) {
 .portal-admin .portal-section-tabs {gap:6px}
 .portal-admin .portal-section-tabs button {flex:1 1 130px;padding:9px 10px;font-size:14px}
 .portal-admin .portal-metrics {gap:6px}
 .portal-admin .portal-metrics span {font-size:13px}
 .portal-admin .portal-metrics strong {font-size:24px}
 .portal-admin .request-row {grid-template-columns:minmax(0,1fr);gap:10px;padding:14px}
 .portal-admin .request-status-cell {grid-column:1;grid-row:2;max-width:100%}
 .portal-admin .request-row .request-wishes {grid-row:3}
 .portal-admin .request-row .request-slot {grid-row:4}
 .portal-admin .request-row .request-actions {grid-row:5}
 .portal-admin .portal-pagination {padding:12px;gap:6px;flex-wrap:wrap}
 .portal-admin .portal-pagination button {font-size:14px;padding:8px 10px}
 :root body.portal-admin > dialog#request-dialog.form-dialog {width:calc(100vw - 16px);max-height:calc(100dvh - 16px)}
 :root body.portal-admin > #request-dialog .dialog-header {padding:14px}
 :root body.portal-admin > #request-dialog .dialog-header h2 {font-size:20px}
 :root body.portal-admin > #request-dialog .request-detail-section dl > div {grid-template-columns:1fr;gap:4px}
 :root body.portal-admin > #request-dialog .dialog-footer {padding:10px;gap:6px}
 :root body.portal-admin > #request-dialog .dialog-footer button {flex:1 1 auto;padding:10px;font-size:14px}
 :root body.portal-admin > #request-dialog .dialog-footer .portal-calendar-action {flex:1 1 100%;font-size:14px}
}
@media (max-width:360px) {
 .portal-admin .portal-metrics {grid-template-columns:1fr}
 .portal-admin .portal-metrics > div {display:flex;align-items:center;justify-content:space-between;padding:8px 12px}
}
