:root {
  --bg: #0b0e14;
  --floor: #101522;
  --border: #232a38;
  --text: #e9edf3;
  --text-dim: #8b93a3;
  --accent: #F2A23A;
  --idle: #3FB950;
  --paper: #FBFAF7;
  --ink: #1F2933;
}

* { box-sizing: border-box; }

body {
  margin: 0;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
  background: var(--bg);
  color: var(--text);
}

.office-header { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 1rem; text-align: center; }
.office-header h1 { font-size: 1.9rem; margin: 0 0 0.5rem; letter-spacing: -0.01em; }
.office-sub { margin: 0 0 0.75rem; color: var(--text-dim); line-height: 1.5; }
.office-legend { font-size: 0.85rem; color: var(--text-dim); }
.dot { display: inline-block; width: 9px; height: 9px; border-radius: 50%; margin-right: 0.3rem; }
.dot-idle { background: var(--idle); }
.dot-active { background: var(--accent); }
.dot-boss { background: #f1c27d; box-shadow: 0 0 6px var(--accent); }

#office-canvas-wrap { max-width: 1200px; margin: 0 auto; padding: 0 1rem; overflow-x: auto; }
#office-canvas {
  width: 100%; height: auto; display: block; border-radius: 14px;
  box-shadow: 0 8px 30px rgba(0,0,0,0.4); background: var(--floor); min-width: 640px;
}
.office-status-line { text-align: center; font-size: 0.8rem; color: var(--text-dim); margin: 0.6rem 0 0; }

.office-footer {
  max-width: 700px; margin: 1.5rem auto 3rem; padding: 0 1.25rem; text-align: center;
  font-size: 0.82rem; color: var(--text-dim); line-height: 1.5;
}
.office-footer a { color: var(--accent); }

/* --- scene --- */
.zone-floor { fill: var(--floor); }
.zone-label {
  font-size: 13px; font-weight: 700; fill: var(--text-dim);
  letter-spacing: 0.12em; text-transform: uppercase; opacity: 0.6;
}
.bench rect { opacity: 0.95; }
.boss-ribbon {
  font-size: 13px; font-weight: 800; fill: var(--accent);
  letter-spacing: 0.35em; text-anchor: middle; opacity: 0.85;
}
.monitor-screen { fill: #1a2130; transition: fill 0.5s ease, filter 0.5s ease; }
.monitor-screen.is-lit { fill: var(--accent); filter: drop-shadow(0 0 5px var(--accent)); }

/* --- character --- */
.character { transition: transform 1.2s cubic-bezier(.4,0,.2,1); transform-origin: 0 0; will-change: transform; }
.character.is-walking { transition: transform 0.9s linear; }
.char-shadow { fill: #000000; opacity: 0.35; }

.avatar { opacity: 0.98; }
.avatar-frame { stroke: rgba(255,255,255,0.10); stroke-width: 1.5; }

.status-blip { transition: fill 0.4s ease; }
.status-blip circle { fill: var(--idle); }
.character.is-active .status-blip circle { fill: var(--accent); animation: blip-pulse 1.4s ease-in-out infinite; }
.character.is-walking .status-blip circle { fill: var(--accent); }
.character.is-boss .status-blip circle { fill: var(--accent); }
.character.is-boss .status-blip { animation: blip-pulse 2.2s ease-in-out infinite; }

.name-tag-bg { fill: var(--paper); stroke: var(--border); stroke-width: 1.2; opacity: 0.96; }
.character .name-tag { font-size: 12px; font-weight: 800; fill: var(--ink); text-anchor: middle; }
.character .role-tag { font-size: 9.5px; font-weight: 600; fill: #6b7280; text-anchor: middle; }
.character.is-boss .name-tag { font-size: 14px; }
.character.is-boss .role-tag { font-size: 10.5px; fill: var(--accent); }

/* on-screen stage label (for live presentations) */
.stage-tag { display: none; }
.stage-tag-bg { fill: rgba(15,18,26,0.92); stroke: var(--accent); stroke-width: 1.4; }
.stage-tag-text { font-size: 10px; font-weight: 800; fill: var(--accent); text-anchor: middle; letter-spacing: 0.04em; }

.character .caption-bubble { opacity: 0; transition: opacity 0.4s ease; filter: drop-shadow(0 3px 4px rgba(0,0,0,0.4)); }
.character.is-chatting .caption-bubble { opacity: 1; }
.caption-text { font-size: 11.5px; font-weight: 600; fill: var(--ink); text-anchor: middle; }
.caption-bubble-bg { fill: var(--paper); stroke: var(--border); stroke-width: 1.6; }

/* idle hover/wait subtlety */
.character.is-idle .figure { animation: idle-breathe 3s ease-in-out infinite; }
.character.is-active .figure { animation: work-bob 1.1s ease-in-out infinite; }
.character.is-boss .figure { animation: boss-float 4s ease-in-out infinite; }

@keyframes idle-breathe { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-2px); } }
@keyframes work-bob { 0%,100% { transform: translateY(0); } 50% { transform: translateY(1.5px); } }
@keyframes boss-float { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-4px); } }
@keyframes blip-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }

@media (prefers-reduced-motion: reduce) {
  .character, .figure, .status-blip circle, .monitor-screen { animation: none !important; transition: none !important; }
}