/*
 * SPENE VIS system layer
 * Primary: clean blue + warm yellow. Auxiliary colors keep stable business meaning.
 */
:root {
  --spene-clean: #00aec2;
  --spene-clean-deep: #007f8d;
  --spene-clean-dark: #075d66;
  --spene-clean-soft: #d9f3f6;
  --spene-clean-wash: #eef9fa;
  --spene-warm: #fabe00;
  --spene-warm-deep: #8a6800;
  --spene-warm-soft: #fff2bf;
  --spene-health: #3e9e72;
  --spene-health-soft: #e3f3eb;
  --spene-science: #33398e;
  --spene-science-soft: #e8e9f6;
  --spene-service: #8a5f9f;
  --spene-service-soft: #f0e8f3;
  --spene-passion: #d85e6d;
  --spene-passion-soft: #fae6e9;
  --spene-gold: #cdb07b;
  --spene-silver: #b5b5b5;
  --spene-canvas: #f4f7f5;
  --spene-surface: #ffffff;
  --spene-surface-soft: #fafcfb;
  --spene-ink: #113f47;
  --spene-muted: #667b7c;
  --spene-line: #dbe8e5;
  --spene-line-strong: #bedbd8;

  --brand-primary: var(--spene-clean);
  --brand-primary-dark: var(--spene-clean-deep);
  --brand-logo-surface: var(--spene-clean);
  --brand-deep: var(--spene-clean-deep);
  --brand-dark: var(--spene-clean-dark);
  --brand-fresh: #67d7df;
  --brand-accent: var(--spene-warm);
  --brand-yellow: var(--spene-warm);
  --brand-progress: linear-gradient(90deg, var(--spene-clean) 0%, #64cba6 58%, var(--spene-warm) 100%);
  --brand-soft: var(--spene-clean-soft);
  --bg: var(--spene-canvas);
  --surface: var(--spene-surface);
  --surface-2: var(--spene-surface-soft);
  --ink: var(--spene-ink);
  --muted: var(--spene-muted);
  --line: var(--spene-line);
  --line-strong: var(--spene-line-strong);
  --nav: var(--spene-clean);
  --nav-soft: var(--spene-clean-deep);
  --green: var(--spene-health);
  --green-soft: var(--spene-health-soft);
  --blue: var(--spene-science);
  --blue-soft: var(--spene-science-soft);
  --red: var(--spene-passion);
  --red-soft: var(--spene-passion-soft);
  --danger: var(--spene-passion);
  --amber: var(--spene-warm-deep);
  --amber-soft: var(--spene-warm-soft);
  --purple: var(--spene-service);
  --shadow: 0 12px 30px rgba(17, 63, 71, .065);
}

body {
  background: var(--spene-canvas);
}

.access-gate {
  background: var(--spene-clean-wash);
}

.sidebar {
  background: var(--spene-clean);
}

.nav button,
.nav a {
  transition: background-color .18s ease, color .18s ease, transform .18s ease;
}

.nav button.active,
.nav a.active {
  box-shadow: inset 3px 0 0 var(--spene-warm);
}

.nav button:hover,
.nav a:hover {
  transform: translateX(2px);
}

.content {
  background: var(--spene-canvas);
}

.page {
  --module-accent: var(--spene-clean);
  --module-soft: var(--spene-clean-wash);
}

#goals,
#business,
#dashboard {
  --module-accent: var(--spene-clean);
  --module-soft: var(--spene-clean-wash);
}

#project,
#team {
  --module-accent: var(--spene-service);
  --module-soft: var(--spene-service-soft);
}

#talent {
  --module-accent: var(--spene-service);
  --module-soft: var(--spene-service-soft);
}

#product,
#npd {
  --module-accent: var(--spene-health);
  --module-soft: var(--spene-health-soft);
}

#finance,
#image-studio {
  --module-accent: var(--spene-science);
  --module-soft: var(--spene-science-soft);
}

.page-head > div:first-child {
  position: relative;
  padding-left: 13px;
}

.page-head > div:first-child::before {
  content: '';
  position: absolute;
  top: 2px;
  bottom: 2px;
  left: 0;
  width: 4px;
  border-radius: 4px;
  background: var(--module-accent);
}

.page-head h2 {
  color: var(--spene-ink);
  letter-spacing: 0;
}

