/* ============================================================================
   RIGIDECES — la hoja del método de rigideces (pasos-rigidez.js)
   ----------------------------------------------------------------------------
   docs/rigideces.md. Prefijo rk-; solo tokens de tokens.css (se ve igual en
   claro y en oscuro). Las clases sin rk- (st-, m…) son las de hoja.css y
   base.css, que no se editan. La hoja es una libreta: sin tarjetas.

   La matriz con su código (.rk-mat) es una rejilla: una columna para el
   número del renglón, el corchete izquierdo, las columnas de valores y el
   corchete derecho; arriba, el número de cada columna. Los corchetes ocupan
   todos los renglones (grid-row: span --nr). La partición entre libres y
   restringidos es una línea discontinua (.rk-pc a la izquierda de la
   columna, .rk-pr arriba del renglón).
   ========================================================================== */
.rk-mat { display: inline-grid; grid-template-columns: auto 6px repeat(var(--nc), auto) 6px; align-items: center; justify-items: center; vertical-align: middle; row-gap: 2px; }
.rk-mat > span { padding: 1px 7px; white-space: nowrap; }
.rk-mat > .rk-bl, .rk-mat > .rk-br { grid-row: auto / span var(--nr); align-self: stretch; justify-self: stretch; padding: 0; border: 1.5px solid currentColor; }
.rk-mat > .rk-bl { border-right: 0; }
.rk-mat > .rk-br { border-left: 0; }
.rk-mat > .rk-ch, .rk-mat > .rk-rh { font-family: var(--ui); font-size: 11px; color: var(--ink2); padding: 0 5px; }
.rk-mat > .rk-rh:empty, .rk-mat > .rk-h0 { padding: 0; }
.rk-mat > .rk-pc { border-left: 1px dashed var(--sep2); }
.rk-mat > .rk-pr { border-top: 1px dashed var(--sep2); }
.rk-mat .mf { font-size: .8em; }

/* renglones con matrices: se desplazan dentro de su caja si no caben */
.hj-sheet .rk-line { max-width: 100%; overflow-x: auto; overflow-y: hidden; padding: 4px 0; font-size: 16px; line-height: 1.4; white-space: nowrap; }
/* la continuación de una cadena («= …»), con sangría */
.hj-sheet .rk-cont { padding-left: 28px; }
.rk-gap { display: inline-block; width: 32px; }
.hj-sheet .rk-big { font-size: 14px; }
.hj-sheet .rk-fe { font-size: 17px; }
.rk-tab td { white-space: nowrap; }
.rk-tab td .st-muted { font-size: 12px; }
.hj-sheet.is-phone .rk-line { font-size: 14px; }
.hj-sheet.is-phone .rk-big { font-size: 12.5px; }
.hj-sheet.is-phone .rk-fe { font-size: 15px; }

/* En el teléfono, una matriz grande se amplía a pantalla completa (botón
   «Ampliar», data-act rkzoom: hoja.js la copia en una capa .rk-zoom-ov sobre
   la app). En el escritorio el botón no se ve.                             */
.rk-zoom-b { display: none; }
.hj-sheet.is-phone .rk-zoom-b { display: inline-flex; align-items: center; gap: 4px; margin: 2px 0 0; padding: 4px 10px; border: 1px solid var(--sep); border-radius: 999px; background: transparent; color: var(--accent); font: 500 13px/1.2 var(--ui); cursor: pointer; }
.hj-sheet.rk-zoom-ov { position: fixed; inset: 0; z-index: 2000; width: auto; max-width: none; min-height: 0; display: flex; flex-direction: column; border-radius: 0; box-shadow: none; overflow: hidden;
  padding: calc(env(safe-area-inset-top, 0px) + 12px) 12px calc(env(safe-area-inset-bottom, 0px) + 12px); }
.rk-zoom-x { align-self: flex-end; margin-bottom: 10px; padding: 6px 14px; border: 1px solid var(--sep); border-radius: 999px; background: var(--paper); color: var(--accent); font: 500 14px/1.2 var(--ui); cursor: pointer; }
.hj-sheet.rk-zoom-ov .rk-line { flex: 1; overflow: auto; font-size: 17px; white-space: nowrap; }
.hj-sheet.rk-zoom-ov .st-tablewrap { flex: 1; overflow: auto; max-width: none; }

