.coding-stack { display: grid; gap: 20px; min-width: 0; }
.coding-stack .panel { min-width: 0; }
.coding-stack [hidden] { display: none !important; }
.coding-editor { position: relative; display: grid; grid-template-columns: 3.5rem minmax(0, 1fr); margin-top: 8px; border: 1px solid var(--border, #cbd5e1); border-radius: 8px; overflow: hidden; background: #fbfcfe; }
.coding-source, #coding-lines { font-family: ui-monospace, SFMono-Regular, Consolas, 'Liberation Mono', monospace; font-size: 14px; line-height: 1.65; tab-size: 4; }
.coding-source { grid-column: 2; width: 100%; min-height: 320px; padding: 14px; color: #16243a; background: #fbfcfe; border: 0; border-radius: 0; resize: vertical; white-space: pre; overflow: auto; }
.coding-source:focus { outline: 2px solid #2563eb; outline-offset: -2px; }
.coding-source[readonly] { background: #f1f5f9; }
#coding-lines { position: absolute; top: 0; bottom: 0; left: 0; width: 3.5rem; box-sizing: border-box; margin: 0; padding: 14px 10px; text-align: right; color: #64748b; background: #eef2f7; overflow: hidden; user-select: none; border-right: 1px solid #dbe3ef; }
.coding-meta { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px; margin: 10px 0; font-size: 13px; color: #475569; }
.coding-test-list { padding-left: 24px; }
.coding-test-list li { margin-bottom: 10px; }
.coding-pass { color: #166534; }
.coding-stack pre { white-space: pre-wrap; overflow-wrap: anywhere; }
.coding-stack code, .coding-hash { overflow-wrap: anywhere; }
.coding-conflict { margin: 16px 0; padding: 16px; background: #fff7ed; border: 1px solid #fdba74; border-radius: 8px; }
.coding-conflict pre { max-height: 240px; overflow: auto; color: #431407; }
.coding-conflict .btn { margin: 5px; }
.coding-result { display: grid; grid-template-columns: minmax(100px, auto) 1fr; gap: 8px 20px; }
.coding-result dd { margin: 0; overflow-wrap: anywhere; font-family: ui-monospace, Consolas, monospace; }
.coding-stack select { max-width: 100%; }
.coding-stage-nav { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; }
.coding-stage-nav .btn { display: flex; flex-direction: column; align-items: flex-start; justify-content: flex-start; text-align: left; white-space: normal; min-height: 76px; }
.coding-stage-nav [aria-current="step"] { background: var(--accent-soft, #eaf2ff); border-color: #2563eb; color: #163f84; }
.coding-stage-nav span { font-size: 11px; font-weight: 400; line-height: 1.4; margin-top: 6px; }
.coding-next { border-left: 4px solid #2563eb; }
#coding-page-prerequisite { color: #92400e; font-weight: 600; }
#coding-page-title { font-size: 1.2rem; margin-bottom: 8px; }
#coding-findings-summary p { white-space: pre-wrap; overflow-wrap: anywhere; }
.coding-teacher-source { border: 1px solid #cbd5e1; border-radius: 8px; margin-bottom: 14px; }
#coding-hypothesis { min-height: 90px; }
@media (max-width: 640px) {
  .coding-stage-nav { grid-template-columns: 1fr 1fr; }
  .coding-stage-nav .btn { min-height: 66px; }
  .coding-editor { grid-template-columns: 2.5rem minmax(0, 1fr); }
  .coding-source, #coding-lines { font-size: 12px; }
  .coding-source { min-height: 300px; padding: 10px; }
  #coding-lines { width: 2.5rem; padding: 10px 6px; }
  .coding-result { grid-template-columns: 1fr; gap: 4px; }
  .coding-stack .btn-row { flex-wrap: wrap; }
}
