/*
 * Platform-neutral Stock Sentinel component contracts.
 *
 * These classes contain no Streamlit selectors. A future frontend can render
 * the same semantic markup and import this file unchanged.
 */

.ss-system-state {
  --ss-state-accent: var(--ss-color-action);
  --ss-state-border: var(--ss-color-info-border);
  --ss-state-surface: var(--ss-color-info-surface);
  margin: 0.75rem 0;
  padding: 1rem 1.05rem;
  border: 1px solid var(--ss-state-border);
  border-left: 3px solid var(--ss-state-accent);
  border-radius: var(--ss-radius-control);
  background: var(--ss-state-surface);
  color: var(--ss-color-text);
}

.ss-system-state[data-kind="success"] {
  --ss-state-accent: var(--ss-color-positive);
  --ss-state-border: var(--ss-color-success-border);
  --ss-state-surface: var(--ss-color-success-surface);
}

.ss-system-state[data-kind="warning"] {
  --ss-state-accent: var(--ss-color-caution);
  --ss-state-border: var(--ss-color-warning-border);
  --ss-state-surface: var(--ss-color-warning-surface);
}

.ss-system-state[data-kind="error"] {
  --ss-state-accent: var(--ss-color-negative);
  --ss-state-border: var(--ss-color-error-border);
  --ss-state-surface: var(--ss-color-error-surface);
}

