/* Companion demonstration; the commissioned explanatory artwork stays above. */
.excel-flow { margin-top: 24px; padding-top: 22px; border-top: 1px solid #c8d9e5; color: #102435; }
.excel-flow-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.excel-flow-head p { margin: 0; font-size: 14px; font-weight: 700; }
.excel-flow button { min-height: 44px; padding: 9px 16px; border: 1px solid #076fa3; border-radius: 8px; background: white; color: #076fa3; font: inherit; font-size: 13px; cursor: pointer; }
.excel-flow button:hover { background: #eff7fb; }
.excel-flow button:active { background: #dcecf5; }
.excel-flow button:disabled { cursor: wait; color: #526678; border-color: #9cabb6; }
.excel-flow button:focus-visible { outline: 3px solid #1093c9; outline-offset: 4px; }
.excel-flow-scene { position: relative; display: grid; grid-template-columns: 1fr 2fr; align-items: center; gap: 56px; margin: 24px 0 14px; }
.excel-source { padding: 18px 14px; background: white; border: 1px solid #c8d9e5; border-radius: 4px; font-size: 13px; }
.excel-source strong { display: block; margin-bottom: 10px; }
.excel-source span { display: block; }
.excel-sheet { margin: 0; background: white; border: 1px solid #c8d9e5; }
.excel-sheet figcaption { padding: 8px 12px; background: #e8f3ee; color: #24503e; font-size: 13px; font-weight: 700; }
.excel-sheet table { border-collapse: collapse; width: 100%; font-size: 13px; }
.excel-sheet th, .excel-sheet td { text-align: left; padding: 10px 12px; border: 1px solid #dce5eb; }
.excel-sheet th { font-weight: 500; color: #526678; }
.excel-transfer { position: absolute; left: 31%; top: 48%; width: 30px; height: 24px; color: #076fa3; }
.excel-check { margin: 10px 0 0; color: #24503e; font-size: 13px; font-weight: 700; }
.excel-flow [role="status"] { min-height: 3.6em; margin: 0; font-size: 13px; line-height: 1.8; }
.excel-flow[data-stage="send"] .excel-transfer { animation: excel-transfer 850ms cubic-bezier(.16,1,.3,1) both; }
.excel-flow[data-stage="send"] .excel-sheet td span { visibility: hidden; }
.excel-flow[data-stage="write"] .excel-sheet td span { display: inline-block; animation: excel-write 450ms both; }
.excel-flow[data-stage="write"] .excel-sheet td:nth-child(2) span { animation-delay: 250ms; }
.excel-flow[data-stage="send"] .excel-check, .excel-flow[data-stage="write"] .excel-check { visibility: hidden; }
@keyframes excel-transfer { from { transform: translateX(-22px); } to { transform: translateX(28px); } }
@keyframes excel-write { from { clip-path: inset(0 100% 0 0); } to { clip-path: inset(0); } }
@media (max-width: 760px) {
  .excel-flow-head { align-items: flex-start; flex-direction: column; gap: 10px; }
  .excel-flow-scene { grid-template-columns: 1fr; gap: 40px; }
  .excel-source { max-width: 230px; }
  .excel-transfer { position: relative; left: auto; top: auto; margin: -30px 0 -30px 32px; transform: rotate(90deg); }
  .excel-flow[data-stage="send"] .excel-transfer { animation-name: excel-transfer-down; }
  @keyframes excel-transfer-down { from { transform: rotate(90deg) translateX(-10px); } to { transform: rotate(90deg) translateX(10px); } }
}
@media (prefers-reduced-motion: reduce) {
  .excel-flow *, .excel-flow[data-stage] * { animation: none !important; visibility: visible !important; }
}