/* al imprimir (o en PDF) no hay desplazamiento: los renglones con matrices se parten en lugar de recortarse */
@media print {
  .hj-sheet .rk-line { white-space: normal; overflow: visible; }
  .rk-zoom-b { display: none !important; }
  /* la tabla de Cross va al ancho de la página, con la viga a la misma escala que sus columnas (en %) */
  .hj-sheet .cr-tab { width: 100% !important; min-width: 0 !important; }
  .hj-sheet .cr-tab tr.cr-fig svg { width: 100%; height: auto; }
  .hj-sheet .cr-tab tr.cr-x { display: table-row !important; }
  .hj-sheet .cr-tab tr.cr-sugg { display: none !important; }
}

/* el cuerpo libre de un elemento de marco (pasos-rigidez.js, elemFBD): acostado en sus ejes */
.hj-sheet .rk-fbdfig svg { max-width: 100%; height: auto; }

/* la dirección de cada barra de armadura junto a su título (barGlyph) */
.hj-sheet .rk-barh { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.rk-bglyph { flex: none; }
.rk-bg-bar { stroke: var(--ink); stroke-width: 2.4; stroke-linecap: round; }
.rk-bg-head { fill: var(--ink); }
.rk-bg-n { fill: var(--ink); }
.rk-bg-arc { fill: none; stroke: var(--accent); stroke-width: 1.3; }

/* la deformada de un marco (frameElastic): exagerada, en el color de los desplazamientos */
.rk-defl { fill: none; stroke: var(--defl); stroke-width: 2.2; stroke-linejoin: round; stroke-linecap: round; }
.rk-defl-n { fill: var(--defl); }

/* la tabla de Cross (pasos-cross.js): los números a la derecha, como en el cuaderno, y la suma subrayada */
.hj-sheet .cr-tab td { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.hj-sheet .cr-tab thead th { text-align: center; }
.hj-sheet .cr-tab tbody th { text-align: left; font-weight: 500; white-space: nowrap; }
.hj-sheet .cr-tab .cr-fd td, .hj-sheet .cr-tab .cr-mep td { color: var(--ink); }
.hj-sheet .cr-tab .cr-sum td, .hj-sheet .cr-tab .cr-sum th { border-top: 1.5px solid currentColor; }
.hj-sheet .cr-tab .cr-more td { text-align: center; color: var(--ink2); white-space: normal; }
/* más de 5 ciclos hasta la tolerancia: se ven 5 y «Mostrar…» abre los demás (hoja.js, crMore) */
.hj-sheet .cr-tab[data-fold]:not(.is-more) tr.cr-x { display: none; }
.hj-sheet .cr-tab.is-more tr.cr-sugg { display: none; }
.hj-sheet .cr-tab .cr-more-b { margin-left: 4px; padding: 2px 10px; border: 1px solid var(--sep); border-radius: 999px; background: transparent; color: var(--accent); font: 500 13px/1.3 var(--ui); cursor: pointer; }
.hj-sheet .cr-tab .cr-more-b:hover { border-color: var(--accent); }
.hj-sheet .cr-tab tr.cr-x:focus { outline: none; }
/* la viga encabeza la tabla (G.beam a 1:1): columnas de ancho fijo; la línea de cada nudo baja por la tabla
   (punteada, como fg-axis) y cada momento va junto a su nudo: a la izquierda (j) o a la derecha (i) de él */
.hj-sheet .cr-tab { table-layout: fixed; }
.hj-sheet .cr-tab tr.cr-fig th { padding: 0; border-bottom: 0; background: none; }
.hj-sheet .cr-tab tr.cr-fig svg { display: block; }
.hj-sheet .cr-tab tr.cr-spans th { text-align: center; vertical-align: bottom; font-weight: 500; color: var(--ink2); font-size: 12px; padding-left: 4px; padding-right: 4px; }
.hj-sheet .cr-tab .cr-cj { text-align: right; padding-right: 8px; }
.hj-sheet .cr-tab .cr-ci { text-align: left; padding-left: 8px; }
.hj-sheet .cr-tab .cr-jl { border-left: 1px dashed var(--ink3); }
.hj-sheet .cr-tab .cr-jr { border-right: 1px dashed var(--ink3); }
.hj-sheet.is-phone .cr-tab td, .hj-sheet.is-phone .cr-tab th { font-size: 12px; }
.hj-sheet.is-phone .cr-tab .cr-cj { padding-right: 5px; }
.hj-sheet.is-phone .cr-tab .cr-ci { padding-left: 5px; }
.hj-sheet .cr-tab col.cr-lab { width: 6.2em; }
.hj-sheet .cr-tab col.cr-errc { width: 9em; }
.hj-sheet .cr-tab col.cr-lab2 { width: 9em; }
.hj-sheet .cr-tab .cr-ok th, .hj-sheet .cr-tab .cr-ok td { background: color-mix(in srgb, var(--accent) 8%, transparent); }
.hj-sheet .cr-tab td.cr-err { white-space: nowrap; }
