/* =====================================================================
   STEADY STRATEGY UI KIT — v4.18.16
   Single visual authority for the shared page header, section header,
   panel surface, action button and strategy status badge primitives.
   Page CSS may control placement only; it must not redefine appearance.
   ===================================================================== */

/* Page header */
.ui-page-header{
  margin:0 0 var(--page-header-content-gap);
}
.page-header__title-row{
  display:flex;
  align-items:center;
  justify-content:flex-start;
  gap:12px;
  min-width:0;
}
.page-header__title-row .ui-page-title{
  flex:1 1 auto;
  min-width:0;
}
.page-header__actions{
  display:flex;
  flex:0 0 auto;
  align-items:center;
  justify-content:flex-end;
  margin-left:auto;
}
.ui-page-title{
  display:block;
  margin:0;
  padding:0;
  border:0;
  border-radius:0;
  background:none;
  box-shadow:none;
  color:var(--text-primary);
  font-size:var(--font-page-title);
  font-weight:var(--weight-page-title);
  line-height:var(--line-page-title);
  letter-spacing:var(--tracking-page-title);
}
.ui-page-support{
  margin:var(--page-header-title-support-gap) 0 0;
  color:var(--text-tertiary);
  font-size:var(--font-page-support);
  font-weight:var(--weight-help);
  line-height:var(--line-page-support);
}

/* Section header */
.ui-section-header{
  margin:0;
  padding:0;
  color:var(--text-primary);
  font-size:var(--font-section-title);
  font-weight:var(--weight-section-title);
  line-height:var(--line-section-title);
  letter-spacing:var(--tracking-section-title);
}

/* Panel surface */
.ui-panel,
.card,
.ui-card{
  border:1px solid var(--color-line);
  border-radius:var(--radius-lg);
  background:var(--color-surface);
  box-shadow:var(--shadow-card);
}
.ui-panel--strategy{
  border-color:var(--color-line-strong);
  border-radius:var(--radius-xl);
  background:linear-gradient(180deg,var(--color-surface) 0%,var(--color-surface-soft) 100%);
  box-shadow:var(--shadow-panel);
}

