/* Geometry Constructor */
.gc-tabs { display: flex; flex-wrap: wrap; gap: .45rem; margin-bottom: .8rem; }
.gc-tabs button { display: flex; align-items: center; gap: .4rem; border: 2px solid var(--pmcq-line, #d7e2e8); background: #fff; color: var(--bs-primary); border-radius: 12px; padding: .45rem .85rem; font-weight: 700; cursor: pointer; }
.gc-tabs button.on { background: var(--bs-primary); border-color: var(--bs-primary); color: #fff; }
[hidden] { display: none !important; }

.gc-main { display: grid; grid-template-columns: 230px minmax(0, 1fr) 320px; gap: 1rem; align-items: start; }
.gc-main2 { grid-template-columns: minmax(0, 1fr) 280px; }
.gc-left, .gc-center, .gc-right { min-width: 0; }
.gc-list { display: flex; flex-direction: column; gap: .35rem; }
.gc-list button { text-align: left; border: 1px solid var(--pmcq-line, #d7e2e8); background: #fff; border-radius: 10px; padding: .45rem .65rem; cursor: pointer; display: flex; flex-direction: column; color: #0b3d5c; }
.gc-list button b { font-size: .9rem; }
.gc-list button span { font-size: .76rem; color: #64748b; }
.gc-list button:hover { background: #f1f6f8; }
.gc-list button.on { background: #e6f0f5; border-color: var(--bs-primary); }
.gc-stage { border: 1px solid var(--pmcq-line, #d7e2e8); border-radius: 14px; overflow: hidden; background: #fbfdff; }
.gc-svg { display: block; width: 100%; height: auto; touch-action: none; user-select: none; -webkit-user-select: none; }
.gc-svg .gc-handle { cursor: grab; outline: none; }
.gc-svg .gc-handle:focus-visible { stroke: #2563eb; stroke-width: 3; }
.gc-draw { cursor: crosshair; }
.gc-p { font-family: system-ui, -apple-system, "Segoe UI", sans-serif; font-size: 22px; font-weight: 700; fill: #0f172a; paint-order: stroke; stroke: #fff; stroke-width: 3.5px; pointer-events: none; }
.gc-t { font-family: system-ui, -apple-system, "Segoe UI", sans-serif; font-size: 18px; font-weight: 700; paint-order: stroke; stroke: #fff; stroke-width: 3.5px; pointer-events: none; }
.gc-card { padding: .9rem; }
.gc-h { font-size: 1.08rem; color: var(--bs-primary); margin: 0 0 .5rem; }
.gc-table th { width: 55%; font-weight: 600; color: #475569; font-size: .86rem; }
.gc-table td { font-weight: 700; color: #0b3d5c; }
.gc-table tr.gc-key td, .gc-table tr.gc-key th { background: #f0fdf4; color: #166534; }
.gc-groups { display: grid; gap: .1rem; font-size: .86rem; margin-top: .5rem; }
.gc-stepnum { font-size: .8rem; font-weight: 700; color: #64748b; text-transform: uppercase; letter-spacing: .04em; }
.gc-progress { display: flex; gap: .3rem; flex-wrap: wrap; margin: .6rem 0; }
.gc-progress button { width: 2rem; height: 2rem; border-radius: 50%; border: 1px solid var(--pmcq-line, #d7e2e8); background: #fff; font-weight: 700; font-size: .85rem; color: #475569; cursor: pointer; }
.gc-progress button.done { background: #16a34a; color: #fff; border-color: #16a34a; }
.gc-progress button.on { background: var(--bs-primary); color: #fff; border-color: var(--bs-primary); }
.gc-tools { display: flex; flex-wrap: wrap; gap: .35rem; margin-bottom: .6rem; }
.gc-tools button { display: inline-flex; align-items: center; gap: .3rem; border: 1px solid var(--pmcq-line, #d7e2e8); background: #fff; color: #0b3d5c; border-radius: 10px; padding: .25rem .6rem; font-size: .84rem; font-weight: 600; cursor: pointer; }
.gc-tools button:hover { background: #eef5f8; }
.gc-tools button.on { background: var(--bs-primary); border-color: var(--bs-primary); color: #fff; }

@media (max-width: 1100px) {
  .gc-main, .gc-main2 { grid-template-columns: minmax(0, 1fr); }
  .gc-list { flex-direction: row; overflow-x: auto; padding-bottom: .3rem; }
  .gc-list button { flex: 0 0 auto; min-width: 11rem; }
}
@media (max-width: 760px) {
  .gc-center .gc-stage { position: sticky; top: 0; z-index: 6; box-shadow: 0 4px 12px rgba(15, 23, 42, .16); }
}