.ss-system-state__eyebrow {
  margin: 0 0 0.25rem;
  color: var(--ss-state-accent);
  font-size: 0.69rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.ss-system-state__title {
  margin: 0;
  color: var(--ss-color-text);
  font-size: 0.98rem;
  font-weight: 760;
  line-height: 1.35;
}

.ss-system-state__message,
.ss-system-state__meta {
  margin: 0.3rem 0 0;
  color: var(--ss-color-text-muted);
  font-size: 0.84rem;
  line-height: 1.5;
}

.ss-system-state__meta {
  padding-top: 0.5rem;
  border-top: 1px solid var(--ss-color-border);
}

.ss-processing-state {
  display: flex;
  min-height: var(--ss-control-min-height);
  align-items: center;
  gap: 0.7rem;
  margin: 0.55rem 0;
  color: var(--ss-color-text-muted);
  font-size: 0.86rem;
  font-weight: 650;
}

.ss-processing-state::before {
  width: 0.72rem;
  height: 0.72rem;
  flex: 0 0 auto;
  border: 2px solid rgba(56, 189, 248, 0.25);
  border-top-color: var(--ss-color-action);
  border-radius: 50%;
  content: "";
  animation: ss-state-spin 0.8s linear infinite;
}

.ss-visually-hidden {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

@keyframes ss-state-spin { to { transform: rotate(360deg); } }

@media (prefers-reduced-motion: reduce) {
  .ss-processing-state::before { animation: none; }
}

/* Shared task-page introduction. The host adapter decides whether this sits
   beside or above the framework-owned controls; the content contract remains
   portable to a future frontend. */
.ss-task-command-intro {
  max-width: var(--ss-reading-max-width);
  margin: 0 0 1.35rem;
}

.ss-task-command-intro h1 {
  margin: 0 0 0.35rem;
  color: var(--ss-color-text);
  font-size: var(--ss-font-page-title);
  font-weight: 760;
  letter-spacing: -0.035em;
  line-height: 1.08;
}

.ss-task-command-intro p {
  max-width: 680px;
  margin: 0;
  color: var(--ss-color-text-muted);
  font-size: 1rem;
  line-height: 1.5;
}

.ss-task-hint {
  display: flex;
  min-height: 56px;
  max-width: 780px;
  box-sizing: border-box;
  align-items: baseline;
  gap: 0.75rem;
  margin: 1rem 0 1.25rem;
  padding: 0.7rem 0.95rem;
  border: 1px solid var(--ss-color-border);
  border-radius: 12px;
  background: rgba(8, 15, 30, 0.42);
}

.ss-task-hint h2 {
  flex: 0 0 auto;
  margin: 0;
  color: #dbe3ee;
  font-size: 0.88rem;
  font-weight: 750;
  line-height: 1.45;
}

.ss-task-hint p {
  margin: 0;
  color: #8192aa;
  font-size: 0.82rem;
  line-height: 1.45;
}

@media (min-width: 1100px) and (hover: hover) and (pointer: fine) {
  .ss-task-command-intro {
    max-width: 330px;
    margin: 0;
  }

  .ss-task-command-intro h1 {
    margin-bottom: 0.55rem;
    font-size: clamp(2.25rem, 3vw, 2.5rem);
  }

  .ss-task-command-intro p {
    max-width: 310px;
    line-height: 1.45;
  }

  .ss-task-hint {
    min-height: 0;
    max-width: 1100px;
    margin: 0.85rem 0 1rem;
    padding: 0 1.35rem;
    border: 0;
    border-radius: 0;
    background: transparent;
  }
}

@media (max-width: 700px) {
  .ss-task-command-intro { margin-bottom: 1rem; }

  .ss-task-command-intro h1 {
    font-size: clamp(2rem, 9vw, 2.5rem);
  }

  .ss-task-command-intro p { font-size: 1rem; }

  .ss-task-hint {
    min-height: 0;
    align-items: flex-start;
    flex-direction: column;
    gap: 0.2rem;
    margin: 0.85rem 0 1rem;
    padding: 0.75rem 0.85rem;
  }
}

/* Sector Pulse: observations use existing product tokens and inherited font. */
.ss-pulse-head{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:8px}
.ss-pulse-kicker{color:var(--ss-color-action);font-size:.72rem;font-weight:750;letter-spacing:.1em;text-transform:uppercase;margin-bottom:8px}
.ss-pulse-head h2{font-size:1.65rem;letter-spacing:-.025em;margin:0;padding:0;line-height:1.2}
.ss-pulse-head p{color:var(--ss-color-text-muted);font-size:.875rem;margin:6px 0 0}
.ss-pulse-head .ss-pulse-date{text-align:right;line-height:1.6;white-space:nowrap}
.ss-pulse-date span{color:var(--ss-color-text-muted)}
.ss-pulse-columns{display:grid;grid-template-columns:1.05fr .85fr 1.65fr 1.05fr;gap:24px;text-transform:uppercase;font-size:.65rem;letter-spacing:.09em;color:var(--ss-color-text-muted);margin-bottom:4px}
.ss-pulse-name{font-size:1.08rem;font-weight:750;letter-spacing:-.02em;margin-bottom:7px}
.ss-pulse-state{font-size:.78rem;color:var(--ss-color-text-muted)}
.ss-pulse-state span{margin-right:5px;font-size:.65rem}
.ss-pulse-state[data-state="accumulating"] span{color:var(--ss-color-positive)}
.ss-pulse-state[data-state="event"] span{color:var(--ss-color-caution)}
.ss-pulse-state[data-state="distributing"] span{color:var(--ss-color-negative)}
.ss-pulse-participation strong{font-size:1.65rem;line-height:1.2;font-weight:650;font-variant-numeric:tabular-nums}
.ss-pulse-bar{height:3px;background:rgba(148,163,184,.25);max-width:120px;margin:8px 0 6px}
.ss-pulse-bar span{display:block;height:3px;background:#b7d8e8}
.ss-pulse-participation small{font-size:.7rem;color:var(--ss-color-text-muted)}
.ss-pulse-evidence p{font-size:.85rem;line-height:1.5;margin:0 0 6px}
.ss-pulse-warning{font-size:.85rem;color:#f2c269;display:block}
.ss-pulse-calendar{color:#f2c269!important}
.ss-pulse-evidence summary,.ss-pulse-method summary{cursor:pointer;color:var(--ss-color-action);font-size:.8rem;min-height:44px;padding:11px 0}
.ss-pulse-evidence details div{background:var(--ss-color-panel-raised);border:1px solid var(--ss-color-border);border-radius:var(--ss-radius-control);padding:12px;margin:0 0 6px}
.ss-pulse-evidence details p{font-size:.8rem;color:var(--ss-color-text-muted)}
.ss-pulse-definition{font-size:.78rem;color:var(--ss-color-text-muted);margin:12px 0 0}
.ss-pulse-method{border-top:1px solid var(--ss-color-border);margin-top:10px}
.ss-pulse-method p{color:var(--ss-color-text-muted);font-size:.875rem;line-height:1.6;max-width:800px}
.ss-pulse-evidence summary:focus-visible,.ss-pulse-method summary:focus-visible,.ss-demo-details summary:focus-visible{outline:2px solid var(--ss-color-action);outline-offset:3px}
@media(max-width:640px){
 .ss-pulse-head{display:block}.ss-pulse-head .ss-pulse-date{text-align:left;white-space:normal;margin-top:12px}
 .ss-pulse-columns{display:none}.ss-pulse-participation{text-align:right}.ss-pulse-bar{margin-left:auto;width:90px}
}

/* Consistent disclosure affordance across evidence, methodology, and demo. */
.ss-pulse-evidence summary,.ss-pulse-method summary,.ss-demo-details summary{list-style:none;display:flex;align-items:center;gap:8px}
.ss-pulse-evidence summary::-webkit-details-marker,.ss-pulse-method summary::-webkit-details-marker,.ss-demo-details summary::-webkit-details-marker{display:none}
.ss-pulse-evidence summary::before,.ss-pulse-method summary::before,.ss-demo-details summary::before{content:"›";display:inline-block;font-size:1.1rem;line-height:1;transform-origin:center}
.ss-pulse-evidence details[open]>summary::before,.ss-pulse-method[open]>summary::before,.ss-demo-details[open]>summary::before{transform:rotate(90deg)}