.data-chip {
  border-color: var(--spene-line);
  background: rgba(255, 255, 255, .88);
}

.dot {
  background: var(--module-accent);
}

.panel,
.metric,
.focus-tile,
.role-card,
.goal-period-card {
  border-color: var(--spene-line);
  box-shadow: var(--shadow);
}

.panel-head,
.talent-panel-head {
  background: var(--spene-surface-soft);
}

.metric,
.focus-tile,
.goal-period-card,
.talent-kpi,
.talent-entry-card {
  transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}

.metric:hover,
.focus-tile:hover,
.goal-period-card:hover,
.talent-kpi:hover,
.talent-entry-card:hover {
  border-color: var(--module-accent);
  box-shadow: 0 16px 34px rgba(17, 63, 71, .10);
  transform: translateY(-2px);
}

.progress > i,
.progress i,
.pulse-progress > i,
.pulse-progress i {
  background: var(--brand-progress);
}

.tag.green {
  background: var(--spene-health-soft);
  color: var(--spene-health);
}

.tag.blue {
  background: var(--spene-science-soft);
  color: var(--spene-science);
}

.tag.red {
  background: var(--spene-passion-soft);
  color: var(--spene-passion);
}

.tag.amber {
  background: var(--spene-warm-soft);
  color: var(--spene-warm-deep);
}

.tag.purple {
  background: var(--spene-service-soft);
  color: var(--spene-service);
}

#dashboard > .metric-grid .metric {
  position: relative;
  overflow: hidden;
}

#dashboard > .metric-grid .metric::before {
  content: '';
  position: absolute;
  inset: 0 0 auto;
  height: 3px;
  background: var(--metric-accent, var(--spene-clean));
}

#dashboard > .metric-grid .metric:nth-child(2) { --metric-accent: var(--spene-science); }
#dashboard > .metric-grid .metric:nth-child(3) { --metric-accent: var(--spene-health); }
#dashboard > .metric-grid .metric:nth-child(4) { --metric-accent: var(--spene-service); }
#dashboard > .metric-grid .metric:nth-child(5) { --metric-accent: var(--spene-warm); }
#dashboard > .metric-grid .metric:nth-child(6) { --metric-accent: var(--spene-passion); }

#dashboard[data-dashboard-role="ceo"] .role-card.primary {
  border-color: var(--spene-clean);
  background: var(--spene-clean);
}

#dashboard[data-dashboard-role="ceo"] .ceo-strategy-gate:nth-child(1) { border-top-color: var(--spene-health); }
#dashboard[data-dashboard-role="ceo"] .ceo-strategy-gate:nth-child(2) { border-top-color: var(--spene-warm); }
#dashboard[data-dashboard-role="ceo"] .ceo-strategy-gate:nth-child(3) { border-top-color: var(--spene-service); }
#dashboard[data-dashboard-role="ceo"] .ceo-strategy-gate:nth-child(4) { border-top-color: var(--spene-science); }

#dashboard[data-dashboard-role="ceo"] > .focus-strip .focus-tile:nth-child(2) {
  border-left-color: var(--spene-passion);
  background: linear-gradient(90deg, var(--spene-passion-soft), #fff 28%);
}

.goal-period-card {
  background: var(--spene-surface);
}

.goal-period-card.current {
  border-color: var(--spene-clean);
  background: linear-gradient(180deg, var(--spene-clean-wash), #fff 72%);
}

/* Organization and talent: service purple identifies the module, not every control. */
#talent .talent-tabs button:hover {
  color: var(--spene-service);
  background: var(--spene-service-soft);
}

#talent .talent-tabs button.active {
  border-bottom-color: var(--spene-service);
  color: var(--spene-service);
}

#talent .talent-kpi {
  position: relative;
  overflow: hidden;
}

#talent .talent-kpi::before {
  content: '';
  position: absolute;
  inset: 0 0 auto;
  height: 4px;
  background: var(--talent-kpi-accent, var(--spene-service));
}

#talent .talent-kpi:nth-child(2) { --talent-kpi-accent: var(--spene-science); }
#talent .talent-kpi:nth-child(3) { --talent-kpi-accent: var(--spene-health); }
#talent .talent-kpi:nth-child(4) { --talent-kpi-accent: var(--spene-passion); }

#talent .talent-entry-card {
  border-color: #ddcfe3;
  background: #fbf8fc;
}

