
/* app-components.css */
/* Theme and native component contracts. Page-specific business layouts stay local. */
:root {
  --app-control-height:36px; --app-panel-padding:16px; --app-list-gap:12px; --app-motion-duration:180ms;
  --app-space-5:20px; --app-space-6:24px;
  --app-ink:#203129; --app-muted:#586C60; --app-title:#1D6044;
  --app-green:#078966; --app-green-dark:#006e52;
  --app-line:#C9DDD1; --app-line-soft:#E2EDE5;
  --app-soft:#fff; --app-hover:#EFF7F1; --app-subtle:#F5F9F6;
  --app-space-1:4px; --app-space-2:8px; --app-space-3:12px; --app-space-4:16px;
  --app-radius-small:6px; --app-radius-panel:10px; --app-radius-dialog:12px;
  --app-status-danger:var(--app-value-bad); --app-status-success:var(--app-value-good);
  --app-status-warning:var(--app-value-attention); --app-status-info:#3572b8;
  --app-dialog-gap:24px; --app-dialog-backdrop:rgba(14,33,23,.48);
  --app-dialog-height:min(88dvh,calc(var(--app-viewport-height,100dvh) - var(--app-dialog-gap)*2));
}
body.app-dialog-open { overflow:hidden!important; }
[data-app-dialog-part="body"] { min-width:0; }
[data-app-filters] { min-width:0; }
[data-app-table="true"] th[scope="col"] { vertical-align:middle; }
[data-app-status] { vertical-align:middle; }
[data-app-pagination] :is(button,select) { font-weight:400; }
[data-app-page-size] { width:auto; min-width:0; }
.app-status { display:inline-flex; align-items:center; gap:var(--app-space-1); border:1px solid currentColor; border-radius:var(--app-radius-small); padding:4px 8px; font-weight:400; line-height:1.3; white-space:nowrap; }
.app-status[data-app-status="danger"] { color:var(--app-status-danger); }
.app-status[data-app-status="success"] { color:var(--app-status-success); }
.app-status[data-app-status="warning"] { color:var(--app-status-warning); }
.app-status[data-app-status="info"] { color:var(--app-status-info); }
.app-identity,.app-identity-pair { display:inline-flex; align-items:center; gap:var(--app-space-1); min-width:0; }
.app-identity { flex-wrap:wrap; gap:var(--app-space-2); }
.app-identity[data-app-identity="detail"] { color:#000; }
.app-identity-separator { color:var(--app-muted); }
.app-copy { display:inline-flex; align-items:center; justify-content:center; padding:3px; border:0; background:transparent; color:inherit; cursor:pointer; }
.app-copy.copied { color:var(--app-green); }
.app-empty { padding:var(--app-space-4); color:var(--app-muted); }
.app-notices { position:fixed; inset:auto 16px calc(90px + env(safe-area-inset-bottom)); z-index:2200; display:grid; gap:8px; justify-items:center; pointer-events:none; }
.app-notice { display:flex; align-items:center; gap:var(--app-list-gap,12px); max-width:min(560px,100%); padding:12px 16px; border:1px solid var(--app-line); border-radius:var(--app-radius-panel); background:#fff; box-shadow:0 6px 24px rgba(20,60,40,.12); color:var(--app-ink); font:400 12px/1.5 -apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif; pointer-events:auto; }
.app-notice[data-app-notice="error"] { border-color:#e1b7bc; }
.app-notice>button { display:grid; place-items:center; flex:none; padding:4px; border:0; background:transparent; color:var(--app-muted); cursor:pointer; }
.app-confirm-dialog { box-sizing:border-box; width:min(420px,calc(100vw - 24px)); padding:0; border:1px solid var(--app-line); border-radius:var(--app-radius-dialog); background:#fff; color:var(--app-ink); font:400 12px/1.5 -apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif; }
.app-confirm-dialog::backdrop { background:rgba(21,43,34,.4); }
.app-confirm-dialog .dialog-head { display:flex; align-items:center; justify-content:space-between; gap:var(--app-list-gap,12px); padding:var(--app-panel-padding,16px); border-bottom:1px solid var(--app-line-soft); }
.app-confirm-dialog h2 { margin:0; font-size:14px; }
.app-confirm-dialog .dialog-head>button { display:grid; place-items:center; padding:4px; border:0; background:transparent; color:var(--app-muted); }
.app-confirm-dialog .dialog-body { padding:var(--app-panel-padding,16px); }
.app-confirm-dialog .dialog-body p { margin:0 0 12px; white-space:pre-wrap; }
.app-confirm-dialog .dialog-body p:last-child { margin-bottom:0; }
.app-confirm-dialog input { box-sizing:border-box; width:100%; }
.app-confirm-dialog .dialog-foot { display:flex; justify-content:flex-end; gap:8px; padding:12px 16px; border-top:1px solid var(--app-line-soft); }
.app-confirm-dialog .dialog-foot button { padding:8px 14px; border:1px solid var(--app-line); border-radius:var(--app-radius-small); background:#fff; color:var(--app-green); cursor:pointer; }
.app-confirm-dialog .dialog-foot .primary { border-color:var(--app-green); background:var(--app-green); color:#fff; }
/* Mobile form/detail windows follow content and scroll inside the available viewport. */
@media(max-width:800px),(hover:none) and (pointer:coarse) {
  html:root body :is(dialog,#siteMobileDrawer):not(.site-mobile-drawer):not(.marketing-mobile-nav):not(.wb-dialog):not(.getting-started-dialog) {
    height:fit-content!important; min-height:0!important;
    max-height:min(var(--app-dialog-height),calc(100dvh - var(--app-dialog-gap)*2))!important;
    overflow:auto!important;
  }
  html:root body .summary-asin-panel {
    height:auto!important; min-height:0!important;
    max-height:min(var(--app-dialog-height),calc(100dvh - var(--app-dialog-gap)*2))!important;
  }
  html:root body div.admin-modal .admin-modal-box {
    max-height:min(var(--app-dialog-height),calc(100dvh - var(--app-dialog-gap)*2))!important;
    overflow:auto; overscroll-behavior:contain;
  }
  dialog[data-app-dialog="form"],dialog[data-app-dialog="form"] [data-app-dialog-part="body"] {
    max-height:calc(var(--app-viewport-height,100dvh) - 24px);
    overscroll-behavior:contain;
  }
}
/* Brand, navigation and footer copy use regular weight across public and app pages. */
html:root body :is(header .brand,.visual-brand,.visual-brand *,.aw-nav-brand,.site-nav-brand,.site-nav-brand *,.site-nav-primary>a,.site-nav-group>summary,.site-nav-group>button,.site-nav-menu a,.site-nav-menu-label,.site-mobile-bottom-nav a,.site-mobile-bottom-nav span,.site-mobile-drawer-brand,.site-mobile-drawer-brand *,.site-mobile-row,.site-mobile-row-label,.site-mobile-back,.site-mobile-section,.site-mobile-drawer-foot button,.site-header .main-nav a,.site-header .nav-cta,.aw-site-footer,.aw-site-footer *){font-weight:400!important}

/* Ordinary list copy shares one colour and regular weight on desktop and mobile.
   Feedback and controls keep their semantic colours; page layouts stay local. */
:root { --app-list-ink:#263238; --app-list-caption:#667681; }
html:root body :is(#cards,table,.app-list,.app-list-row,.listing-view,.owner-panel,.owner-mobile-card,
  .wb-candidate-table,.wb-focus-list,.wb-issues,.wb-owner-row,.wb-owner-reviews,
  .owners,.stage-owners,.owner-learning-list,.owner-action-list,.outcome-list,
  .asin-list,.compare-table,.member,.ip-list,.login-log-list,.store-panel,
  .store-sync-table,.store-missing-list,.scope-list,.customer-list,.provider-list,
  .provider-usage-list,.usage-list,.administrator-list,.run-list,.attention-list,
  .plan-list,.store-dialog-list,.run-history,.system-settings) {
  font-weight:400!important;
}
html:root body :is(#cards,table,.app-list,.app-list-row,.listing-view,.owner-panel,.owner-mobile-card,
  .wb-candidate-table,.wb-focus-list,.wb-issues,.wb-owner-row,.wb-owner-reviews,
  .owners,.stage-owners,.owner-learning-list,.owner-action-list,.outcome-list,
  .asin-list,.compare-table,.member,.ip-list,.login-log-list,.store-panel,
  .store-sync-table,.store-missing-list,.scope-list,.customer-list,.provider-list,
  .provider-usage-list,.usage-list,.administrator-list,.run-list,.attention-list,
  .plan-list,.store-dialog-list,.run-history,.system-settings) :is(th,td,div,span,p,b,strong,h2,h3,h4,h5,a,label,small,li,dt,dd,time,button) {
  font-weight:400!important;
}
html:root body :is(#cards,table,.app-list,.app-list-row,.listing-view,.owner-panel,.owner-mobile-card,
  .wb-candidate-table,.wb-focus-list,.wb-issues,.wb-owner-row,.wb-owner-reviews,
  .owners,.stage-owners,.owner-learning-list,.owner-action-list,.outcome-list,
  .asin-list,.compare-table,.member,.ip-list,.login-log-list,.store-panel,
  .store-sync-table,.store-missing-list,.scope-list,.customer-list,.provider-list,
  .provider-usage-list,.usage-list,.administrator-list,.run-list,.attention-list,
  .plan-list,.store-dialog-list,.run-history,.system-settings) :is(th,td,div,span,p,b,strong,h2,h3,h4,h5,a,label,small,li,dt,dd,time,button):not(:is(a[href],.app-link,[role="link"],.listing-parent,[data-app-parent],
    .app-list-label,[data-app-list-label],
    .listing-mobile-facts>div>span,.usage-row-fact>span,
    .customer-fact>span,.provider-fact>span,.provider-usage-metric>span,
    .customer-numbers small,.system-setting-row>span,
    [data-app-status],.app-status,.status,.badge,.tag-badge,.listing-status,
    .listing-mobile-status,.wb-badge,.outcome-status,.status-icon,
    .danger,.high,.good,.bad,.warn,.warning,.success,.positive,.negative,
    .owner-profit-positive,.owner-profit-negative,.trend-good,.trend-bad,
    .metric-trend-good,.metric-trend-bad,.metric-trend-neutral,
    .event-delta-good,.event-delta-bad,.event-delta-neutral,.wb-good,.wb-bad,
    .wb-signal-loss,.wb-problem,.stage-risk,.learning-risk,.quota-warn,
    .error,.fail,.failed,.partial,.incomplete,.off,.wb-error,.wb-alert,
    .attention-reason,.attention-success,.run-failure-reason,.repair-feedback,
    [data-app-value-tone],.metric-placeholder,.period-missing,.data-missing,.scope-status,
    .owner-mobile-risk,.owner-table td:nth-child(n+3):nth-child(-n+6),
    .inline-diff-add,.inline-diff-remove,.added,.removed,.updated,
    .app-copy.copied,.copy-asin.copied,.summary-asin-copy.copied,
    button:not(.list-sort-button):not(.owner-sort-button):not(.wb-sort-button):not(.parent-group-button):not(.copy-asin):not(.app-copy):not(.asin-row):not(.wb-owner-row):not(.stage-owner-button):not(.listing-parent):not([data-app-parent]),
    :is(a[href],.app-link,[role="link"],.listing-parent,[data-app-parent],
    .app-list-label,[data-app-list-label],
    .listing-mobile-facts>div>span,.usage-row-fact>span,
    .customer-fact>span,.provider-fact>span,.provider-usage-metric>span,
    .customer-numbers small,.system-setting-row>span,
    [data-app-status],.app-status,.status,.badge,.tag-badge,.listing-status,
    .listing-mobile-status,.wb-badge,.outcome-status,.status-icon,
    .danger,.high,.good,.bad,.warn,.warning,.success,.positive,.negative,
    .owner-profit-positive,.owner-profit-negative,.trend-good,.trend-bad,
    .metric-trend-good,.metric-trend-bad,.metric-trend-neutral,
    .event-delta-good,.event-delta-bad,.event-delta-neutral,.wb-good,.wb-bad,
    .wb-signal-loss,.wb-problem,.stage-risk,.learning-risk,.quota-warn,
    .error,.fail,.failed,.partial,.incomplete,.off,.wb-error,.wb-alert,
    .attention-reason,.attention-success,.run-failure-reason,.repair-feedback,
    [data-app-value-tone],.metric-placeholder,.period-missing,.data-missing,.scope-status,
    .owner-mobile-risk,.owner-table td:nth-child(n+3):nth-child(-n+6),
    .inline-diff-add,.inline-diff-remove,.added,.removed,.updated,
    .app-copy.copied,.copy-asin.copied,.summary-asin-copy.copied,
    button:not(.list-sort-button):not(.owner-sort-button):not(.wb-sort-button):not(.parent-group-button):not(.copy-asin):not(.app-copy):not(.asin-row):not(.wb-owner-row):not(.stage-owner-button):not(.listing-parent):not([data-app-parent])) *)) {
  color:var(--app-list-ink)!important;
}
html:root body :is(#cards,table,.app-list,.app-list-row,.listing-view,.owner-panel,.owner-mobile-card,
  .wb-candidate-table,.wb-focus-list,.wb-issues,.wb-owner-row,.wb-owner-reviews,
  .owners,.stage-owners,.owner-learning-list,.owner-action-list,.outcome-list,
  .asin-list,.compare-table,.member,.ip-list,.login-log-list,.store-panel,
  .store-sync-table,.store-missing-list,.scope-list,.customer-list,.provider-list,
  .provider-usage-list,.usage-list,.administrator-list,.run-list,.attention-list,
  .plan-list,.store-dialog-list,.run-history,.system-settings) :is(th,td,[data-label])::before {
  color:var(--app-list-caption)!important;
  font-weight:400!important;
}

/* Captions are lighter than the values they describe, at regular weight. */
html:root body :is(#cards,table,.app-list,.app-list-row,.listing-view,.owner-panel,.owner-mobile-card,
  .wb-candidate-table,.wb-focus-list,.wb-issues,.wb-owner-row,.wb-owner-reviews,
  .owners,.stage-owners,.owner-learning-list,.owner-action-list,.outcome-list,
  .asin-list,.compare-table,.member,.ip-list,.login-log-list,.store-panel,
  .store-sync-table,.store-missing-list,.scope-list,.customer-list,.provider-list,
  .provider-usage-list,.usage-list,.administrator-list,.run-list,.attention-list,
  .plan-list,.store-dialog-list,.run-history,.system-settings) :is(.app-list-label,[data-app-list-label],
  .listing-mobile-facts>div>span,.usage-row-fact>span,
  .customer-fact>span,.provider-fact>span,.provider-usage-metric>span,
  .customer-numbers small,.system-setting-row>span):not(:is([data-app-status],.app-status,.status,.badge,.positive,.negative,.good,.bad,.danger,.warning,.metric-placeholder)) {
  color:var(--app-list-caption)!important;
  font-weight:400!important;
}

/* Shared link interaction: text, navigation, action and image links use one rhythm. */
:root {
  --app-link-ink:var(--app-list-ink); --app-link-line:#91bcb0;
  --app-link-hover:var(--app-green-dark); --app-link-duration:var(--app-motion-duration);
  --app-link-ease:cubic-bezier(.2,.7,.2,1);
}
html:root body #asinDetailModal { --app-link-ink:#000; }
html:root body :is(a[href],.app-link,[role="link"],.listing-parent,[data-app-parent]) {
  font-weight:400!important;
  transition:color var(--app-link-duration) var(--app-link-ease),
    background-color var(--app-link-duration) var(--app-link-ease),
    background-size var(--app-link-duration) var(--app-link-ease),
    box-shadow var(--app-link-duration) var(--app-link-ease),
    opacity var(--app-link-duration) var(--app-link-ease)!important;
}
html:root body :is(a[href],.app-link,[role="link"],.listing-parent,[data-app-parent])[aria-disabled="true"] { cursor:not-allowed; }
html:root :is(#cards,#asinDetailModal,body) :is(a[href],.app-link,[role="link"],.listing-parent,[data-app-parent]):not([disabled]):not([aria-disabled="true"]):not(:where([aria-disabled="true"],[disabled],.status,.badge,.app-status,[data-app-status],
  .danger,.positive,.negative,.wb-good,.wb-bad,
  .site-nav-shell a,.site-mobile-bottom-nav a,.site-mobile-drawer a,
  .site-header a,body>header a,.main-nav a,.marketing-mobile-nav a,
  .app-text-link,.tabs a,.shield-tabs a,.summary-tabs a,.preview-bar nav a,
  .brand,.aw-site-footer__brand,.visual-brand,.site-nav-brand,
  .button,.btn,.primary,.secondary,.button-primary,.button-secondary,.button-light,
  .nav-cta,.guide-link-primary,.platform-entry,.wb-link,.app-control,.action,.variant-pill,
  [role="button"],:has(img))) {
  color:var(--app-link-ink)!important;
}
html:root :is(#cards,#asinDetailModal,body) :is(a[href],.app-link,[role="link"],.listing-parent,[data-app-parent]):not([disabled]):not([aria-disabled="true"]):not(:where(.status,.badge,.app-status,[data-app-status],.danger,.positive,.negative,.wb-good,.wb-bad,.inline-diff-add *,.inline-diff-remove *,[data-app-status] *,
 .app-text-link,.tabs a,.shield-tabs a,.summary-tabs a,.preview-bar nav a,
 .site-nav-shell a,.site-mobile-bottom-nav a,.site-mobile-drawer a,
 .site-header a,body>header a,.main-nav a,.marketing-mobile-nav a,
 .brand,.aw-site-footer__brand,.visual-brand,.site-nav-brand,
 .button,.btn,.primary,.secondary,.button-primary,.button-secondary,.button-light,
 .nav-cta,.guide-link-primary,.platform-entry,.wb-link,.app-control,.action,.variant-pill,
 [role="button"],:has(img))) {
  text-decoration:none!important;
  background-image:linear-gradient(var(--app-link-hover),var(--app-link-hover))!important;
  background-origin:content-box!important;
  background-position:left bottom!important; background-repeat:no-repeat!important;
  background-size:0% 1px!important;
  -webkit-box-decoration-break:clone; box-decoration-break:clone;
  cursor:pointer;
}
/* Filled link controls need a light hover color against their green background. */
html:root body :is(a[href],.app-link,[role="link"]):is(.primary,.button-primary,.button-light,.guide-link-primary) {
  --app-link-hover:#dffff4; --app-link-line:var(--app-link-hover);
}
html:root :is(#cards,#asinDetailModal,body) :is(.asin-link,.summary-asin-link,.listing-parent,[data-app-parent]) {
  border-bottom:0!important;
}
html:root :is(#cards,#asinDetailModal,body) :is(a[href],.app-link,[role="link"],.listing-parent,[data-app-parent]):not([disabled]):not([aria-disabled="true"]):not(:where(.status,.badge,.app-status,[data-app-status],.danger,.positive,.negative,.wb-good,.wb-bad,.inline-diff-add *,.inline-diff-remove *,[data-app-status] *,
 .app-text-link,.tabs a,.shield-tabs a,.summary-tabs a,.preview-bar nav a,
 .site-nav-shell a,.site-mobile-bottom-nav a,.site-mobile-drawer a,
 .site-header a,body>header a,.main-nav a,.marketing-mobile-nav a,
 .brand,.aw-site-footer__brand,.visual-brand,.site-nav-brand,
 .button,.btn,.primary,.secondary,.button-primary,.button-secondary,.button-light,
 .nav-cta,.guide-link-primary,.platform-entry,.wb-link,.app-control,.action,.variant-pill,
 [role="button"],:has(img))):focus-visible {
  color:var(--app-link-hover)!important;
  background-size:100% 1px!important;
}
html:root body :is(a[href],.app-link,[role="link"],.listing-parent,[data-app-parent]):focus-visible {
  outline:2px solid var(--app-green); outline-offset:3px;
}
@media(hover:hover) and (pointer:fine) {
html:root :is(#cards,#asinDetailModal,body) :is(a[href],.app-link,[role="link"],.listing-parent,[data-app-parent]):not([disabled]):not([aria-disabled="true"]):not(:where(.status,.badge,.app-status,[data-app-status],.danger,.positive,.negative,.wb-good,.wb-bad,.inline-diff-add *,.inline-diff-remove *,[data-app-status] *,
 .app-text-link,.tabs a,.shield-tabs a,.summary-tabs a,.preview-bar nav a,
 .site-nav-shell a,.site-mobile-bottom-nav a,.site-mobile-drawer a,
 .site-header a,body>header a,.main-nav a,.marketing-mobile-nav a,
 .brand,.aw-site-footer__brand,.visual-brand,.site-nav-brand,
 .button,.btn,.primary,.secondary,.button-primary,.button-secondary,.button-light,
 .nav-cta,.guide-link-primary,.platform-entry,.wb-link,.app-control,.action,.variant-pill,
 [role="button"],:has(img))):hover {
  color:var(--app-link-hover)!important;
  background-size:100% 1px!important;
}
  html:root body a[href]:has(>img):hover { box-shadow:0 0 0 2px var(--app-link-line); }
}
html:root body :is(a[href],.app-link,[role="link"],.listing-parent,[data-app-parent]):not([disabled]):not([aria-disabled="true"]):active { opacity:.72; }
@media(prefers-reduced-motion:reduce) {
html:root body :is(a[href],.app-link,[role="link"],.listing-parent,[data-app-parent]) { transition:none!important; }
}

/* Numeric feedback is semantic and shared across desktop/mobile; ordinary weight. */
:root{--app-value-good:#18733a;--app-value-bad:#c62828;--app-value-attention:#a3640c;--app-value-neutral:#263238;--app-value-missing:#667681}
html:root body :is(#cards,#asinDetailModal,main,div,section,table) :is([data-app-value-tone],.owner-profit-positive,.owner-profit-negative,.owner-profit-neutral,.trend-good,.trend-bad,.trend-neutral,.metric-trend-good,.metric-trend-bad,.metric-trend-neutral,.event-delta-good,.event-delta-bad,.event-delta-neutral,.wb-good,.wb-bad,.overview-stat-delta.is-good,.overview-stat-delta.is-bad,.overview-stat-delta.is-neutral,.metric-placeholder){font-weight:400!important;font-variant-numeric:tabular-nums}
html:root body :is(#cards,#asinDetailModal,main,div,section,table) :is([data-app-value-tone="good"],[data-app-status="success"],.owner-profit-positive,.trend-good,.metric-trend-good,.event-delta-good,.wb-good,.overview-stat-delta.is-good){color:var(--app-value-good)!important}
html:root body :is(#cards,#asinDetailModal,main,div,section,table) :is([data-app-value-tone="bad"],[data-app-status="danger"],.owner-profit-negative,.trend-bad,.metric-trend-bad,.event-delta-bad,.wb-bad,.overview-stat-delta.is-bad){color:var(--app-value-bad)!important}
html:root body :is(#cards,#asinDetailModal,main,div,section,table) :is([data-app-value-tone="attention"],[data-app-status="warning"]){color:var(--app-value-attention)!important}
html:root body :is(#cards,#asinDetailModal,main,div,section,table) :is([data-app-value-tone="neutral"],.owner-profit-neutral,.trend-neutral,.metric-trend-neutral,.event-delta-neutral,.overview-stat-delta.is-neutral){color:var(--app-value-neutral)!important}
html:root body :is(#cards,#asinDetailModal,main,div,section,table) :is([data-app-value-tone="missing"],.metric-placeholder,.overview-stat-delta.is-unavailable){color:var(--app-value-missing)!important}
/* Legacy result/status surfaces share the value palette; brand controls keep their theme. */
html:root body :is(#cards,#asinDetailModal,main,div,section,table) :is(.outcome-status.positive,.outcome-metric b.positive,.stage-verdict.stage-candidate,.learning-candidate,.attention-success){color:var(--app-value-good)!important}
html:root body :is(#cards,#asinDetailModal,main,div,section,table) :is(.outcome-status.negative,.outcome-metric b.negative,.stage-verdict.stage-risk,.learning-risk,.wb-signal-loss,.run-failure-reason,.copy-risk-level.high){color:var(--app-value-bad)!important}
html:root body :is(#cards,#asinDetailModal,main,div,section,table) :is(.outcome-status.mixed,.copy-risk-level.review,.wb-problem,.outcome-learning[data-type="investigate"],.outcome-learning[data-type="review_ads"]){color:var(--app-value-attention)!important}
html:root body :is(#cards,#asinDetailModal,main,div,section,table) :is(.outcome-status.pending,.outcome-status.low_sample,.period-missing,.data-missing){color:var(--app-value-missing)!important}
html:root body :is(#cards,#asinDetailModal,main,div,section,table) .outcome-status.flat{color:var(--app-value-neutral)!important}
html:root body #asinDetailModal .deep-diagnosis-summary .problem[data-app-value-tone]>b{color:inherit!important}
html:root body [data-app-status] .status-text{color:inherit!important}
html:root body #asinDetailModal .detail-snapshot-values small{color:var(--app-value-missing)!important}
/* A favorable decrease must not gain an upward arrow from its green class. */
html:root body :is(.perf-matrix-value,.perf-compare-table td):is(.trend-good,.trend-bad)::before{content:none!important}

/* Wrapping a value must not pick up the page's smaller caption span style. */
html:root body span.app-value[data-app-value-tone]{display:inline!important;font-size:inherit!important;line-height:inherit!important}

/* Shared composition tokens; domain geometry can override these explicitly. */
[data-app-view-state="error"]{color:var(--app-status-danger);font-weight:400}
[data-app-view-state="loading"],[data-app-view-state="empty"]{color:var(--app-list-caption,#667681);font-weight:400}
.app-retry{margin-inline-start:var(--app-space-2);font:inherit;font-weight:400;background:#fff;color:var(--app-green);border:1px solid var(--app-line);border-radius:var(--app-radius-small);padding:4px 8px;cursor:pointer}
.app-progress{display:flex;flex-wrap:wrap;gap:var(--app-space-2);font-weight:400}.app-progress .current{color:var(--app-green)}.app-progress .done{color:var(--app-list-caption,#667681)}
.app-facts{display:flex;align-items:center;gap:var(--app-list-gap)}.app-facts>div{display:flex;align-items:center;gap:var(--app-space-2);min-width:0}.app-facts span{display:block;font-weight:400}
[data-app-image-error="true"]{color:var(--app-list-caption,#667681);font-size:12px}
@media(prefers-reduced-motion:reduce){:root{--app-motion-duration:0ms}}

.site-ai-sync-notice{margin:8px 0 0;font-size:12px;font-weight:400;flex-basis:100%}.site-ai-head:has(.site-ai-sync-notice:not([hidden])){flex-wrap:wrap}

/* Form primitives: public cards, compact management and native dialogs share tokens. */
.app-field { display:grid; gap:var(--app-space-1); min-width:0; margin-top:var(--app-space-3); }
.app-field>label { color:var(--app-ink); font-weight:600; }
.app-field-help { color:var(--app-muted); overflow-wrap:anywhere; }
.app-form-feedback { overflow-wrap:anywhere; }
.app-form-feedback:empty { display:none; }
.app-form-feedback[data-app-notice="error"] { color:var(--app-status-danger); }
.app-form-actions { display:flex; flex-wrap:wrap; align-items:center; gap:var(--app-space-2); margin-top:var(--app-space-4); }
.app-security-form input { box-sizing:border-box; width:100%; min-width:0; height:var(--app-control-height); border:1px solid var(--app-line); border-radius:var(--app-radius-small); padding:0 10px; background:#fff; color:var(--app-ink); font:inherit; }
.platform-account main { width:min(480px,calc(100% - 24px)); margin:28px auto; }
.platform-account .account-card { padding:var(--app-space-6); border:1px solid var(--app-line); border-radius:var(--app-radius-panel); background:#fff; }
.platform-account .muted { color:var(--app-muted); }

/* Read-only table columns become labeled cards; dense business lists keep their own layout. */
.app-column-table { width:100%; border-collapse:collapse; font-size:12px; }
.app-column-table :is(th,td) { padding:12px 14px; border-bottom:1px solid var(--app-line); text-align:left; vertical-align:middle; overflow-wrap:anywhere; }
.app-column-table th { background:var(--app-subtle); color:var(--app-ink); font-weight:600; white-space:nowrap; }
.app-column-table tr:last-child td { border-bottom:0; }
.app-column-table tbody tr:hover { background:var(--app-hover); }
.app-column-table button { padding:0; border:0; background:transparent; color:var(--app-green); font:inherit; white-space:nowrap; }
.registration-card .app-status,.invitation-table .app-status { font-size:12px; }
.app-status[data-app-status="neutral"] { color:var(--app-muted); }
@media(max-width:800px) {
  .app-security-form input { font-size:16px; }
  .platform-account .account-card { padding:var(--app-space-4); }
  .app-column-table[data-app-list-mode="cards"],.app-column-table[data-app-list-mode="cards"] tbody { display:block; }
  .app-column-table[data-app-list-mode="cards"] thead { display:none; }
  .app-column-table[data-app-list-mode="cards"] tr { display:block; padding:12px 14px; border-bottom:1px solid var(--app-line); }
  .app-column-table[data-app-list-mode="cards"] tr:last-child { border-bottom:0; }
  .app-column-table[data-app-list-mode="cards"] td { display:grid; grid-template-columns:84px minmax(0,1fr); gap:10px; padding:5px 0; border:0; font-size:13px; }
  .app-column-table[data-app-list-mode="cards"] td::before { content:attr(data-label); color:var(--app-muted); }
  .app-column-table[data-app-list-mode="cards"] td>* { justify-self:start; }
  .app-column-table[data-app-list-mode="cards"] [data-app-empty-row] td { display:block; text-align:center; }
  .app-column-table[data-app-list-mode="cards"] [data-app-empty-row] td::before { display:none; }
}

/* Text-only link feedback works inside both plain and boxed actions. */
a.app-text-link{text-decoration:none!important;background-image:none!important;transition:color var(--app-motion-duration,180ms) ease}
.app-text-link-label{position:relative;display:inline-block;flex:0 0 auto;width:max-content;margin:0;padding:0;max-width:100%;text-decoration:none}
.app-text-link-label::after{content:"";position:absolute;right:0;bottom:-3px;left:0;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform var(--app-motion-duration,180ms) ease;pointer-events:none}
a.app-text-link:is(:hover,:focus-visible) .app-text-link-label::after{transform:scaleX(1)}
@media(prefers-reduced-motion:reduce){a.app-text-link,.app-text-link-label::after{transition:none}}

/* Only the text label paints the link line; boxed hit areas stay fixed. */
html:root :is(#cards,#asinDetailModal,body) a.app-text-link:is(:hover,:focus-visible){text-decoration:none!important;background-image:none!important}
html:root :is(#cards,#asinDetailModal,body) a.app-text-link .app-text-link-label{text-decoration:none!important;background-image:none!important}

html:root body a.app-text-link:is(.button-secondary,.secondary,.nav-cta,.text-link):hover{box-shadow:none!important;transform:none!important}

html:root body a.app-text-link:active{opacity:1}
html:root body a.app-text-link:active .app-text-link-label{opacity:.72}

html:root body a.app-text-link:is(.button-secondary,.secondary,.nav-cta){background-color:#fff!important}
html:root body .hero-interface a.app-text-link.button-secondary{background-color:transparent!important}

/* One copy result layer, above native dialogs; auto-hidden after 3s. */
html:root body .app-copy-notice{position:fixed;inset:50% auto auto 50%;transform:translate(-50%,-50%);margin:0;width:max-content;max-width:calc(100vw - 32px);box-sizing:border-box;z-index:20000;border:0;background:rgba(0,0,0,.7);color:#fff;box-shadow:0 8px 28px #0002;padding:10px 16px;border-radius:6px}

html:root body .app-copy-notice[data-app-notice=error]{max-height:calc(100dvh - 32px);overflow:auto;overflow-wrap:anywhere}

html:root body .app-copy-notice.app-contact-copy-notice{background:rgba(0,0,0,.7);color:#fff;border:0;box-shadow:0 8px 28px #0002;padding:10px 16px;border-radius:6px}

/* A single neutral rule colour for tables and their responsive list equivalents.
   Only recolour existing lines: retain widths, hidden edges and semantic rails. */
:root{--app-table-line:#d3dfd8}
@layer app-table-borders{
 html body :is(table,thead,tbody,tfoot,tr,th,td,
  .table-wrap,.table-scroll,.listing-view,.listing-head,.owner-panel,
  .owner-mobile-card,.owner-mobile-grid,.owner-mobile-grid>div,
  .listing-mobile-facts,.listing-mobile-facts>div,
  .app-list,.app-list-row,.member,.login-log,.login-log-head,.login-log-row,.ip-table-head,.ip-row,
  .customer-card,.customer-card-head,.customer-facts,.customer-card-store-action,
  .usage-row,.usage-row-facts,.provider-card,.provider-usage-card,
  .store-dialog-list,.store-missing-list,.store-missing-item,
  .compare-table,.cmp-table,.cmp-row,.cmp-header-row,.patrol-history-entry,
  .perf-compare,.perf-compare-title,.perf-compare-grid,.perf-matrix-head,.perf-matrix-corner,.perf-matrix-label,.perf-matrix-value,
  .guidance-compare-head,.guidance-compare-row,.bullet-comparison,.bullet-compare-head,.bullet-pair){border-color:var(--app-table-line)!important}
 html body .cmp-row:not(.changed)>:is(.cmp-old,.cmp-new){border-color:var(--app-table-line)!important}
}

/* Login checks expire; unresolved patrol failures stay fixed until publication. */
.data-health-toast[hidden]{display:none!important}
.data-health-toast [hidden]{display:none!important}
.data-health-toast[data-patrol-failure=true]{left:auto;top:auto;right:16px;bottom:20px;transform:none;width:360px;max-width:calc(100vw - 24px);background:rgba(0,0,0,.7);border-radius:8px;text-align:left;padding:14px;line-height:1.65}
.data-health-toast [data-run-controls]{display:flex;align-items:center;gap:12px;margin-top:8px;flex-wrap:wrap}
.data-health-toast [data-run-repair]{position:static;width:auto;height:auto;min-height:36px;padding:6px 12px;border:1px solid #ffffff80;border-radius:5px;background:#ffffff14;color:#fff;font-size:10px;cursor:pointer}
.data-health-toast [data-run-repair]:disabled{opacity:.6;cursor:default}
.data-health-toast[data-patrol-failure=true] [data-run-solution]{margin-top:8px}.data-health-toast[data-patrol-failure=true] [data-run-published]{margin-top:8px;color:#d3d8d5}
.data-health-toast{--app-link-ink:#fff;--app-link-hover:#fff;position:fixed;z-index:1600;left:50%;top:45%;transform:translate(-50%,-50%);width:max-content;max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px);overflow:auto;padding:8px 30px 8px 12px;border:1px solid rgba(255,255,255,.14);border-radius:12px;background:rgba(0,0,0,.78);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 14px 48px #0003;color:#fff;text-align:center;font-size:10px;line-height:1.5;overflow-wrap:anywhere}
.data-health-toast strong{font-size:10px;font-weight:600}.data-health-toast p{margin:4px 0 0;color:#eee;font-size:10px}.data-health-toast a{display:inline-flex;align-items:center;min-height:32px;color:#fff;text-decoration:underline;text-underline-offset:3px}.data-health-toast button{position:absolute;right:2px;top:2px;width:24px;height:24px;padding:0;border:0;border-radius:6px;background:transparent;color:#fff;font-size:16px;cursor:pointer}.data-health-toast button:hover{background:#ffffff1f}.data-health-toast[data-status=warning] strong{color:#ffe0a3}.data-health-toast[data-status=error] strong{color:#ffc4be}.data-health-toast :is(a,button):focus-visible{outline:2px solid #fff;outline-offset:2px}
.quality-checks{padding:22px 0;border-bottom:1px solid #d3dfd8}.quality-checks>p{margin:8px 0;color:#68776d}.quality-check-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:16px}.quality-check-item{padding:12px 14px;border:1px solid #d3dfd8;border-radius:6px;min-width:0;overflow-wrap:anywhere}.quality-check-item strong{display:block;margin-bottom:4px}.quality-check-item[data-status=error] strong{color:#a23e35}.quality-check-item[data-status=warning] strong{color:#865e21}.quality-check-item p{font-size:13px;color:#627267}.quality-check-item small{display:block;margin-top:4px;color:#68776d}
@media(max-width:600px){.quality-check-list{grid-template-columns:1fr}.data-health-toast [data-health-close]{width:28px;height:28px;right:0;top:0}.data-health-toast[data-patrol-failure=true]{right:12px;bottom:calc(82px + env(safe-area-inset-bottom));max-height:calc(100dvh - 110px)}}

/* Content waits in place, matching the current Torpedo skeleton design (2026-10-27). */
body .app-content-loading{position:relative;box-sizing:border-box;display:flex;flex-direction:column;align-items:stretch;gap:12px;grid-column:1/-1;width:100%;min-width:0;padding:18px 16px;border:1px solid #e8ecea;border-radius:12px;background:#fff;box-shadow:none;text-align:left}
body .app-content-loading :is(.app-skeleton-title,.app-skeleton-row){display:block;flex:none;border-radius:6px;background:linear-gradient(90deg,#eef2f0 25%,#f7f9f8 37%,#eef2f0 63%);background-size:400% 100%;animation:goasin-skeleton-shimmer 1.4s ease infinite}
body .app-content-loading .app-skeleton-title{width:28%;height:14px;margin-bottom:4px}
body .app-content-loading .app-skeleton-row{height:22px}
body .app-content-loading-compact{gap:8px;padding:12px}
body .app-content-loading-compact .app-skeleton-title{display:none}
body .app-content-loading-compact .app-skeleton-row{height:12px}
html body .app-content-loading .app-loading-sr{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important}
body [data-app-view-state="loading"]{min-width:0;width:100%;box-sizing:border-box}
html:root body #loadState[data-app-view-state="loading"]{padding:0!important;border:0;border-radius:0;background:transparent}
/* Overview already has an in-place table placeholder; do not add a second loading box below it. */
html:root body.dashboard-home #loadState[data-app-view-state="loading"]{display:none!important}
body .wb-candidate-table:has(#wbCandidateList[data-app-view-state="loading"]) .wb-table-head{display:none}
body .wb-candidate-table:has(#wbCandidateList[data-app-view-state="loading"]){min-width:0}
body .wb-pending-section:has(#wbCandidateList[data-app-view-state="loading"]) :is(.wb-mobile-sort,.wb-candidate-paging){display:none}
body #wbIssues[data-app-view-state="loading"] + .wb-row{display:none}
html body.dashboard-home:has(#loadState[data-app-view-state="loading"]:not([hidden])) .stat-grid .stat-card> :is(span,b),
html body.dashboard-home:has(#loadState[data-app-view-state="loading"]:not([hidden])) .overview-stat-delta,
html body.dashboard-patrol:has(#loadState[data-app-view-state="loading"]:not([hidden])) .patrol-metric strong{color:transparent!important;border-radius:6px;background:linear-gradient(90deg,#eef2f0 25%,#f7f9f8 37%,#eef2f0 63%);background-size:400% 100%;animation:goasin-skeleton-shimmer 1.4s ease infinite}
html body.dashboard-home:has(#loadState[data-app-view-state="loading"]:not([hidden])) .stat-card>b{width:70%;max-width:140px;height:22px;margin-top:10px}
html body.dashboard-home:has(#loadState[data-app-view-state="loading"]:not([hidden])) .stat-card>span{width:46%;height:12px}
html body.dashboard-home:has(#loadState[data-app-view-state="loading"]:not([hidden])) .overview-stat-delta{width:36%;height:10px}
html body.dashboard-patrol:has(#loadState[data-app-view-state="loading"]:not([hidden])) .patrol-metric strong{display:block;min-width:36px;width:55%;height:20px;margin-top:6px}
html body .owner-table td.overview-skeleton-cell{padding:0!important}
body .owner-panel .app-content-loading{border:0;border-radius:0;box-shadow:none}
@keyframes goasin-skeleton-shimmer{0%{background-position:100% 50%}100%{background-position:0 50%}}
/* Startup retains the site's own logo; no page-data request uses this variant. */
body .app-brand-loading{box-sizing:border-box;display:grid;align-content:center;justify-items:center;gap:9px;width:100%;min-height:128px;padding:18px 16px;text-align:center}
body .app-brand-loading img{width:112px;height:48px;object-fit:contain;animation:goasin-loading-breathe 1.8s ease-in-out infinite}
body .app-brand-loading-text{color:#0b2856;font-size:16px;line-height:1.4}
@keyframes goasin-loading-breathe{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-3px) scale(1.06)}}
@media(prefers-reduced-motion:reduce){html body .app-content-loading :is(.app-skeleton-title,.app-skeleton-row),html body.dashboard-home:has(#loadState[data-app-view-state="loading"]) .stat-grid .stat-card> :is(span,b),html body.dashboard-home:has(#loadState[data-app-view-state="loading"]) .overview-stat-delta,html body.dashboard-patrol:has(#loadState[data-app-view-state="loading"]) .patrol-metric strong,body .app-brand-loading img{animation:none!important}}

/* white-background.css */
/* Shared canvas and content surfaces. Header artwork, banners, text and state colours remain in their owning components. */
html:root,
html:root body,
html:root body:is(.dashboard-home,.dashboard-patrol,.admin-colorful,.platform-workspace),
html:root body:has(> .site-nav-shell),
html:root body:has(> .site-header) { background:#fff!important; }
html:root body :is(.aw-site-footer,.login-panel,.product-section,.proof-section,.boundaries-section,.start-section,.owner-panel,.owner-mobile-card,.owner-mobile-finance,.owner-learning,.owner-grid,.wb-card) { background-color:#fff!important; }
html:root body .site-ai-dialog#siteAiDialog :is(.site-ai-messages,.site-ai-history-view) { background:#fff!important; }

/* Keep native browser autofill enabled without its blue/yellow field paint.
   An inset surface covers the UA autofill background; focus borders stay local. */
html:root body.login-page { --app-autofill-surface:#fbfdfb; }
@layer app-autofill-surface {
 html:root body :is(input,textarea,select):is(:autofill,:-webkit-autofill) {
  background-color:var(--app-autofill-surface,#fff)!important;
  background-image:none!important;
  -webkit-box-shadow:0 0 0 1000px var(--app-autofill-surface,#fff) inset!important;
  box-shadow:0 0 0 1000px var(--app-autofill-surface,#fff) inset!important;
  -webkit-text-fill-color:currentColor!important;
 }
 html:root body :is(input,textarea,select):is(:autofill,:-webkit-autofill):focus-visible {
  outline:2px solid var(--app-green,#168250)!important;outline-offset:2px!important;
 }
 @media(forced-colors:active) {
  html:root body :is(input,textarea,select):is(:autofill,:-webkit-autofill) {
   -webkit-box-shadow:none!important;box-shadow:none!important;
   background-color:Field!important;-webkit-text-fill-color:FieldText!important;
  }
  html:root body :is(input,textarea,select):is(:autofill,:-webkit-autofill):focus-visible { outline-color:Highlight!important; }
 }
}

/* brand.css */
/* Display Penn's original wordmark through its SVG viewport. */
html:root body :is(.site-nav-brand,.brand,.visual-brand,.site-mobile-drawer-brand,.aw-site-footer__brand) > img[src^="/marketing/assets/logo-goasin-"] {
  display:block !important; flex:none !important; width:136px !important; height:auto !important;
  aspect-ratio:1145/280; padding:0 !important; margin:0 !important; border:0 !important;
  border-radius:0 !important; background:transparent !important; object-fit:contain !important;
}
html:root body :is(.site-nav-brand,.brand,.visual-brand,.site-mobile-drawer-brand,.aw-site-footer__brand) > img[src^="/marketing/assets/logo-goasin-"] + span {
  position:absolute !important; width:1px !important; height:1px !important; padding:0 !important;
  overflow:hidden !important; clip-path:inset(50%) !important; white-space:nowrap !important;
}
html:root body .aw-site-footer__brand > img[src^="/marketing/assets/logo-goasin-"] { width:148px !important; }
html:root body :is(#siteMobileDrawer,#marketingMobileNav) .site-mobile-drawer-brand > img[src^="/marketing/assets/logo-goasin-"] {
  width:116px !important; height:auto !important; padding:0 !important; border:0 !important; border-radius:0 !important;
}
@media(max-width:800px) {
  html:root body :is(.site-nav-brand,.brand,.visual-brand) > img[src^="/marketing/assets/logo-goasin-"] { width:122px !important; }
}

/* app-controls.css */
/* Shared single-line field dimensions. Width follows the page's layout; textareas
   retain their content height. Compact menus, checkboxes and icon buttons keep
   their own geometry. Mobile editable text stays large enough for iOS focus. */
:root{--app-field-height:var(--app-control-height,36px);--app-field-radius:5px;--app-field-font:11px;--app-field-padding:8px}
html:root body :is(input:not([type=hidden]):not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=button]):not([type=submit]):not([type=image]),select){box-sizing:border-box!important;height:var(--app-field-height)!important;min-height:var(--app-field-height)!important;border-radius:var(--app-field-radius)!important;font-size:var(--app-field-font)!important;font-weight:400!important;line-height:1.4!important;padding-top:0!important;padding-bottom:0!important;padding-inline:var(--app-field-padding)!important}
html:root body .app-dd{height:var(--app-field-height)!important}
html:root body :is(.app-dd-trigger,.app-time-trigger,.tag-menu>summary){box-sizing:border-box!important;height:var(--app-field-height)!important;min-height:var(--app-field-height)!important;border-radius:var(--app-field-radius)!important;font-size:11px!important;font-weight:400!important;padding-block:0!important;padding-inline:var(--app-field-padding)!important}
html:root body textarea{box-sizing:border-box!important;border-radius:var(--app-field-radius)!important;font-size:var(--app-field-font)!important;font-weight:400!important;line-height:1.5!important;padding:var(--app-field-padding)!important}
/* Existing ID-scoped controls use the same dimensions as the shared fields. */
html:root body :is(#wbSearch,#dailyDate,#periodStart,#periodEnd,#dailyDateTrigger){height:var(--app-field-height)!important;min-height:var(--app-field-height)!important}
html:root body #siteAiDialog .site-ai-form textarea{font-size:var(--app-field-font)!important}
@media(max-width:1024px),(pointer:coarse){
 :root{--app-field-font:16px}
 html:root body :is(.wb-form,.learning-form,.site-ai-form) :is(input,textarea){font-size:16px!important}
 html:root body #wbSearch,html:root body #siteAiDialog .site-ai-form textarea{font-size:16px!important}
}
/* Keep the workbench filter row typographically consistent in narrow desktop
   panels too. Touch devices retain 16px editable text to avoid iOS zoom. */
html:root body #shieldWorkTools #wbSearch::placeholder{font:inherit!important;font-size:inherit!important}
@media(pointer:fine){html:root body #shieldWorkTools #wbSearch{font-size:11px!important}}
@media(pointer:coarse){html:root body #shieldWorkTools .wb-filters :is(.app-dd-trigger,.app-time-trigger){font-size:16px!important}}
html:root body #shieldWorkTools .app-dd-native{width:100%!important;min-width:0!important}
/* The desktop date panel uses the same 11px text as its calendar and actions,
   even when the page itself is displayed in a narrow desktop panel. */
html:root body .app-time-picker{--app-field-font:11px}
html:root body .app-time-picker .app-time-input::placeholder{font:inherit!important;font-size:inherit!important}
@media(pointer:coarse){html:root body .app-time-picker{--app-field-font:16px}}

/* Layered important declarations override legacy page-specific field fonts.
   Native mobile fields receive the 16px / .75 treatment from app-controls.js. */
@layer app-input-typography {
 html body :is(input:not([type=hidden]):not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=file]):not([type=button]):not([type=submit]):not([type=reset]):not([type=image]),textarea,select,[contenteditable=true]) { font-size:12px!important; }
 html body :is(input,textarea)::placeholder { font-size:inherit!important; }
 html body :is(.app-dd-trigger,.app-dd-trigger>span,.app-dd-option,.app-dd-group,.app-time-trigger,.app-time-input,.tag-menu>summary) { font-size:12px!important; }
 html body .app-input-slot { padding:0!important; border:0!important; background:transparent!important; }
 html body .app-native-compact { font-size:16px!important; }
}

@layer app-input-typography {
 @media(max-width:1024px),(pointer:coarse) {
  html body :is(input:not([type=hidden]):not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=file]):not([type=button]):not([type=submit]):not([type=reset]):not([type=image]),textarea,[contenteditable=true]):not(.app-compact-field) { font-size:16px!important; }
 }
 html body .app-input-slot[hidden] { display:none!important; }
}

/* Shared spacing for independent controls. Keep connected widgets (password
   toggles, language segments and title hints) within their existing frame. */
:root{--app-space-label:6px;--app-space-action:8px;--app-space-field:12px;--app-space-section:16px}
html:root body .patrol-schedule-form{column-gap:var(--app-space-section)!important;row-gap:var(--app-space-field)!important}
html:root body .patrol-schedule-form>.field{display:grid;gap:var(--app-space-label);min-width:0;align-content:start}
html:root body .patrol-schedule-form>.field>label{margin:0}
html:root body .patrol-schedule-form>.field>:is(input,.app-input-slot,.app-dd){min-width:0;max-width:100%;width:100%}
html:root body.admin-colorful .admin-tabs{gap:var(--app-space-action)}
html:root body.dashboard-home #overviewPeriodToolbar :is(.period-presets,.period-custom){gap:var(--app-space-action)!important}
html:root body.dashboard-home #overviewPeriodToolbar{gap:var(--app-space-field)!important}
html:root body main.shield-shell :is(#shieldWorkTools .wb-filters,.shield-review-toolbar){gap:var(--app-space-action) var(--app-space-field)}
html:root body.platform-workspace .platform-control-row .platform-control-field,
html:root body.platform-workspace .plan-form .field{gap:var(--app-space-label)}
html:root body.platform-workspace .plan-form :is(.offer-fields,.plan-fields.platform-control-row){row-gap:var(--app-space-field)!important}
html:root body.admin-colorful .api-form-actions{gap:var(--app-space-action)}
html:root body.platform-workspace .platform-control-row:not(.plan-fields){gap:var(--app-space-field)!important}
html:root body .auth-entry-body .field{gap:var(--app-space-label)}

/* iOS native time controls can paint beyond their CSS width. A permanent,
   bounded frame contains that native rendering before and after input scaling. */
html:root body .patrol-time-control{--app-field-height:34px;display:block;position:relative;box-sizing:border-box;width:100%;min-width:0;max-width:100%;height:36px;overflow:hidden;contain:paint;border:1px solid var(--app-line,#dce7df);border-radius:var(--app-field-radius,5px);background:#fff}
html:root body .patrol-time-control:focus-within{border-color:var(--app-green,#008568);outline:2px solid #00856826;outline-offset:1px}
html:root body .patrol-time-control #patrolTime{appearance:none;-webkit-appearance:none;min-width:0;border:0!important;border-radius:0!important;box-shadow:none!important;background:transparent;text-align:left}
html:root body .patrol-time-control #patrolTime::-webkit-date-and-time-value{min-width:0;text-align:left}
html:root body .patrol-time-control>.app-input-slot{display:block!important;max-width:100%;overflow:hidden}

/* Filters have their own compact geometry; form fields and paging keep
   their existing dimensions. Important layers replace legacy compact overrides. */
@layer app-filter-layout {
 html body :is(.controls,.wb-filters,.shield-review-toolbar,.filters.platform-control-row,#overviewPeriodToolbar){--app-field-height:36px;--app-field-padding:10px;--app-field-radius:6px;--app-input-visual-font:12px;column-gap:10px!important;row-gap:10px!important}
 html body :is(.controls,.wb-filters,.shield-review-toolbar,.filters.platform-control-row,#overviewPeriodToolbar) :is(.app-dd-trigger,.app-time-trigger,.tag-menu>summary){height:36px!important;min-height:36px!important;padding-inline:10px!important;gap:10px!important;box-shadow:none!important}
 html body :is(.controls,.wb-filters,.shield-review-toolbar,.filters.platform-control-row,#overviewPeriodToolbar) :is(input:not(.app-native-compact):not([type=hidden]):not([type=checkbox]):not([type=radio]),.app-input-slot){height:36px!important;min-height:36px!important}
 html body :is(.controls,.wb-filters,.shield-review-toolbar,.filters.platform-control-row,#overviewPeriodToolbar) .app-dd-trigger{justify-content:space-between!important}
 html body :is(.controls,.wb-filters,.shield-review-toolbar,.filters.platform-control-row,#overviewPeriodToolbar) .app-dd-value{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
 html body :is(.controls,.wb-filters,.shield-review-toolbar,.filters.platform-control-row) :is(.app-dd,.tag-menu,.app-time-trigger){max-width:100%!important}
 html body :is(.controls,.wb-filters,.shield-review-toolbar,.filters.platform-control-row) .app-dd{overflow:hidden!important}
 html body .controls .tag-menu>summary::after{content:''!important;box-sizing:border-box;flex:none;width:7px;height:7px;margin-left:auto!important;margin-right:2px;border-right:1.5px solid #8b9a92;border-bottom:1.5px solid #8b9a92;transform:translateY(-2px) rotate(45deg)}
 html body .controls .tag-menu[open]>summary::after{transform:translateY(2px) rotate(225deg)}
 html body #overviewPeriodToolbar :is(.period-presets,.period-custom){gap:10px!important}
 html body #overviewPeriodToolbar .period-presets button{min-height:36px!important;padding-inline:10px!important}
 html body.platform-console #platformMain :is(.filters,.platform-control-row){gap:10px!important;margin-bottom:18px!important}
 html body .filters.platform-control-row .platform-text-control{height:36px!important;min-height:36px!important}
 html body .filters.platform-control-row input:not(.app-native-compact):not(.app-dd-native):not(.app-time-native):not([type=hidden]){position:static!important;transform:none!important;width:100%!important;max-height:none!important}
 html body.platform-console #platformMain .filters .platform-control-field{gap:8px!important;flex-basis:170px!important}
 html body.platform-console #platformMain .filters .platform-search-field{flex-basis:260px!important}
 html body.platform-console #platformMain .filters .platform-date-field{flex-basis:160px!important}
 html body main.shield-shell :is(#shieldWorkTools .wb-filters,.shield-review-toolbar){padding:8px 0 12px!important;border:0!important;gap:10px!important}
 html body main.shield-shell :is(#shieldWorkTools,.shield-review-toolbar) :is(.shield-owner-filter,.shield-result-filter,.shield-record-filter,.shield-review-owner,.shield-review-mode){flex:0 1 128px!important;width:128px!important;min-width:0!important}
 html body main.shield-shell :is(#shieldWorkTools,.shield-review-toolbar) :is(.app-dd,.app-dd-trigger){width:100%!important;min-width:0!important}
 html body main.shield-shell :is(#shieldWorkTools,.shield-review-toolbar) :is(.shield-review-date,.shield-date){width:176px!important;min-width:0!important;max-width:100%!important;flex:0 1 176px!important}
 html body main.shield-shell .shield-review-date>.app-time-trigger{width:100%!important;min-width:0!important}
 html body main.shield-shell :is(#shieldWorkTools,.shield-review-toolbar) :is(.shield-search,.shield-review-search){position:relative;box-sizing:border-box;width:220px!important;flex:0 1 220px!important;min-width:0!important;height:36px!important;border-radius:var(--app-field-radius)!important;border-color:var(--app-line,#c9ddd1)!important;background:#fff!important}
 html body main.shield-shell :is(.shield-search,.shield-review-search) .shield-search-icon{display:block!important;right:10px!important}
 html body main.shield-shell :is(#shieldWorkTools,.shield-review-toolbar) :is(#wbSearch,#reviewAsinSearch){padding-right:32px!important}
 html body main.shield-shell :is(#shieldWorkTools,.shield-review-toolbar) :is(#wbSearch,#reviewAsinSearch).app-native-compact{padding-right:42.666667px!important}
 html body main.shield-shell :is(#shieldWorkTools,.shield-review-toolbar) :is(#wbSearch,#reviewAsinSearch):not(.app-native-compact){position:static!important;transform:none!important;width:100%!important;min-height:36px!important;height:36px!important;padding-left:10px!important}
 html body main.shield-shell :is(#shieldWorkTools,.shield-review-toolbar) :is(#wbSearch,#reviewAsinSearch).app-native-compact{padding-left:13.333333px!important}
 @media(max-width:800px){
  html body :is(.controls,.wb-filters,.shield-review-toolbar,.filters.platform-control-row,#overviewPeriodToolbar){column-gap:10px!important;row-gap:10px!important}
  html body #overviewPeriodToolbar .period-presets{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;width:100%!important}
  html body #overviewPeriodToolbar .period-presets [data-period="custom"]{grid-column:auto!important}
  html body #overviewPeriodToolbar .period-presets button{width:100%!important;min-width:0!important;padding-inline:10px!important}
  html body.platform-console #platformMain .filters.platform-control-row{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:10px!important}
  html body.platform-console #platformMain #customers .filters.platform-control-row{grid-template-columns:repeat(3,minmax(0,1fr))!important}
  html body.platform-console #platformMain #customers .filters .platform-search-field{grid-column:auto!important}
  html body.platform-console #platformMain #customers .filters .platform-control-field{grid-template-rows:auto 36px!important;gap:8px!important}
  /* Pack controls by their visible content, wrapping only when they no longer fit. */
  html body main.shield-shell :is(#shieldWorkTools .wb-filters,.shield-review-toolbar){display:flex!important;flex-wrap:wrap!important;gap:6px!important}
  html body main.shield-shell :is(#shieldWorkTools,.shield-review-toolbar) :is(.shield-owner-filter,.shield-result-filter,.shield-record-filter,.shield-review-owner,.shield-review-mode,.shield-review-date,.shield-date){width:max-content!important;max-width:100%!important;min-width:0!important;flex:0 1 auto!important}
  html body main.shield-shell :is(#shieldWorkTools,.shield-review-toolbar) :is(.app-dd,.app-dd-trigger){width:max-content!important;max-width:100%!important}
  html body main.shield-shell :is(#shieldWorkTools,.shield-review-toolbar) :is(.shield-search,.shield-review-search){width:88px!important;min-width:88px!important;max-width:100%!important;flex:1 0 88px!important;grid-column:auto!important}
  html body main.shield-shell :is(#shieldWorkTools,.shield-review-toolbar) :is(.app-dd-trigger,.app-time-trigger){padding-inline:6px!important;gap:6px!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
  html body main.shield-shell .shield-review-date>.app-time-trigger{width:auto!important;min-width:0!important}
  html body main.shield-shell .shield-review-toolbar{padding-bottom:4px!important}
  html body main.shield-shell #shield-review #totals{margin-top:8px!important}
  html body main.shield-shell #shield-review #status:is(:empty,[hidden]){display:none!important;min-height:0!important;margin:0!important}
 }
}
@layer app-input-typography {
 html body :is(.controls,.wb-filters,.shield-review-toolbar,.filters.platform-control-row,#overviewPeriodToolbar) :is(input:not(.app-native-compact),select,.app-dd-trigger,.app-dd-trigger>span,.app-time-trigger,.tag-menu>summary){font-size:12px!important}
 html body #overviewPeriodToolbar .period-presets button{font-size:12px!important}
 html body :is(.controls,.wb-filters,.shield-review-toolbar,.filters.platform-control-row,#overviewPeriodToolbar) .app-native-compact{font-size:16px!important}
}
/* Standalone ASIN search fields in scope and data-quality views. */
html:root body :is(.scope-search,.store-missing-search,.missing-search){--app-field-height:36px;--app-input-visual-font:12px;--app-field-padding:10px}
@layer app-input-typography{
 html body :is(.scope-search,.store-missing-search,.missing-search):not(.app-native-compact){font-size:12px!important}
 html body :is(.scope-search,.store-missing-search,.missing-search).app-native-compact{font-size:16px!important}
}

/* A centered vector keeps menu arrows aligned independently of font glyphs. */
html:root body :is(.go-account,.site-nav-group,.aw-nav details,.tag-menu,.account-menu)>summary::after,
html:root body :is(.app-dd-chevron,.account-chevron) {
 content:''!important; display:block; box-sizing:border-box; flex:0 0 var(--menu-arrow-size,12px);
 width:var(--menu-arrow-size,12px); height:var(--menu-arrow-size,12px); margin:0 0 0 2px!important; padding:0; border:0!important;
 background:currentColor; transform:none;
 -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='m3 4.5 3 3 3-3' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/var(--menu-arrow-size,12px) var(--menu-arrow-size,12px) no-repeat;
 mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='m3 4.5 3 3 3-3' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/var(--menu-arrow-size,12px) var(--menu-arrow-size,12px) no-repeat;
}
html:root body :is(.go-account,.site-nav-group,.aw-nav details,.tag-menu,.account-menu)[open]>summary::after,
html:root body .app-dd-trigger[aria-expanded=true] .app-dd-chevron,
html:root body .account-menu[open] .account-chevron { transform:rotate(180deg); }

/* Compact filters keep their existing row widths. */
html:root body .app-dd-chevron,
html:root body .controls .tag-menu>summary::after { --menu-arrow-size:8px; margin:0 2px 0 0!important; }
html:root body .controls .tag-menu>summary::after { margin-left:auto!important; }

/* site-contact.css */
.site-contact-floating{position:fixed;right:max(20px,env(safe-area-inset-right));bottom:calc(20px + env(safe-area-inset-bottom));z-index:70;display:flex}
html:root body .site-contact-fab{position:relative;display:grid;place-items:center;width:50px;height:50px;min-height:50px;padding:0;margin:0;border:1px solid #ffffffb3;border-radius:50%;background:#008568;color:#fff;box-shadow:0 4px 18px #174d3430;cursor:pointer;transition:transform .18s ease,box-shadow .18s ease}
.site-contact-fab svg{display:block;flex:none}
.site-contact-fab-label{position:absolute;right:calc(100% + 10px);top:50%;transform:translateY(-50%);padding:6px 10px;border:1px solid #e1eae5;border-radius:6px;background:#fff;color:#315245;font:400 12px/1.5 -apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif;white-space:nowrap;box-shadow:0 2px 10px #174d3410;opacity:0;visibility:hidden;pointer-events:none}
@media(hover:hover){html:root body .site-contact-fab:hover{transform:translateY(-2px);box-shadow:0 6px 20px #174d343b}.site-contact-fab:hover .site-contact-fab-label{opacity:1;visibility:visible}}
.site-contact-fab:focus-visible{outline:2px solid #008568;outline-offset:3px}.site-contact-fab:focus-visible .site-contact-fab-label{opacity:1;visibility:visible}
@media(max-width:800px){.site-contact-floating{right:calc(14px + env(safe-area-inset-right));bottom:calc(18px + env(safe-area-inset-bottom))}html:root body .site-contact-fab{width:46px;height:46px;min-height:46px}.site-contact-fab svg{width:26px;height:26px}}
@media(prefers-reduced-motion:reduce){html:root body .site-contact-fab{transition:none}}
html:root body .site-contact-open{display:inline-flex;align-items:center;justify-content:center;min-height:34px;margin:0;padding:7px 12px;border:1px solid #008568;border-radius:6px;background:#008568;color:#fff;font:400 12px/1.5 -apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif;white-space:nowrap;cursor:pointer;text-decoration:none}
html:root body .site-contact-open:hover{background:#006c55;color:#fff}
html:root body .site-contact-account{display:inline-block;width:auto;min-height:28px;max-width:100%;margin:0;padding:2px 0;border:0;border-radius:2px;background:none;color:#008568;font:inherit;cursor:pointer;vertical-align:baseline;text-align:left;text-decoration:none;overflow-wrap:anywhere}
.site-contact-account:hover{text-decoration:underline;text-underline-offset:3px}
.site-contact-settings{margin-top:20px;padding:18px;border:1px solid #dce7e0;border-radius:10px;background:#fff;min-width:0}
.site-contact-settings h3{margin:0 0 10px;font-size:14px}.site-contact-settings p{font-size:12px;line-height:1.7}
.site-contact-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.site-contact-fields label{min-width:0;display:grid;gap:6px;font-size:12px}
.site-contact-fields .contact-wide{grid-column:1/-1}
.site-contact-fields :is(input,textarea){box-sizing:border-box;min-width:0;width:100%;padding:8px;border:1px solid #dce7e0;border-radius:6px;font:inherit;line-height:1.5}
.site-contact-fields input{height:36px}.site-contact-fields textarea{min-height:84px;resize:vertical}
.site-contact-form-actions{display:flex;justify-content:flex-start;gap:10px;flex-wrap:wrap;margin-top:12px}
html:root body .site-contact-open:focus-visible,.site-contact-account:focus-visible{outline:2px solid #008568;outline-offset:3px}
@media(max-width:800px){.site-contact-fields{grid-template-columns:minmax(0,1fr)}}

html:root body .site-contact-settings :is(h3,p,label,input,textarea,button){font-weight:400}.site-contact-settings :is(h3,p,label,input,textarea){text-align:left}

html:root body.platform-workspace #siteContactForm textarea{height:84px!important;min-height:84px!important;padding:8px!important}

/* image-preview.css */
.app-image-zoom{cursor:zoom-in}.app-image-zoom:focus-visible{outline:2px solid #008767;outline-offset:3px}
html:root body dialog#appImagePreview{box-sizing:border-box;width:fit-content!important;min-width:min(300px,calc(100vw - 24px))!important;max-width:min(1100px,calc(100vw - 24px))!important;height:fit-content!important;min-height:0!important;max-height:calc(100dvh - 24px)!important;margin:auto!important;padding:0!important;border:1px solid #ffffff35!important;border-radius:9px!important;background:rgba(0,0,0,.7)!important;color:#fff!important;box-shadow:0 18px 60px #0003;overflow:hidden!important;font:12px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC",sans-serif}
html:root body dialog#appImagePreview::backdrop{background:rgba(0,0,0,.2)!important}
html:root body #appImagePreview [hidden]{display:none!important}
html:root body #appImagePreview .app-image-preview-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;border-bottom:1px solid #ffffff30}
html:root body #appImagePreview [data-image-caption]{color:#fff!important;font-size:12px!important;line-height:1.5;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
html:root body #appImagePreview button{display:grid;place-items:center;flex:none;width:36px;height:36px;min-height:36px;margin:0;padding:0;border:1px solid #ffffff50;border-radius:5px;background:rgba(0,0,0,.7)!important;color:#fff!important;font-family:inherit;font-size:22px!important;font-weight:400;line-height:1;cursor:pointer;box-shadow:none}
html:root body #appImagePreview .app-image-preview-body{position:relative;display:flex;justify-content:center;align-items:center;padding:12px;min-height:60px}
html:root body #appImagePreview img{display:block;max-width:100%!important;width:auto!important;height:auto!important;max-height:max(60px,calc(var(--app-dialog-height) - 140px))!important;object-fit:contain;border:0;border-radius:3px;background:#fff;outline:none}
html:root body #appImagePreview :is([data-image-prev],[data-image-next]){position:absolute;top:50%;transform:translateY(-50%);z-index:1;width:36px;height:42px;font-size:28px}
html:root body #appImagePreview [data-image-prev]{left:18px}html:root body #appImagePreview [data-image-next]{right:18px}
html:root body #appImagePreview :is([data-image-status],[data-image-count]){margin:0!important;padding:0 16px 12px!important;color:#fff!important;text-align:center;font-size:12px!important}
html:root body #appImagePreview button:focus-visible{outline:2px solid #91e3c3;outline-offset:2px}

html:root body button.guide-image-open{display:block;width:100%;padding:0;border:0;background:transparent;cursor:zoom-in}html:root body button.listing-thumb-action{margin:0;padding:0;border:0;background:transparent;cursor:zoom-in}

/* Overview screenshots open at a readable detail scale; other viewers keep their size. */
html:root body dialog#appImagePreview.app-image-preview--overview{width:min(1800px,calc(100vw - 24px))!important;max-width:calc(100vw - 24px)!important}
html:root body #appImagePreview.app-image-preview--overview [data-image-caption]{flex:1}
html:root body #appImagePreview.app-image-preview--overview .app-image-preview-body{box-sizing:border-box;display:block;overflow:auto;max-height:max(100px,calc(var(--app-dialog-height) - 110px));overscroll-behavior:contain;touch-action:pan-x pan-y}
html:root body #appImagePreview.app-image-preview--overview img{margin:auto}
html:root body #appImagePreview.app-image-preview--overview.is-image-zoomed img{width:1920px!important;max-width:none!important;max-height:none!important;margin:0;cursor:auto}
html:root body #appImagePreview.app-image-preview--overview .app-image-preview-body:focus-visible{outline:2px solid #91e3c3;outline-offset:-3px}

html:root body #appImagePreview.app-image-preview--overview button{width:44px;height:44px;min-height:44px}

/* popup-theme.css */
/* ERP-style popups: opaque white paper, a neutral dark mask and no blur.
   Layout, native/custom dialog behavior and semantic data colours stay local. */
:root {
  --app-popup-surface:#fff;
  --app-popup-radius:4px;
  --app-popup-shadow:0 12px 40px rgba(0,0,0,.18);
  --app-popup-close-ink:#909399;
  --app-radius-dialog:var(--app-popup-radius);
  --app-popup-ink:var(--app-value-neutral,#263238);
  --app-popup-muted:var(--app-value-unknown,#667681);
  --app-popup-line:#e4e7ed;
  --app-dialog-backdrop:rgba(0,0,0,.5);
}
/* Important rules share a layer so legacy ID-scoped popup skins and the
   platform console cannot reintroduce translucency or large rounded corners. */
@layer app-popup-theme {
/* Separate the fixed frame from scrollable content. Sticky footers inside a
   scrolling dialog can sit over text; only the body of a split frame scrolls. */
html:root body dialog:modal:has(>.dialog-head):has(>.dialog-body,>form>.dialog-body) {
  display:flex!important;flex-direction:column!important;overflow:hidden!important;
}
html:root body dialog:modal:has(>.dialog-head):has(>.dialog-body,>form>.dialog-body)>form {
  display:flex!important;flex-direction:column!important;flex:1 1 auto;min-height:0;overflow:hidden!important;
}
html:root body dialog:modal:has(>.dialog-head):has(>.dialog-body,>form>.dialog-body) .dialog-body {
  flex:1 1 auto;min-height:0;max-height:none!important;overflow-y:auto!important;overflow-x:hidden;overscroll-behavior:contain;
}
html:root body dialog:modal :is(.dialog-head,.dialog-foot) {
  position:relative!important;top:auto!important;bottom:auto!important;flex:none;
}
html:root body dialog:modal .dialog-head>h2 { min-width:0;overflow-wrap:anywhere; }
/* Native dialogs, floating feedback and custom content windows share one surface. */
html:root body :is(dialog,.app-notice,.data-health-toast,.app-dd-panel,.app-time-picker,.aw-ai-notice__panel,
  .tag-menu-items,.period-picker,
  .site-ai-dialog,.asin-detail-modal-panel,.summary-asin-panel,.admin-modal-box,.cosmo-proof-panel,.image-modal-panel,
  #appImagePreview,#gettingStartedDialog,#wbDialog,#siteAiDialog):not(.site-mobile-drawer):not(.marketing-mobile-nav) {
  background:var(--app-popup-surface)!important;
  color:var(--app-popup-ink)!important;
  border-color:var(--app-popup-line)!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
}
html:root body :is(dialog,.app-time-picker,#appImagePreview,#gettingStartedDialog):not(.site-mobile-drawer):not(.marketing-mobile-nav)::backdrop {
  background:var(--app-dialog-backdrop)!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
}
html:root body :is(.asin-detail-modal,.summary-asin-dialog,.image-modal,div.admin-modal,#cosmoEvidenceModal) {
  background:var(--app-dialog-backdrop)!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
}
/* Header, body and footer sections stay on the same opaque white paper. */
html:root body :is(dialog,.site-ai-dialog,.asin-detail-modal-panel,.summary-asin-panel,.admin-modal-box,
  #appImagePreview,#gettingStartedDialog,#wbDialog,#siteAiDialog):not(.site-mobile-drawer):not(.marketing-mobile-nav) :is(
  .dialog-head,.dialog-body,.dialog-foot,.modal-body,.modal-title-row,.modal-actions,
  .asin-detail-modal-head,.asin-detail-modal-body,.summary-asin-head,
  .getting-started-head,.getting-started-body,.getting-started-foot,.app-image-preview-head,
  .wb-dialog-foot,.site-ai-messages,.site-ai-history-view) {
  background:var(--app-popup-surface)!important;
}
html:root body .app-time-picker :is(.app-time-presets,.app-time-footer) { background:transparent!important; }
html:root body .period-picker .period-picker-presets { background:transparent!important; }

/* The former dark popups use the site's existing neutral and semantic text colours. */
html:root body #appImagePreview :is([data-image-caption],[data-image-status],[data-image-count],button),
html:root body #gettingStartedDialog :is(.guide-close,.guide-copy h3,.guide-copy p,.guide-buttons button),
html:root body #cosmoEvidenceModal :is(.cosmo-proof-title,.cosmo-proof-quote,.cosmo-proof-close),
html:root body :is(.image-modal-close,.image-modal-nav,.image-modal-count,.video-player-close) {
  color:var(--app-popup-ink)!important;
}
html:root body :is(#appImagePreview button,.image-modal-close,.image-modal-nav,.video-player-close) {
  background:var(--app-popup-surface)!important;
  border-color:var(--app-popup-line)!important;
}
html:root body #gettingStartedDialog :is(.getting-started-head,.getting-started-foot,.guide-close,.guide-buttons button,.guide-tabs button) {
  border-color:var(--app-popup-line)!important;
}
html:root body #gettingStartedDialog :is(.guide-tabs button,figcaption,.getting-started-foot>p) { color:var(--app-popup-muted)!important; }
html:root body #gettingStartedDialog .guide-tabs button[aria-selected=true] {
  color:var(--app-green)!important;border-color:var(--app-green)!important;background:var(--app-hover)!important;
}
html:root body #gettingStartedDialog :is(.guide-action,.guide-action span) { color:var(--app-green)!important; }
html:root body #gettingStartedDialog :is(.guide-primary,.guide-primary span) { color:#fff!important; }
html:root body #gettingStartedDialog .guide-feedback { color:var(--app-value-bad,#c62828)!important; }
html:root body #appImagePreview .app-image-preview-head { border-color:var(--app-popup-line)!important; }
html:root body #appImagePreview button:focus-visible { outline-color:var(--app-green)!important; }

/* Post-login checks use a light status card without a dismiss control. */
html:root body .data-health-toast {
  --app-popup-surface:#fff;--app-popup-ink:#233e33;--app-popup-muted:#62736b;
  --app-popup-line:#dce7e1;--app-popup-radius:16px;--app-popup-shadow:0 8px 32px #163d2926;
  --app-link-ink:#166b56;--app-link-hover:#10533f;
  box-sizing:border-box;font-size:13px!important;line-height:1.6!important;padding:16px 20px!important;
  max-width:min(560px,calc(100vw - 24px))!important;text-align:left;text-shadow:none;
  backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
}
html:root body .data-health-toast:not([data-patrol-failure=true]) { width:320px;pointer-events:none; }
html:root body .data-health-toast:not([data-patrol-failure=true]) [data-run-controls] { display:none; }
html:root body .data-health-toast strong { display:block;color:#236b51!important;font-size:14px!important;font-weight:600; }
html:root body .data-health-toast :is(p,[data-run-published]) { color:#62736b!important;font-size:13px!important; }
html:root body .data-health-toast a { color:#166b56!important; }
html:root body .data-health-toast [data-run-repair] { color:#166b56!important;border-color:#b9d8c9!important;background:#edf6f0!important;font-size:13px!important; }
html:root body .data-health-toast[data-status=warning] strong { color:#94651c!important; }
html:root body .data-health-toast[data-status=error] strong { color:#ae443e!important; }
html:root body .data-health-toast :is(a,button):focus-visible { outline-color:#166b56!important; }

/* A small close glyph keeps its touch target without a visible button frame. */
html:root body :is(dialog:modal,.app-notice,.data-health-toast,.aw-ai-notice__panel,.app-time-picker,.site-ai-dialog,
  .asin-detail-modal,.summary-asin-dialog,.image-modal,div.admin-modal,#cosmoEvidenceModal) :is(
  .guide-close,.modal-icon-close,.admin-modal-close,.asin-detail-modal-close,.summary-asin-close,
  .image-modal-close,.video-player-close,.site-ai-close,.aw-ai-notice__close,.patrol-export-close,.cosmo-proof-close,.evidence-close,.evidence-dialog-head>button,.app-time-close,.app-notice>button,
  .icon-button[data-close],[data-image-close],[data-health-close],[data-account-close][aria-label],
  [data-confirm-cancel][aria-label],#wbClose):not([hidden]) {
  display:grid!important;place-items:center;flex:0 0 36px;
  width:var(--app-popup-close-width,36px)!important;min-width:var(--app-popup-close-width,36px)!important;height:36px!important;min-height:36px!important;
  margin:0;padding:0!important;border:0!important;border-radius:4px;
  background:transparent!important;box-shadow:none!important;
  color:var(--app-popup-close-ink)!important;font-size:16px!important;line-height:1!important;
  cursor:pointer;
}
html:root body :is(dialog:modal,.app-notice,.data-health-toast,.aw-ai-notice__panel,.app-time-picker,.site-ai-dialog,
  .asin-detail-modal,.summary-asin-dialog,.image-modal,div.admin-modal,#cosmoEvidenceModal) :is(
  .guide-close,.modal-icon-close,.admin-modal-close,.asin-detail-modal-close,.summary-asin-close,
  .image-modal-close,.video-player-close,.site-ai-close,.aw-ai-notice__close,.patrol-export-close,.cosmo-proof-close,.evidence-close,.evidence-dialog-head>button,.app-time-close,.app-notice>button,
  .icon-button[data-close],[data-image-close],[data-health-close],[data-account-close][aria-label],
  [data-confirm-cancel][aria-label],#wbClose):not([hidden]) svg { width:16px!important;height:16px!important; }

/* Modal panels and lightweight popovers use the same paper treatment. Inline
   customer details and mobile navigation keep their existing page geometry. */
html:root body :is(dialog:modal,.asin-detail-modal-panel,.summary-asin-panel,.admin-modal-box,.cosmo-proof-panel,.image-modal-panel,
  .site-ai-dialog,.app-notice,.data-health-toast,.app-dd-panel,.app-time-picker,.aw-ai-notice__panel,.tag-menu-items,.period-picker):not(.site-mobile-drawer):not(.marketing-mobile-nav) {
  border-radius:var(--app-popup-radius)!important;
  box-shadow:var(--app-popup-shadow)!important;
  border-color:var(--app-popup-line)!important;
}
html:root body dialog::backdrop {
  background:var(--app-dialog-backdrop)!important;
  backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
}
html:root body :is(dialog:modal,.site-ai-dialog,.asin-detail-modal-panel,.summary-asin-panel,.admin-modal-box,.cosmo-proof-panel) :is(
  .dialog-head,.modal-title-row,.asin-detail-modal-head,.summary-asin-head,.getting-started-head,.app-image-preview-head,
  .wb-dialog-head,.site-ai-head,.asin-video-dialog-head,.cosmo-proof-head,.evidence-dialog-head) {
  background:var(--app-popup-surface)!important;
  border-bottom:1px solid var(--app-popup-line)!important;
}
html:root body :is(dialog:modal,.site-ai-dialog,.admin-modal-box) :is(.dialog-foot,.modal-actions,.getting-started-foot,.wb-dialog-foot) {
  border-top:1px solid var(--app-popup-line)!important;
}
html:root body .app-time-picker .app-time-head { background:var(--app-popup-surface)!important;border-bottom:1px solid var(--app-popup-line)!important; }
html:root body .app-time-picker .app-time-footer { border-top:1px solid var(--app-popup-line)!important; }
html:root body .aw-ai-notice__panel>h2 { padding-bottom:12px;border-bottom:1px solid var(--app-popup-line); }

/* Older saved results use the original image panel. Keep its close row and
   counter inside the white window rather than floating on the dark mask. */
html:root body .image-modal-panel { padding:44px 16px 32px!important; }
html:root body .image-modal-panel:before { content:'';position:absolute;inset:43px 0 auto;border-bottom:1px solid var(--app-popup-line); }
html:root body .image-modal-panel img { max-height:max(60px,calc(100dvh - 160px))!important;border-radius:0!important;box-shadow:none!important; }
html:root body .image-modal-panel .image-modal-close { top:4px!important;right:6px!important; }
html:root body .image-modal-panel .image-modal-count { bottom:10px!important; }

/* The chat window already behaves modally (focus and inert siblings). Its mask
   is visual only, so existing outside-click and close behavior stays intact. */
html:root body #siteAiDialog:not([hidden]) { z-index:12000!important; }
html:root body:has(#siteAiDialog:not([hidden])):before {
  content:''!important;display:block!important;position:fixed!important;inset:0!important;
  width:auto!important;height:auto!important;margin:0!important;opacity:1!important;
  background:var(--app-dialog-backdrop)!important;z-index:11999!important;pointer-events:none!important;
  filter:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
}
html:root body :is(dialog:modal,.site-ai-dialog,.asin-detail-modal-panel,.summary-asin-panel,.admin-modal-box,.cosmo-proof-panel) :is(
  .dialog-head,.modal-title-row,.asin-detail-modal-head,.summary-asin-head,.getting-started-head,.app-image-preview-head,
  .wb-dialog-head,.site-ai-head,.asin-video-dialog-head,.cosmo-proof-head,.evidence-dialog-head) :is(h2,h3,b) { color:var(--app-popup-ink)!important; }
}