/* Button */
.ui-button{
  appearance:none;
  margin:0;
  min-width:132px;
  height:var(--control-height);
  min-height:var(--control-height);
  padding:0 var(--ui-button-padding-x);
  border:1px solid var(--color-action-line);
  border-radius:var(--ui-button-radius);
  background:var(--color-surface);
  color:var(--color-action);
  font:inherit;
  font-size:var(--type-subheading);
  font-weight:var(--weight-action);
  line-height:var(--line-control);
  cursor:pointer;
  box-shadow:none;
  transition:background-color var(--ui-motion-fast) var(--ui-motion-ease),border-color var(--ui-motion-fast) var(--ui-motion-ease),color var(--ui-motion-fast) var(--ui-motion-ease),opacity var(--ui-motion-fast) var(--ui-motion-ease),box-shadow var(--ui-motion-fast) var(--ui-motion-ease),transform var(--ui-motion-fast) var(--ui-motion-ease);
}
.ui-button:hover:not(:disabled){background:var(--color-action-soft);}
.ui-button:focus-visible{outline:var(--ui-focus-width) solid var(--color-action-line);outline-offset:var(--ui-focus-offset);}
.ui-button:disabled{opacity:.55;cursor:wait;}
.ui-button--primary{
  box-sizing:border-box;
  width:auto;
  min-width:132px;
  height:var(--control-primary-height);
  min-height:var(--control-primary-height);
  padding:0 var(--control-primary-padding-x);
  border-color:var(--action-primary);
  border-radius:var(--control-primary-radius);
  background:var(--action-primary);
  color:#fff;
  font-family:var(--font-sans);
  font-size:var(--font-control);
  font-weight:var(--weight-control);
  box-shadow:var(--control-primary-shadow);
}
.ui-button--primary:hover:not(:disabled){
  border-color:var(--action-hover);
  background:var(--action-hover);
  color:#fff;
  box-shadow:var(--control-primary-shadow-hover);
  transform:translateY(-1px);
}
.ui-button--primary:active:not(:disabled){transform:none;box-shadow:none;}
.ui-button--primary:focus-visible{outline:var(--ui-focus-width) solid var(--action-line);outline-offset:var(--ui-focus-offset);}
.ui-button--primary:disabled{color:#fff;opacity:.55;cursor:wait;transform:none;}

/* Shared refresh-button geometry: identical across dashboard, swing and fund pages. */
.ui-button--refresh.ui-button--primary{
  width:auto;
  min-width:132px;
  height:var(--control-primary-height);
  min-height:var(--control-primary-height);
  padding:0 var(--control-primary-padding-x);
  white-space:nowrap;
}
@media(max-width:700px){
  .ui-button--refresh.ui-button--primary{
    width:auto;
    min-width:96px;
    height:40px;
    min-height:40px;
    padding-inline:16px;
  }
}

/* Instrument selector */
.ui-instrument-selector,
.ticker-selector{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:var(--ui-selector-gap);
  min-width:0;
}
.ui-instrument-option,
.ticker-selector-option{
  appearance:none;
  display:grid;
  align-content:center;
  gap:var(--ui-selector-option-gap);
  min-width:0;
  min-height:var(--ui-selector-option-min-height);
  padding:var(--ui-selector-option-padding-y) var(--ui-selector-option-padding-x);
  border:1px solid var(--color-line);
  border-radius:var(--ui-selector-option-radius);
  background:var(--color-surface-subtle);
  text-align:left;
  box-shadow:none;
}

.reference-info-panel__item--full{grid-column:1 / -1;}

.ui-instrument-option.is-active,
.ticker-selector-option.active{
  border-color:var(--color-action-line);
  background:var(--color-action-soft);
  box-shadow:0 0 0 var(--ui-selector-active-ring-width) var(--ui-selector-active-ring-color);
}
.ticker-selector-code{font-size:var(--font-selector-code);font-weight:var(--weight-emphasis);line-height:var(--line-page-title);color:var(--color-ink);}
.ticker-selector-name{font-size:var(--font-selector-name);font-weight:var(--weight-support);line-height:var(--line-section-title);color:var(--color-sub);}



/* Interactive state contract */
.ui-button--refresh[data-ui-state="loading"],
.ui-button--refresh.is-loading{cursor:wait;}
.ui-button--refresh[data-ui-state="error"],
.ui-button--refresh.is-error{border-color:var(--status-negative-line);}
.ui-instrument-option[aria-pressed="true"]{cursor:default;}
.ui-instrument-option:focus-visible{outline:var(--ui-focus-width) solid var(--color-action-line);outline-offset:var(--ui-focus-offset);}
.ui-status-badge[data-ui-state="loading"]{cursor:wait;}

/* Strategy status badge */
.ui-status-badge{
  box-sizing:border-box;
  width:var(--strategy-status-badge-width);
  min-width:var(--strategy-status-badge-width);
  max-width:var(--strategy-status-badge-width);
  height:var(--strategy-status-badge-height);
  min-height:var(--strategy-status-badge-height);
  padding:0 var(--strategy-status-badge-padding-x);
  margin:0;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-width:1px;
  border-style:solid;
  border-radius:var(--control-badge-radius);
  font-family:var(--font-sans);
  font-size:var(--strategy-status-badge-font-size);
  font-weight:var(--weight-badge);
  line-height:var(--line-control);
  white-space:nowrap;
}
.ui-status-badge.normal{border-color:var(--signal-positive-line);background:var(--signal-positive-soft);color:var(--signal-positive);}
.ui-status-badge.pending{border-color:var(--signal-warning-line);background:var(--signal-warning-soft);color:var(--signal-warning);}
.ui-status-badge.defense{border-color:var(--signal-negative-line);background:var(--signal-negative-soft);color:var(--signal-negative);}
.ui-status-badge.loading{border-color:var(--color-line);background:var(--color-loading-soft);color:var(--text-tertiary);}


/* Strategy status card and metric primitives */
.ui-strategy-status-card,
[data-status-component].status-module{
  --status-accent:var(--color-status-neutral);
  position:relative;
  overflow:hidden;
  margin:0;
  padding:var(--ui-status-card-padding-top) var(--ui-status-card-padding-x) var(--ui-status-card-padding-bottom);
  border:1px solid var(--color-line);
  border-radius:var(--radius-lg);
  background:var(--color-surface);
  box-shadow:var(--shadow-card);
}
.ui-strategy-status-card::before,
[data-status-component].status-module::before{
  content:"";
  position:absolute;
  top:0;bottom:0;left:0;width:var(--status-accent-width);
  background:var(--status-accent);
}
.ui-strategy-status-card.state-defense,
[data-status-component].status-module.state-defense{--status-accent:var(--signal-negative);}
.ui-strategy-status-card.state-normal,
[data-status-component].status-module.state-normal{--status-accent:var(--signal-positive);}
.status-module__head{display:flex;align-items:center;justify-content:space-between;gap:var(--ui-status-head-gap);margin:0 0 var(--ui-status-head-margin-bottom);}
.status-module__heading{display:grid;gap:var(--ui-status-heading-gap);min-width:0;}
.status-module__subtitle{color:var(--color-sub);font-size:var(--type-caption);line-height:var(--line-compact);font-weight:var(--weight-support);}
.status-module__badge{display:inline-flex;align-items:center;justify-content:center;min-width:var(--ui-status-pill-min-width);padding:var(--ui-status-pill-padding-y) var(--ui-status-pill-padding-x);border:0;border-radius:var(--radius-pill);background:var(--signal-negative-soft);color:var(--signal-negative);font-size:var(--font-status-pill);line-height:var(--line-control);font-weight:var(--weight-strong);}
.status-module__badge.normal{background:var(--signal-positive-soft);color:var(--signal-positive);}
.status-module__badge.defense{background:var(--signal-negative-soft);color:var(--signal-negative);}
.status-module__badge.loading{background:var(--color-loading-soft);color:var(--color-sub);}
.ui-metric-grid,.status-module__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--ui-metric-grid-gap);min-width:0;}
.ui-metric-card,.status-module__card{display:grid;grid-template-rows:auto auto;align-content:start;gap:var(--ui-metric-card-gap);min-width:0;padding:var(--ui-metric-card-padding-y) var(--ui-metric-card-padding-x);border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:none;text-align:left;}
.status-module__card--allocation{background:var(--color-surface);border-color:var(--color-line);}
.state-normal .status-module__card--allocation{background:var(--signal-positive-soft);border-color:var(--signal-positive-line);}
.state-pending .status-module__card--allocation{background:var(--signal-warning-soft);border-color:var(--signal-warning-line);}
.state-defense .status-module__card--allocation{background:var(--signal-negative-soft);border-color:var(--signal-negative-line);}
.status-module__card--trigger.trigger-recovery{background:var(--signal-positive-soft);border-color:var(--signal-positive-line);}
.status-module__card--trigger.trigger-defense{background:var(--signal-negative-soft);border-color:var(--signal-negative-line);}
.ui-metric-label,.status-module__label{display:block;min-width:0;margin:0;color:var(--color-sub);font-size:var(--type-subheading);font-weight:var(--weight-emphasis);line-height:var(--line-compact);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ui-metric-value-row,.status-module__value-row{display:flex;align-items:center;min-width:0;}
.ui-metric-value,.status-module__value{min-width:0;margin:0;padding:0;color:var(--color-ink);font-size:var(--number-hero);font-weight:var(--number-hero-weight);line-height:var(--number-line-height);letter-spacing:var(--number-letter-spacing);font-variant-numeric:tabular-nums;white-space:nowrap;}
.status-module__value-unit{display:inline-block;margin-left:.04em;font-size:calc(1em * var(--number-unit-scale));font-weight:var(--number-unit-weight);line-height:var(--line-control);letter-spacing:var(--tracking-none);vertical-align:.12em;}
.status-module__value-context{display:inline-block;margin-left:.28em;font-size:calc(1em * var(--number-context-scale));font-weight:var(--number-context-weight);line-height:var(--line-control);letter-spacing:var(--tracking-none);opacity:var(--number-context-opacity);vertical-align:.16em;}
.ui-metric-meta,.status-module__meta{display:block;margin:0;color:var(--color-muted);font-size:var(--type-caption);line-height:var(--line-compact);font-weight:var(--weight-support);white-space:nowrap;}
.status-module__card--allocation .status-module__value{color:var(--color-ink);}
.state-normal .status-module__card--allocation .status-module__value{color:var(--signal-positive);}
.state-pending .status-module__card--allocation .status-module__value{color:var(--signal-warning);}
.state-defense .status-module__card--allocation .status-module__value{color:var(--signal-negative);}
.status-module__card--trigger.trigger-recovery .status-module__value{color:var(--signal-positive);}
.status-module__card--trigger.trigger-defense .status-module__value{color:var(--signal-negative);}

/* Reference panel and reference metric primitives */
.ui-reference-panel,.reference-info-panel{display:grid;gap:var(--ui-reference-panel-gap);padding:var(--ui-reference-panel-padding);}
.reference-info-panel__head{display:flex;align-items:center;justify-content:space-between;gap:var(--ui-reference-head-gap);margin:0;}
.reference-info-panel__head > div{min-width:0;}
.reference-info-panel__kicker{margin:0 0 var(--ui-reference-kicker-gap);color:var(--color-muted);font-size:var(--type-micro);font-weight:var(--weight-emphasis);line-height:var(--line-label);letter-spacing:var(--tracking-kicker);}
.reference-info-panel__title{margin:0;color:var(--color-ink);font-size:var(--font-section-title);font-weight:var(--weight-strong);line-height:var(--line-section-title);letter-spacing:var(--tracking-section-title);}
.ui-reference-grid,.reference-info-panel__grid{display:grid;gap:var(--ui-reference-panel-gap);margin:0;}
.reference-info-panel__grid--two{grid-template-columns:repeat(2,minmax(0,1fr));}
.reference-info-panel__grid--three{grid-template-columns:repeat(3,minmax(0,1fr));}
.ui-reference-card,.reference-info-panel__item{min-width:0;min-height:var(--ui-reference-card-min-height);padding:var(--ui-reference-card-padding-y) var(--ui-reference-card-padding-x);border:1px solid var(--color-line);border-radius:var(--ui-reference-card-radius);background:var(--color-surface-subtle);box-shadow:none;}
.reference-info-panel--key-levels{margin:0;}
.reference-info-panel__action:not(.ui-button--primary){flex:0 0 auto;min-height:var(--ui-reference-action-min-height);padding:var(--ui-reference-action-padding-y) var(--ui-reference-action-padding-x);border:1px solid var(--color-action-line-soft);border-radius:var(--radius-pill);background:var(--color-surface);color:var(--color-action);font:inherit;font-size:var(--type-caption);font-weight:var(--weight-emphasis);line-height:var(--line-compact);cursor:pointer;}
.reference-info-panel__action:not(.ui-button--primary):hover{border-color:var(--color-action-mid);background:var(--color-action-fill);}
.reference-info-panel__action:not(.ui-button--primary):disabled{opacity:.6;cursor:wait;}
.ui-reference-metric,.reference-info-panel__metric{display:grid;align-content:center;gap:var(--ui-reference-metric-gap);}
.reference-info-panel__label{color:var(--color-sub);font-size:var(--type-caption);font-weight:var(--weight-action);line-height:var(--line-section-title);}
.reference-info-panel__value{color:var(--color-ink);font-size:var(--number-primary);font-weight:var(--number-primary-weight);line-height:var(--number-line-height);letter-spacing:var(--number-letter-spacing);font-variant-numeric:tabular-nums;}
.reference-info-panel__meta{color:var(--color-muted);font-size:var(--type-caption);font-weight:var(--weight-support);line-height:var(--line-meta);}
.reference-info-panel__status{margin:var(--ui-reference-status-margin-top) 0 0;padding:0;border:0;background:transparent;color:var(--color-muted);font-size:var(--type-tiny);line-height:var(--line-status);}
.reference-info-panel__help{margin:0;color:var(--color-body);font-size:var(--type-caption);line-height:var(--line-body);}
.reference-info-panel__data-sink{display:none;}