#talent .talent-entry-card:hover,
#talent .talent-entry-card:focus-visible {
  border-color: var(--spene-service);
  background: var(--spene-service-soft);
}

#talent .talent-entry-icon {
  background: var(--spene-service);
}

#talent .talent-status,
#talent .talent-source {
  background: var(--spene-service-soft);
  color: var(--spene-service);
}

#talent .talent-gate span.done {
  border-color: #a9d8c2;
  background: var(--spene-health-soft);
  color: var(--spene-health);
}

#talent .talent-btn.primary {
  border-color: var(--spene-service);
  background: var(--spene-service);
}

/* Modern operating layer: bright, calm and unmistakably SPENE. */
body {
  font-family: Inter, "SF Pro Display", "PingFang SC", "Microsoft YaHei", sans-serif;
  color: var(--spene-ink);
  letter-spacing: 0;
}

.sidebar {
  border-right: 0;
  box-shadow: 10px 0 28px rgba(17, 63, 71, .06);
}

.brand {
  border-bottom-color: rgba(255, 255, 255, .18);
}

.brand-mark {
  box-shadow: 0 12px 26px rgba(0, 99, 111, .18), inset 0 0 0 1px rgba(255, 255, 255, .12);
}

.brand p,
.sidebar-footer {
  color: rgba(255, 255, 255, .76);
}

.nav button.active,
.nav a.active {
  background: var(--spene-warm);
  color: var(--spene-ink);
  box-shadow: 0 8px 18px rgba(112, 84, 0, .14);
}

.nav button:hover,
.nav a:hover {
  background: rgba(255, 255, 255, .22);
  color: #fff;
  transform: translateX(2px);
}

.nav button.active:hover,
.nav a.active:hover {
  background: var(--spene-warm);
  color: var(--spene-ink);
  transform: none;
}

.nav button.active .nav-count,
.nav a.active .nav-count {
  background: var(--spene-ink);
  color: #fff;
}

.content {
  padding-top: 24px;
}

.topbar {
  background: rgba(255, 255, 255, .92);
  border-bottom-color: var(--spene-line);
  box-shadow: 0 8px 24px rgba(17, 63, 71, .045);
}

.scope-select,
.role-select,
.search,
.icon-btn,
.period,
.platform-period-control {
  border-color: var(--spene-line-strong);
  background: rgba(255, 255, 255, .94);
}

.scope-select:hover,
.role-select:hover,
.icon-btn:hover {
  border-color: var(--spene-clean);
}

.period button,
.platform-period-control button {
  transition: background-color .16s ease, color .16s ease;
}

.period button:hover,
.platform-period-control button:hover {
  background: var(--spene-clean-wash);
  color: var(--spene-clean-deep);
}

.period button.active,
.platform-period-control button.active {
  background: var(--spene-clean);
  color: #fff;
}

.page.active {
  animation: spene-page-in .22s ease both;
}

.page-head h2 {
  font-size: 26px;
  font-weight: 820;
}

.eyebrow {
  color: var(--module-accent);
  font-weight: 700;
}

.panel-head,
.talent-panel-head {
  position: relative;
  background: color-mix(in srgb, var(--module-soft) 44%, #fff);
}

.page:not(.image-studio-page) .panel-head::before,
.page:not(.image-studio-page) .talent-panel-head::before {
  content: '';
  position: absolute;
  left: 0;
  top: 14px;
  bottom: 14px;
  width: 3px;
  border-radius: 3px;
  background: var(--module-accent);
}

.panel-head h3,
.talent-panel-head h3 {
  font-weight: 800;
}

.page:not(.image-studio-page) .primary-btn,
.page:not(.image-studio-page) .top-action {
  background: var(--module-accent);
  color: #fff;
  box-shadow: 0 8px 18px color-mix(in srgb, var(--module-accent) 20%, transparent);
  transition: transform .16s ease, box-shadow .16s ease, filter .16s ease;
}

.page:not(.image-studio-page) .primary-btn:hover,
.page:not(.image-studio-page) .top-action:hover {
  filter: saturate(1.08) brightness(.96);
  box-shadow: 0 11px 22px color-mix(in srgb, var(--module-accent) 27%, transparent);
  transform: translateY(-1px);
}

.ghost-btn,
.icon-btn {
  transition: border-color .16s ease, color .16s ease, background-color .16s ease;
}

.ghost-btn:hover,
.icon-btn:hover {
  border-color: var(--module-accent, var(--spene-clean));
  color: var(--module-accent, var(--spene-clean-deep));
  background: var(--module-soft, var(--spene-clean-wash));
}

input:not([type="checkbox"]):not([type="radio"]),
select,
textarea {
  transition: border-color .16s ease, box-shadow .16s ease, background-color .16s ease;
}

input:not([type="checkbox"]):not([type="radio"]):focus,
select:focus,
textarea:focus {
  border-color: var(--module-accent, var(--spene-clean));
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--module-accent, var(--spene-clean)) 13%, transparent);
  outline: 0;
}

