/* V28 — shared controls. Tables keep their content width; their own frame scrolls. */
body[data-portal] :is(.work-area,.main,.panel,.stack,.grid-2,.form-grid,.company-extra,.modal-inner,.modal-body) {
  min-width:0;
  max-width:100%;
}
body[data-portal] .table-scroll {
  display:block;
  width:100%;
  max-width:100%;
  min-width:0;
  overflow-x:auto;
  overscroll-behavior-x:contain;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:auto;
  scrollbar-color:#6f939f #e6edf0;
}
body[data-portal] .table-scroll::-webkit-scrollbar { height:12px; }
body[data-portal] .table-scroll::-webkit-scrollbar-track { background:#e6edf0; border-radius:10px; }
body[data-portal] .table-scroll::-webkit-scrollbar-thumb { background:#6f939f; border:2px solid #e6edf0; border-radius:10px; }
body[data-portal] .table-scroll table {
  width:max-content;
  min-width:100%;
  max-width:none;
  table-layout:auto;
}
body[data-portal] .table-scroll :is(th,td) {
  white-space:nowrap;
  overflow-wrap:normal;
  word-break:normal;
  vertical-align:middle;
}
body[data-portal] .table-scroll th { padding:11px 10px; font-size:12px; line-height:1.4; text-align:center; }
body[data-portal] .table-scroll td { height:44px; padding:6px 10px; font-size:14px; line-height:1.35; }
body[data-portal] .table-scroll :is(.cell-actions,.row-actions,.v26-calendar-actions,.v28-doc-actions) {
  display:flex;
  flex-wrap:nowrap;
  align-items:center;
  justify-content:center;
  width:max-content;
  min-width:max-content;
  gap:6px;
  margin-inline:auto;
}
body[data-portal] .table-scroll :is(.table-actions,td:has(>.button),td:has(>.row-actions),td:has(>.cell-actions)) {
  width:1%;
  white-space:nowrap;
  text-align:center;
}
body[data-portal] .table-scroll .button {
  flex:0 0 auto;
  min-width:max-content;
  width:auto;
  min-height:32px;
  padding:5px 10px;
  font-size:13px;
  line-height:1.4;
  white-space:nowrap;
  overflow-wrap:normal;
  word-break:normal;
  hyphens:none;
}
body[data-portal] .table-scroll .button .icon { width:15px; height:15px; }
body[data-portal] .table-scroll .pill { white-space:nowrap; }
/* Status alignment is assigned from the column heading or an exclusively badge-only cell. */
body[data-portal] .table-scroll td[data-v28-status-cell] {
  text-align:center;
  vertical-align:middle;
}
body[data-portal] .table-scroll td[data-v28-status-cell]>:is(.row,.stack) {
  justify-content:center;
  align-items:center;
  justify-items:center;
}
body[data-portal] .table-scroll [data-v28-status-badge] {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  text-align:center;
  vertical-align:middle;
  min-height:28px;
  padding:5px 10px;
  border-style:solid;
  border-width:1px;
  border-radius:999px;
  font-size:13px;
  font-weight:750;
  line-height:1.25;
  letter-spacing:0;
  white-space:nowrap;
}
body[data-portal] .table-scroll .pill[data-v28-status-badge] {
  background:#e1ebf7;
  color:#284c74;
  border-color:#9bb4d0;
}
body[data-portal] .table-scroll .pill.green[data-v28-status-badge] {
  background:#d9eee2;
  color:#155435;
  border-color:#86b49a;
}
body[data-portal] .table-scroll .pill.red[data-v28-status-badge] {
  background:#f5dfe7;
  color:#861f40;
  border-color:#c792a5;
}
body[data-portal] .table-scroll .pill.amber[data-v28-status-badge] {
  background:#fff0d4;
  color:#795018;
  border-color:#ceb17b;
}
body[data-portal] .table-scroll :is(.cell-ellipsis,.v25-cell-text,.messages-cell) { vertical-align:middle; }
/* A form may reflow above a table; dates and native Safari selects keep equal heights. */
body[data-portal] :is(.field,.v27-sub-filters,.messages-filter-bar) :is(input:not([type=checkbox]):not([type=radio]),select),
body[data-portal] .form-grid>label :is(input:not([type=checkbox]):not([type=radio]),select) {
  min-width:0;
  min-height:44px;
  height:44px;
  font-size:16px;
  line-height:1.25;
  padding:10px 12px;
  box-sizing:border-box;
}
body[data-portal] :is(input[type=date],input[type=datetime-local],input[type=time]) { font-variant-numeric:tabular-nums; }
body[data-portal] input::-webkit-datetime-edit { padding:0; }
body[data-portal] .v26-calendar-toolbar { align-items:end; }
body[data-portal] :is(.toolbar,.page-heading,.form-actions,.panel-header) { min-width:0; }
body[data-portal] :is(.toolbar,.form-actions) .button { white-space:nowrap; overflow-wrap:normal; }

/* Stable action colors, shared by modules. A repeated action retains its color. */
body[data-portal] .button[data-v28-tone] {
  --button-color:var(--v28-tone);
  --button-hover:var(--v28-tone);
  background-color:var(--v28-tone);
  background-image:linear-gradient(180deg,#ffffff20,transparent 52%,#00000012);
  color:#fff;
  border-color:#ffffff40;
}
body[data-portal] .button[data-v28-tone]:hover:not(:disabled) { filter:brightness(1.1); }
body[data-portal] .button[data-v28-tone=green] { --v28-tone:#176c4b; }
body[data-portal] .button[data-v28-tone=red] { --v28-tone:#952746; }
body[data-portal] .button[data-v28-tone=blue] { --v28-tone:#2d5f9d; }
body[data-portal] .button[data-v28-tone=teal] { --v28-tone:#146d7d; }
body[data-portal] .button[data-v28-tone=violet] { --v28-tone:#6548a1; }
body[data-portal] .button[data-v28-tone=plum] { --v28-tone:#88457f; }
body[data-portal] .button[data-v28-tone=amber] { --v28-tone:#906021; }
body[data-portal] .button[data-v28-tone=orange] { --v28-tone:#a2501d; }
body[data-portal] .button[data-v28-tone=brown] { --v28-tone:#71503d; }
body[data-portal] .button[data-v28-tone=indigo] { --v28-tone:#4e578d; }
body[data-portal] .button[data-v28-tone=slate] { --v28-tone:#486476; }
/* These final modal rules also cover markup inserted before enhancement runs. */
body[data-portal] #modal .button:is([data-confirmed=true],[data-v28-confirm]) {
  --button-color:#176c4b;
  --button-hover:#207c59;
  background-color:#176c4b;
  background-image:linear-gradient(180deg,#ffffff20,transparent 52%,#00000012);
  color:#fff;
}
body[data-portal] #modal .button:is(.modal-cancel,.close-button,[data-action=close-modal],[data-v28-cancel]) {
  --button-color:#952746;
  --button-hover:#a93c5b;
  background-color:#952746;
  background-image:linear-gradient(180deg,#ffffff20,transparent 52%,#00000012);
  color:#fff;
}
body[data-portal] #modal .form-actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:12px; padding-top:20px; }
body[data-portal] #modal .form-actions>.button { min-width:120px; min-height:42px; }
body[data-portal] #modal .form-actions>[data-v28-cancel] { order:0; }
body[data-portal] #modal .form-actions>[data-v28-confirm] { order:1; }
body[data-portal] #modal .form-actions>[data-v28-confirm]~[data-v28-cancel] { order:0; }

/* Security uses the four real status counters already supplied by its API. */
body[data-portal] .v23-stats { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; }
body[data-portal] .v23-stats .v23-stat { border:1px solid var(--v28-edge); border-left:4px solid var(--v28-accent); border-radius:15px; padding:16px 19px; background:var(--v28-surface); color:#294556; min-width:0; }
body[data-portal] .v23-stat strong { color:var(--v28-accent); font-size:28px; line-height:1.15; }
body[data-portal] .v23-stat span { font-weight:650; margin-top:6px; }
body[data-portal] [data-v28-panel=active] { --v28-surface:#e0f0e6; --v28-edge:#9ec8b0; --v28-accent:#216e4e; }
body[data-portal] [data-v28-panel=suspended] { --v28-surface:#f5e2e8; --v28-edge:#d4a6b5; --v28-accent:#922b4a; }
body[data-portal] [data-v28-panel=pending_payment] { --v28-surface:#fff0d9; --v28-edge:#d5bb8b; --v28-accent:#926120; }
body[data-portal] [data-v28-panel=expired] { --v28-surface:#eae5f4; --v28-edge:#bbacd2; --v28-accent:#695090; }
body[data-portal] .panel[data-v28-panel] { border-top:3px solid var(--v28-accent); background:linear-gradient(130deg,var(--v28-surface),#f4f7fa); border-color:var(--v28-edge); border-top-color:var(--v28-accent); }
body[data-portal] [data-v28-panel=search] { --v28-surface:#dfecf8; --v28-edge:#b3c7db; --v28-accent:#426b96; }
body[data-portal] [data-v28-panel=accounts] { --v28-surface:#e1f0e7; --v28-edge:#a8cbb8; --v28-accent:#33795a; }
body[data-portal] [data-v28-panel=payments] { --v28-surface:#fff0dc; --v28-edge:#d8bd94; --v28-accent:#9b682d; }
body[data-portal] [data-v28-panel=history] { --v28-surface:#ebe5f6; --v28-edge:#c3b4db; --v28-accent:#745b9d; }
body[data-portal] [data-v28-panel=company] { --v28-surface:#e2eef8; --v28-edge:#b0c4db; --v28-accent:#3e729b; }
body[data-portal] [data-v28-panel=invoices] { --v28-surface:#fff0dd; --v28-edge:#d6ba8d; --v28-accent:#9c682e; }
body[data-portal] [data-v28-panel=origin] { --v28-surface:#e8e2f3; --v28-edge:#c0b2d5; --v28-accent:#75539a; }
body[data-portal] [data-v28-panel=paypal] { --v28-surface:#e1f0f1; --v28-edge:#a9cbd0; --v28-accent:#32787e; }
body[data-portal] [data-v28-panel=mail] { --v28-surface:#f4e4ed; --v28-edge:#d6b4c7; --v28-accent:#944f75; }
body[data-portal] [data-v28-panel=branding] { --v28-surface:#edf0df; --v28-edge:#bdc9a5; --v28-accent:#697c3d; }
body[data-portal] .software-price-panel { display:grid; grid-template-columns:minmax(220px,.85fr) minmax(300px,1.15fr); gap:26px; align-items:center; padding:22px 25px; }
body[data-portal] .software-price-intro { min-width:0; grid-column:auto; }
body[data-portal] .software-price-intro h2 { font-size:21px; margin:4px 0 7px; }
body[data-portal] .software-price-intro>p { font-size:14px; margin:0 0 12px; max-width:45ch; }
body[data-portal] .software-price-preview { display:flex; flex-direction:row; flex-wrap:wrap; align-items:baseline; gap:8px; width:fit-content; min-width:0; min-height:0; margin:0; padding:10px 14px; }
body[data-portal] .software-price-preview>strong { font-size:29px; line-height:1.2; margin:0; }
body[data-portal] .software-price-preview>span { font-size:13px; margin:0; }
body[data-portal] #software-price-form { gap:10px; }
body[data-portal] #software-price-form .hint { margin:0; }
body[data-portal] #software-price-form .row { margin-top:3px; }

/* The reveal control only changes the entered value's display, never requests a password. */
body[data-portal] .v28-password-entry { display:flex; align-items:stretch; gap:8px; min-width:0; width:100%; }
body[data-portal] .v28-password-entry>input { flex:1 1 0; min-width:0; width:0; }
body[data-portal] .v28-password-entry>.button { flex:0 0 auto; min-width:82px; min-height:44px; padding:8px 12px; white-space:nowrap; font-size:13px; }
@media(max-width:1000px) {
  body[data-portal] .v23-stats { grid-template-columns:repeat(2,minmax(0,1fr)); }
  body[data-portal] .software-price-panel { grid-template-columns:1fr; gap:17px; }
}
@media(max-width:560px) {
  body[data-portal] .v23-stats { gap:10px; }
  body[data-portal] .v23-stats .v23-stat { padding:13px 12px; }
  body[data-portal] .v23-stat strong { font-size:25px; }
  body[data-portal] #modal .form-actions>.button { min-width:105px; }
}
/* Public confirmations only: leave the rest of the public site's palette intact. */
#checkout-submit,
#checkout-content [data-commerce-action=pay],
#newsletter-form .newsletter-button,
#v26-export-dialog [data-export=prepare],
#v26-export-dialog [data-export=save] {
  background:linear-gradient(180deg,#267f5d,#176c4b);
  border-color:#368966;
  color:#fff;
}
#checkout-content [data-commerce-action=cancel],
#newsletter-dialog #newsletter-close,
#image-dialog #gallery-close,
#v26-export-dialog [data-export=cancel] {
  background:linear-gradient(180deg,#a83c5b,#952746);
  border-color:#b35d75;
  color:#fff;
}
#checkout-content [data-commerce-action=cancel] {
  padding:10px 17px;
  border:1px solid #b35d75;
  border-radius:999px;
  font-weight:650;
}

/* V29: the client creation action has its own brighter, readable green. */
body[data-portal] .button.v29-new-client[data-v28-tone="green"]{background:linear-gradient(180deg,#a4f56e 0%,#72dd3d 50%,#58c925 100%);color:#14350c;border-color:#40971d;text-shadow:none;box-shadow:inset 0 2px 0 #e4ffd9aa,0 3px 9px #245d1a22;font-weight:800}
body[data-portal] .button.v29-new-client[data-v28-tone="green"]:hover{filter:brightness(1.04)}

/* V53: this standalone settings window also uses the common red close action. */
body[data-portal] #device-presets-dialog [data-action=device-presets-close]{--button-color:#a12949;--button-hover:#b63a58;background-color:#a12949!important;background-image:linear-gradient(#ffffff20,#00000016)!important;color:#fff!important;-webkit-text-fill-color:#fff!important}
