/* 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:#b4232e; --app-status-success:#078966;
  --app-status-warning:#a3640c; --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) {
    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,
  .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] *,:has(img))) {
  text-decoration:none!important;
  background-image:linear-gradient(var(--app-link-hover),var(--app-link-hover)),linear-gradient(var(--app-link-line),var(--app-link-line))!important;
  background-origin:content-box!important;
  background-position:left bottom!important; background-repeat:no-repeat!important;
  background-size:0% 1px,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] *,:has(img))):focus-visible {
  color:var(--app-link-hover)!important;
  background-size:100% 1px,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] *,:has(img))):hover {
  color:var(--app-link-hover)!important;
  background-size:100% 1px,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:#946000;--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"],.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"],.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) [data-app-value-tone="attention"]{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}
/* 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}