tbody tr,
.project-list-row {
  transition: background-color .15s ease;
}

tbody tr:hover,
.project-list-row:hover {
  background: color-mix(in srgb, var(--module-soft, var(--spene-clean-wash)) 68%, #fff);
}

#dashboard[data-dashboard-role="ceo"] .role-card.primary {
  box-shadow: 0 18px 38px rgba(0, 174, 194, .16);
}

/* Collaboration uses service purple, while repeatable templates keep distinct meanings. */
#project .project-template-strip {
  background: color-mix(in srgb, var(--spene-service-soft) 42%, #fff);
}

#project .project-template-card {
  border-color: color-mix(in srgb, var(--spene-service) 24%, var(--spene-line));
  background: #fff;
}

#project .project-template-card:nth-child(2) > span:first-child { background: var(--spene-health); }
#project .project-template-card:nth-child(3) > span:first-child { background: var(--spene-science); }
#project .project-template-card:nth-child(4) > span:first-child { background: var(--spene-warm); color: var(--spene-ink); }

#project .project-template-card:hover {
  border-color: var(--spene-service);
  box-shadow: 0 12px 24px rgba(138, 95, 159, .12);
}

#project .project-filter-tabs button.active,
#project .project-detail-tabs button.active {
  color: var(--spene-service);
  background: var(--spene-service-soft);
  box-shadow: inset 0 -2px 0 var(--spene-service);
}

#project .project-meeting-entry-icon {
  background: var(--spene-service);
}

/* Personal workbench feels like a useful desk, not another admin table. */
.personal-workbench-group.position-group {
  background: color-mix(in srgb, var(--spene-health-soft) 72%, #fff);
}

.personal-workbench-group.personal-group {
  background: color-mix(in srgb, var(--spene-warm-soft) 60%, #fff);
}

.position-shortcut {
  background: #fff;
  border-color: color-mix(in srgb, var(--spene-health) 25%, var(--spene-line));
}

.position-shortcut .workbench-link-icon {
  background: var(--spene-health);
}

.personal-link-card {
  background: #fff;
  border-color: color-mix(in srgb, var(--spene-warm) 34%, var(--spene-line));
}

@keyframes spene-page-in {
  from { opacity: 0; transform: translateY(5px); }
  to { opacity: 1; transform: translateY(0); }
}

/* AI visual factory consumes the same tokens while preserving its own workspace layout. */
.image-studio-page {
  --studio-brand: var(--spene-clean);
  --studio-brand-deep: var(--spene-clean-deep);
  --studio-brand-soft: var(--spene-clean-soft);
  --studio-brand-wash: var(--spene-clean-wash);
  --studio-sun: var(--spene-warm);
  --studio-health: var(--spene-health);
  --studio-health-soft: var(--spene-health-soft);
  --studio-research: var(--spene-science);
  --studio-research-soft: var(--spene-science-soft);
  --studio-service: var(--spene-service);
  --studio-service-soft: var(--spene-service-soft);
  --studio-passion: var(--spene-passion);
  --studio-passion-soft: var(--spene-passion-soft);
  --studio-gold: var(--spene-gold);
  --studio-silver: var(--spene-silver);
}

.studio-topbar {
  border-bottom-color: var(--spene-line);
  box-shadow: 0 10px 28px rgba(17, 63, 71, .06);
}

.studio-results-section > .panel {
  border-color: var(--spene-line);
}

@media (prefers-reduced-motion: reduce) {
  .nav button,
  .nav a,
  .metric,
  .focus-tile,
  .goal-period-card,
  .talent-kpi,
  .talent-entry-card {
    transition: none;
  }

  .page.active {
    animation: none;
  }
}
