/* directorio.css -- Personas y organizaciones as one page (2026-10-19).
   Layout, sidebar and record bar come from flow.css (the one-page Proyectos),
   so both read the same. Only what this page adds is here. */

.dir-tag { flex: 0 0 auto; font: 10px var(--mono); letter-spacing: .04em; text-transform: uppercase;
  color: var(--muted); white-space: nowrap; }
.fl-sitem.is-flag .dir-tag { color: var(--alarm); }
/* A client's type, coloured by Settings client_type_tags; without a colour, muted. */
.dir-ctype { flex: 0 0 auto; margin-left: 6px; color: var(--muted); }
.fl-sitem.is-owes .fl-sitem-t { color: var(--alarm); }
/* The four role buttons as a 2 x 2 grid: in a 300px sidebar four in a row
   wrapped one onto a line of its own. */
.fl-kinds.dir-roles { display: grid; grid-template-columns: 1fr 1fr; }
.dir-roles .fl-kind { border-right: 1px solid var(--rule); border-bottom: 1px solid var(--rule); }
.dir-roles .fl-kind:nth-child(2n) { border-right: 0; }
.dir-roles .fl-kind:nth-last-child(-n+2) { border-bottom: 0; }

/* A person's record as tabs. */
.dir-tabs { display: flex; flex-wrap: wrap; gap: 0; margin: 4px 0 14px; border-bottom: 1px solid var(--hairline); }
.dir-tab { padding: 7px 12px; border: 0; border-bottom: 2px solid transparent; background: none; cursor: pointer;
  font: 11px var(--mono); letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
.dir-tab:hover { color: var(--ink); }
.dir-tab.is-on { color: var(--ink); border-bottom-color: var(--ink); }

.dir-block { margin: 0 0 26px; }
.dir-h { margin: 0 0 10px; font-family: var(--serif); font-size: 18px; }
.dir-kpis { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 8px; margin: 0 0 10px; }
.dir-kpi { display: flex; flex-direction: column; gap: 2px; padding: 10px 12px; background: var(--card);
  border: 1px solid var(--rule); }
.dir-kpi-l { font: 10px var(--mono); letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
.dir-kpi-v { font-size: 22px; font-weight: 600; color: var(--ink); }
.dir-kpi-s { font-size: 12px; color: var(--muted); }
.dir-kpi.is-bad .dir-kpi-v { color: var(--alarm); }
.dir-kpi.is-good .dir-kpi-v { color: var(--ink); }
.dir .fl-lede { max-width: 70ch; font-size: 13px; color: var(--body); }
.dir-orgval { margin-top: 8px; }

/* edit2: contracts as one table; a contract opens in a window. */
.ct-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 10px; }
.ct-head .micro, .ct-head .dir-h { margin: 0; }
/* The section's black button: one width, so "+ Nuevo contrato" and "+ Añadir persona" match (Paul, 2026-10-28). */
.ct-head .np-create, .dir-addbtn { white-space: nowrap; min-width: 170px; }
.ct-row { cursor: pointer; }
.ct-row:hover td { background: var(--field-focus, #f4f4ef); }
.ct-row.is-past td { color: var(--muted); }
.ct-split { font-size: 12px; }
.ct-split.is-bad { color: var(--alarm, #b4372b); }
.ct-win { width: min(900px, 100%); }
.ct-fields { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 10px 12px; margin-bottom: 12px; }
.ct-f { display: flex; flex-direction: column; gap: 3px; }
.ct-f .cfg-in { width: 100%; box-sizing: border-box; }
.ct-head .st-btn { white-space: nowrap; }

/* edit2: one person's record (persona.js). */
.pr-open { font: 11px var(--mono); color: var(--alarm); white-space: nowrap; }
.pr-aviso { display: flex; align-items: center; justify-content: space-between; gap: 16px; background: var(--fill); border: 1px solid var(--ink); padding: 12px 14px; margin-bottom: 14px; }
.pr-aviso-t { min-width: 0; }
.pr-aviso .np-create { flex: none; }
@media (max-width: 900px) { .pr-aviso { flex-direction: column; align-items: stretch; } }
.pr-sec { background: var(--card); border: 1px solid var(--rule); padding: 12px 14px; margin-bottom: 12px; }
.pr-sec-h { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; margin-bottom: 8px; }
.pr-sec-h h3 { font: 600 14px var(--sans); margin: 0; }
.pr-kpis { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 12px; }
.pr-kpi { display: grid; gap: 2px; min-width: 150px; padding: 8px 12px; background: var(--card); border: 1px solid var(--rule); }
.pr-kpi strong { font: 600 17px var(--mono); }
.pr-kpi.is-bad strong { color: var(--alarm, #b4372b); }
.pr-kpi.is-good strong { color: #2d6b5c; }
.pr-sub { font-size: 12px; color: var(--muted); }
.pr-accs { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px; }
.pr-acc { display: grid; gap: 4px; padding: 12px 14px; border: 1px solid var(--ink); }
.pr-acc strong { font: 700 26px var(--mono); }
.pr-acc strong.is-neg { color: var(--alarm, #b4372b); }
.pr-acc strong.is-pos { color: #2d6b5c; }
.pr-trend { font: 600 12px var(--mono); color: var(--muted); }
.pr-trend.is-up { color: #2d6b5c; }
.pr-trend.is-down { color: var(--alarm, #b4372b); }
.pr-bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 10px; }
.pr-switch { display: flex; gap: 4px; }
.pr-nav { display: flex; align-items: center; gap: 8px; }
.pr-diff { border: 1px solid var(--ink); background: var(--card); padding: 10px 12px; margin-bottom: 12px; }
.pr-diff-r { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 6px; }
.pr-diff .pr-kpi { border-color: var(--rule); }
/* the week, like the planner */
.pr-wk { display: grid; grid-template-columns: 48px repeat(7, minmax(0, 1fr)); border: 1px solid var(--rule); background: var(--card); overflow-x: auto; }
.pr-wk-gut, .pr-wk-day { min-width: 0; border-left: 1px solid var(--rule); }
.pr-wk-gut { border-left: 0; }
.pr-wk-head { height: 36px; display: flex; flex-direction: column; justify-content: center; padding: 0 6px; border-bottom: 1px solid var(--rule); font-size: 12px; }
.pr-wk-head.is-today { background: var(--ink); color: var(--panel-figure, #fff); }
.pr-wk-h { font: 10px var(--mono); color: var(--muted-2); padding: 0 4px; border-top: 1px dotted var(--rule); box-sizing: border-box; }
.pr-wk-col { position: relative; background: repeating-linear-gradient(to bottom, transparent 0, transparent 25px, var(--rule) 25px, var(--rule) 26px); }
.pr-wk-col.is-today { background-color: var(--field-focus, #f4f4ef); }
.pr-wk-blk { position: absolute; left: 3px; right: 3px; box-sizing: border-box; padding: 2px 5px; overflow: hidden; font-size: 11px;
  display: flex; flex-direction: column; background: color-mix(in srgb, var(--dep, #888) 18%, white); border-left: 4px solid var(--dep, #888); }
.pr-wk-blk b { font: 600 11px var(--mono); }
.pr-wk-blk.is-cancelled { opacity: .5; text-decoration: line-through; }
.pr-wk-blk.is-fixed { outline: 1px dashed var(--ink); }
.pr-wk-blk.is-added { box-shadow: inset 0 0 0 2px #2d6b5c; }
.pr-wk-fix { font: 10px var(--mono); color: var(--ink); }
.pr-wk-leave { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font: 600 11px var(--mono);
  color: var(--muted); background: repeating-linear-gradient(45deg, transparent 0 6px, var(--rule) 6px 7px); }
/* month and quarter: a full calendar, each day listing its shifts like the week view (2026-10-28) */
.pr-cal { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; }
.pr-cal.is-quarter { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.pr-cweek, .pr-cgrid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 2px; }
.pr-cweek span { font: 10px var(--mono); color: var(--muted); text-align: left; padding: 0 4px 2px; text-transform: uppercase; }
.pr-cday { min-height: 96px; min-width: 0; padding: 3px 4px; box-sizing: border-box; border: 1px solid var(--rule);
  display: flex; flex-direction: column; gap: 2px; font-size: 11px; background: var(--card); }
.is-quarter .pr-cday { min-height: 64px; font-size: 10px; }
.pr-cday.is-blank { border: 0; background: transparent; }
.pr-cday.is-today { outline: 2px solid var(--ink); }
.pr-cday.is-leave { background: repeating-linear-gradient(45deg, transparent 0 6px, var(--rule) 6px 7px); }
.pr-cday-h { display: flex; justify-content: space-between; }
.pr-cday-h b { font: 600 11px var(--mono); }
.pr-cleave { font: 600 10px var(--mono); color: var(--muted); }
.pr-cshift { display: flex; flex-direction: column; min-width: 0; padding: 1px 4px; box-sizing: border-box;
  background: color-mix(in srgb, var(--dep, #888) 18%, white); border-left: 4px solid var(--dep, #888); }
.pr-cshift b { font: 600 10px var(--mono); }
.pr-cshift span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pr-cshift.is-cancelled { opacity: .5; text-decoration: line-through; }
.pr-cshift.is-fixed { outline: 1px dashed var(--ink); }
.pr-cshift.is-added { box-shadow: inset 0 0 0 2px #2d6b5c; }
@media (max-width: 899px) { .pr-cal.is-quarter { grid-template-columns: minmax(0, 1fr); } }
/* month, quarter, year: days */
.pr-months { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 12px; }
.pr-months.is-year { grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); }
.pr-month { background: var(--card); border: 1px solid var(--rule); padding: 8px; }
.pr-month-h { display: flex; justify-content: space-between; margin-bottom: 4px; font-size: 13px; }
.pr-month-w, .pr-month-g { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
.pr-month-w span { font: 10px var(--mono); color: var(--muted); text-align: center; }
.pr-day { min-height: 30px; padding: 2px 3px; box-sizing: border-box; border: 1px solid var(--rule); display: flex; flex-direction: column; font-size: 10px; }
.pr-day[style] { background: color-mix(in srgb, var(--dep) 22%, white); }
.pr-day.is-blank { border: 0; }
.pr-day.is-today { outline: 2px solid var(--ink); }
.pr-day.is-leave { background: repeating-linear-gradient(45deg, transparent 0 4px, var(--rule) 4px 5px); }
.pr-day.is-changed { box-shadow: inset 0 -3px 0 var(--ink); }
.pr-day-n { color: var(--muted); }
.pr-day-h { font: 600 11px var(--mono); }
.pr-t tr.is-off td { color: var(--muted); }
.pr-t tr.is-future td { color: var(--muted); font-style: italic; }
.pr-tag { font: 10px var(--mono); text-transform: uppercase; letter-spacing: .05em; border: 1px solid currentColor; padding: 0 4px; color: var(--alarm, #b4372b); }
.pr-docs { margin-bottom: 8px; }
.pr-docrow { display: flex; align-items: baseline; gap: 12px; padding: 3px 0; border-bottom: 1px solid var(--rule); font-size: 13px; }
.pr-doc { flex: 1; }
.pr-docwin { width: min(1000px, 100%); }
.pr-docframe { width: 100%; height: 72vh; border: 1px solid var(--rule); background: #fff; margin-top: 10px; }
.pr-acc-f { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px; margin-bottom: 10px; }
.pr-inline { display: flex; gap: 6px; align-items: center; }
.pr-link { margin-top: 8px; }

/* The running hours balance in the team summary (persona.js balanceBadge, Paul 2026-10-20): green over,
   red owed, the tint and weight growing with its size against one month of contract (--k, 0..1); past
   30 % of that month it is filled and a warning line follows. */
.pr-bal { display: inline-block; padding: 1px 6px; font-family: var(--mono); font-weight: 600; white-space: nowrap; }
.pr-bal.is-neg { color: var(--alarm); background: rgba(180, 55, 43, calc(var(--k, .5) * .22)); font-weight: calc(400 + var(--k, .5) * 400); }
.pr-bal.is-pos { color: #2d6b5c; background: rgba(45, 107, 92, calc(var(--k, .5) * .22)); font-weight: calc(400 + var(--k, .5) * 400); }
.pr-bal.is-warn { font-weight: 800; color: #fff; }
.pr-bal.is-warn.is-neg { background: var(--alarm); }
.pr-bal.is-warn.is-pos { background: #2d6b5c; }
.pr-bal-warn { font: 600 11px var(--mono); letter-spacing: .04em; text-transform: uppercase; }
.pr-bal-warn.is-neg { color: var(--alarm); }
.pr-bal-warn.is-pos { color: #2d6b5c; }

/* Figures and their words in tables (standing rule, Paul 2026-10-20): a figure column is as narrow as its
   figures and right-aligned; the words beside it sit in their own left-aligned column, on one line, close to it. */
.pr-t th.num, .pr-t td.num { width: 1%; white-space: nowrap; }
.pr-t td.num + td { padding-left: 4px; }
.pr-t td .micro { white-space: nowrap; }

/* Side margins (Paul, 2026-10-20: "fix the margins"). This page borrows Proyectos' full-height layout,
   whose main area had only 18px each side and let tables run the whole width. Here every view gets the
   gutter the other pages have (app.css main, 20px, plus the cards' own padding), and a table is as wide
   as what is in it, not the window. Only for this page (.dir); Proyectos keeps its own. */
.dir .fl-main { padding: 18px 32px 36px; }
.dir .fl-bar { padding-left: 32px; padding-right: 32px; }
.dir .fl-embed > :not(.pv):not(.is-wrap):not(.fl-rpage) { padding: 18px 32px 36px; }
.dir .st-table, .dir .pr-t { width: auto; min-width: 60%; max-width: 100%; }
@media (max-width: 899px) {
  .dir .fl-main, .dir .fl-embed > :not(.pv):not(.is-wrap):not(.fl-rpage) { padding: 14px 16px 28px; }
  .dir .fl-bar { padding-left: 16px; padding-right: 16px; }
}
/* Ausencias › Historial as a log (2026-10-28): quarter ends stand apart from the events */
.pr-t tr.is-quarter td { background: var(--surface-2, #f1f1ec); }
/* Sidebar groups: about 20 rows each, scrolling inside, so every heading stays in view (2026-10-28) */
.dir .fl-side { display: flex; flex-direction: column; }
.dir .fl-side > * { flex: none; }
/* the open lists share the column's height: at most ~20 rows, at least 4, every heading in view */
.dir .fl-side > .dir-glist { overflow-y: auto; }
/* a list of more than 20 shares what is left of the column (at most ~20 rows, at least 4); shorter ones show whole */
.dir .fl-side > .dir-glist.is-long { flex: 0 1 auto; max-height: 500px; min-height: 100px; }
.dir-gsearch { margin: 2px 12px 6px 30px; width: calc(100% - 42px); padding: 4px 8px; font-size: 12px; }

/* Editing from the person record (Paul, 2026-10-28): the planner link and "+ Añadir ausencia" between
   the period switch and the arrows; an empty day's dashed "+ turno"; a shift opens its window. */
.pr-acts { display: flex; gap: 12px; align-items: center; margin-left: auto; }
.pr-acts .np-create, .pr-sec-h .np-create { margin-left: auto; white-space: nowrap; }
.pr-wk-slot { position: absolute; left: 3px; right: 3px; border: 1.5px dashed var(--muted); background: transparent;
  font: 600 12px var(--mono); color: var(--muted); cursor: pointer; }
.pr-wk-slot:hover { color: var(--ink); border-color: var(--ink); }
.pr-wk-blk.is-click { cursor: pointer; }
/* a shift the person asked for, waiting for whoever plans */
.pr-wk-blk.is-asked { background: transparent; border: 1.5px dashed var(--dep, var(--muted)); }
.pr-wk-blk.is-click:hover { outline: 2px solid var(--ink); }
.pr-edit { max-width: calc(100vw - 32px); max-height: none; display: flex; flex-direction: column; gap: 12px; }
.pr-fgrid { display: grid; gap: 12px 14px; align-items: end; }
.pr-f { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.pr-f .cfg-in { width: 100%; box-sizing: border-box; height: 36px; text-align: left; }
.pr-f .cfg-in.is-num { text-align: right; }
.pr-fgrid .fl-wiz-opt { padding: 10px 12px; }
.pr-edit-note { margin: 0; font-size: 12px; }
.pr-edit-k { color: var(--ink); }
.pr-edit-acts { display: flex; flex-wrap: wrap; gap: 8px; }
.pr-edit-foot { display: flex; gap: 10px; align-items: center; padding-top: 12px; border-top: 1px solid var(--rule); }
.pr-edit-foot .fl-msg { margin: 0 auto 0 0; }
@media (max-width: 900px) { .pr-fgrid { grid-template-columns: 1fr !important; } }
.dir-teamlink { margin-left: auto; margin-right: 15px; align-self: center; }

/* The contract window (Paul, 2026-10-28): sections under a rule, option cards, figures with their unit. */
.ct-form { display: flex; flex-direction: column; gap: 12px; }
.ct-body { display: flex; flex-direction: column; gap: 12px; }
.ct-sec { display: flex; flex-direction: column; gap: 10px; padding-top: 12px; border-top: 1px solid var(--rule); }
.ct-sec-h { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; }
.ct-sec-h .micro { color: var(--ink); }
.ct-sec-h .fl-faint { font-size: 12px; }
/* The contract window's rows (divs); the contracts table's rows (tr.ct-row) keep being table rows. */
div.ct-row { display: grid; gap: 12px 14px; align-items: end; }
div.ct-row .fl-wiz-opt { padding: 10px 12px; }
.ct-f .cfg-in { height: 36px; text-align: left; }
.ct-f .cfg-in.is-num, .ct-pct { text-align: right; }
.ct-unit { display: flex; align-items: center; gap: 8px; }
.ct-unit .cfg-in { width: 110px; flex: none; }
.ct-unit .fl-faint { font-size: 13px; }
.ct-pct { width: 70px; height: 36px; }
.ct-tot { display: flex; justify-content: space-between; align-items: center; }
.ct-foot { display: flex; gap: 12px; align-items: flex-end; padding-top: 14px; border-top: 1px solid var(--rule); }
.ct-foot .linkbtn { align-self: center; }
.ct-foot .ct-grow { flex: 1; }
.ct-foot .np-create { height: 36px; white-space: nowrap; }
@media (max-width: 900px) { div.ct-row { grid-template-columns: 1fr !important; } .ct-foot { flex-wrap: wrap; } }

/* "+ Añadir persona" (Paul, 2026-10-28; alta.js): the + by "Equipo", the steps on the left, the state. */
.dir-plus { border: 1px solid var(--ink); background: var(--ink); color: var(--card); font: 600 12px var(--mono); width: 20px; height: 20px;
  line-height: 16px; padding: 0; cursor: pointer; margin-left: 6px; }
.fl-rtitle .dir-teamlink + .dir-addbtn { margin-left: 0; }
.fl-rtitle .dir-addbtn { margin-right: 15px; }
.al-wrap { display: flex; gap: 40px; align-items: flex-start; padding: 8px 0; }
.al-steps { list-style: none; margin: 0; padding: 0; width: 230px; flex: 0 0 230px; border-bottom: 1px solid var(--rule); }
.al-step { display: flex; align-items: center; gap: 10px; padding: 8px 0; border-top: 1px solid var(--rule); color: var(--muted); }
.al-mark { width: 24px; height: 24px; display: flex; align-items: center; justify-content: center; border: 1px solid currentColor;
  background: var(--card); font: 600 12px var(--mono); }
.al-step.is-done, .al-step.is-on { color: var(--ink); }
.al-step.is-on .al-mark { background: var(--ink); color: var(--card); border-color: var(--ink); }
.al-step.is-on .al-name { font-weight: 600; }
.al-body { flex: 1; max-width: 760px; display: flex; flex-direction: column; gap: 14px; }
.al-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 16px; }
.al-grid .al-wide { grid-column: span 2; }
.al-grid .cfg-in { width: 100%; box-sizing: border-box; height: 36px; }
.al-note { font-size: 12px; margin: 0; }
.al-err { font-size: 12px; color: var(--alarm); }
.al-err:empty { display: none; }
.al-grid .ct-f.is-off .micro, .al-grid .ct-f.is-off .al-note { color: var(--faint); }
.al-grid .cfg-in:disabled { background: var(--paper); border-color: var(--rule); color: var(--faint); cursor: not-allowed; }
.al-grid .cfg-in.is-bad { border-color: var(--alarm); box-shadow: inset 0 0 0 1px var(--alarm); }
.al-acts { display: flex; justify-content: space-between; align-items: center; gap: 12px; border-top: 1px solid var(--rule); padding-top: 14px; }
.al-acts .fl-msg { margin: 0; flex: 1; text-align: right; }
.al-kpis { display: flex; gap: 10px; flex-wrap: wrap; }
.al-state td { vertical-align: top; }
.al-ok { width: 28px; font: 600 14px var(--mono); color: var(--alarm, #b4372b); }
.al-ok.is-ok { color: #2d6b5c; }
.al-two { display: flex; gap: 10px; align-items: center; justify-content: flex-end; }
.al-mail { background: var(--card); border: 1px solid var(--rule); padding: 14px 16px; }
.al-mail pre { margin: 0; white-space: pre-wrap; font: 14px/1.6 var(--sans); }
@media (max-width: 900px) { .al-wrap { flex-direction: column; gap: 14px; } .al-steps { width: 100%; flex: none; } .al-grid { grid-template-columns: 1fr; } .al-grid .al-wide { grid-column: auto; } }
.al-papers { margin-top: 6px; }
.al-up { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.al-up .cfg-in { height: 36px; }
/* The ten steps and the one-screen steps (Paul, 2026-11-03, the alta walkthrough). */
.al-steps .al-grp { font: 10px var(--mono); letter-spacing: .08em; text-transform: uppercase; color: var(--faint); padding: 10px 0 2px; border-top: 0; }
.al-steps .al-step { padding: 5px 0; }
.al-body.al-compact { gap: 8px; }
.al-sect { border-top: 1px solid var(--rule); padding-top: 8px; }
.al-sect > .micro { display: block; margin-bottom: 6px; color: var(--ink); }
.al-grid.al-c3 { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px 12px; }
.al-grid.al-c4 { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px 12px; }
.al-grid.al-c3 .al-wide, .al-grid.al-c4 .al-wide { grid-column: 1 / -1; }
.al-stack { display: flex; flex-direction: column; gap: 10px; min-width: 0; }
/* One-line labels, so the fields of a row stay level (Paul, 2026-11-03: "its misaligned"). */
.al-grid.al-c3 .ct-f > .micro, .al-grid.al-c4 .ct-f > .micro, .al-stack .ct-f > .micro { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.al-stack .cfg-in, .al-grid .al-ro { width: 100%; box-sizing: border-box; height: 36px; }
.al-ro { display: flex; align-items: center; background: var(--paper); border-color: var(--rule); font-variant-numeric: tabular-nums; }
.al-grid .cfg-in:disabled, .al-stack .cfg-in:disabled { background: repeating-linear-gradient(135deg, var(--paper) 0 6px, #e2e1da 6px 12px); }
.al-kpis-line .pr-kpi { flex-direction: row; align-items: baseline; gap: 8px; padding: 5px 10px; }
.al-compact .al-acts { padding-top: 10px; }
.al [hidden] { display: none !important; }
.al-bike { display: block; width: 220px; height: auto; }
.al-bike.is-small { width: 84px; flex: none; }
.al-wait { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 28px 12px 24px; border: 1px solid var(--rule); background: var(--card); text-align: center; color: var(--muted); }
.al-waitline { display: flex; align-items: center; gap: 12px; color: var(--muted); font-size: 13px; }
.al-tabs { display: flex; flex-direction: column; border-top: 1px solid var(--rule); }
.al-tab { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px; align-items: baseline; padding: 7px 8px; border: 0; border-bottom: 1px solid var(--rule); background: none; text-align: left; color: var(--ink); font: inherit; cursor: pointer; }
.al-tab.is-on { background: var(--paper); box-shadow: inset 3px 0 0 var(--ink); font-weight: 600; }
.al-pdf { width: 100%; height: 70vh; border: 1px solid var(--ink); background: #fff; }
.al-epis { border: 1px solid var(--rule); padding: 10px 12px; display: flex; flex-direction: column; gap: 4px; }
.al-epi { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 6px; align-items: center; font-size: 13px; }
.al-yn { border: 1px solid var(--rule); background: var(--card); padding: 1px 9px; font-size: 12px; cursor: pointer; }
.al-yn.is-on { background: var(--ink); color: var(--card); border-color: var(--ink); }
.al-mats { display: flex; flex-wrap: wrap; gap: 6px 14px; margin-top: 6px; font-size: 13px; }
.al-coopdocs { display: flex; flex-direction: column; gap: 8px; }
/* By hand is yellow (CLAUDE.md, how pages behave 5). */
.al-fill { background: var(--fill); }
.al-tsel.is-bad { border-color: var(--alarm); box-shadow: inset 0 0 0 1px var(--alarm); }
.al-epiadd { display: grid; grid-template-columns: minmax(0, 2fr) 90px 150px auto minmax(0, 1fr); gap: 8px; align-items: center; margin-top: 10px; }
@media (max-width: 900px) { .al-epiadd { grid-template-columns: minmax(0, 1fr); } }
.al-pnote { max-width: 560px; margin: 18px 0; font-size: 15px; line-height: 1.45; }
.al-upcontract { position: relative; display: inline-block; margin-top: 10px; cursor: pointer; }
.al-rpapers { display: flex; flex-direction: column; gap: 10px; margin-bottom: 14px; }
.al-rpaper { display: grid; grid-template-columns: 18px minmax(0, 1fr) 170px; gap: 8px; align-items: center; cursor: pointer; }
.al-rnotify { display: flex; gap: 8px; align-items: center; margin-bottom: 14px; cursor: pointer; }
.al-listo { display: flex; gap: 22px; align-items: center; padding: 10px 0 6px; }
.al-listo svg { flex: none; }
.al-listo h3 { font-family: Georgia, serif; font-size: 20px; font-weight: 400; margin: 0 0 6px; }
.al-listo p { margin: 0 0 6px; max-width: 34em; }
.al-ss { display: flex; justify-content: space-between; align-items: center; gap: 12px; border: 1px solid var(--juan, #c08a2e); padding: 12px 14px; flex-wrap: wrap; }
.al-ss.is-done { border-color: var(--rule); }
.al-ss > div { display: flex; flex-direction: column; gap: 2px; }
.al-pop { width: 600px; max-width: calc(100vw - 32px); }
.al-prob { padding: 2px 4px 10px; }
.al-prob h4 { font-size: 14.5px; margin: 14px 0 4px; }
.al-prob p { margin: 0; font-size: 14px; line-height: 1.55; }
.al-urlrow { display: flex; gap: 8px; margin-top: 10px; }
.al-url { flex: 1; min-width: 0; font: 12px var(--mono); }
.al-qr { margin-top: 12px; }
.al-qr img, .al-qr canvas { border: 6px solid #fff; outline: 1px solid var(--rule); }
@media (max-width: 900px) { .al-listo { flex-direction: column; align-items: flex-start; } }
@media (max-width: 900px) { .al-grid.al-c3, .al-grid.al-c4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.pr-tag.is-ok { color: #2d6b5c; }

/* The signing task on every Inicio page (app.js signTask, Paul 2026-10-29). */
.sign-task { display: flex; align-items: center; gap: 14px; border: 1px solid var(--ink); background: var(--card); padding: 10px 14px; margin: 0 0 14px; }
.sign-task b { flex: 1; font-weight: 600; }
.sign-task .np-create { text-decoration: none; }
/* Narrower than steps + content: the content goes under the steps rather than scrolling sideways. */
.al-wrap { flex-wrap: wrap; }
.al-body { min-width: min(100%, 480px); }
/* Your digital certificate, in your own entry of Ajustes > usuarios (app.js certBox). */
.us-cert { border-top: 1px solid var(--rule); padding-top: 8px; margin-top: 4px; }
.us-cert-up { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }

/* ---- "Modificar nómina" (persona.js nominaBox / nominaWindow; Paul, 2026-11-02; Dinero design file) ---- */
.nm-wiz { width: min(780px, 100%); }
.nm-drw .nm-wiz { width: 100%; }
.nm-list { display: flex; flex-direction: column; gap: 10px; }
.nm-list .nm-opt { width: 100%; }
.nm-wiz:focus { outline: none; }
.nm-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 10px; margin: 10px 0; }
.nm-grid4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 899px) { .nm-grid4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.nm-opt { min-height: 64px; padding: 10px 14px; border: 1px solid var(--rule); background: var(--card); font: 14px var(--sans); color: var(--ink);
  cursor: pointer; text-align: left; display: flex; flex-direction: column; gap: 3px; justify-content: center; position: relative; }
.nm-opt b { font-weight: 600; font-size: 15px; }
.nm-opt:hover { border-color: var(--ink); }
.nm-opt.is-on { background: var(--ink); color: var(--card); border-color: var(--ink); }
.nm-os { font-size: 12px; opacity: .8; line-height: 1.35; }
.nm-up { max-width: 320px; }
.nm-file { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.nm-qh { display: flex; align-items: baseline; gap: 12px; margin: 2px 0 12px; }
.nm-qn { font: 600 12px var(--mono); color: var(--muted); min-width: 14px; }
.nm-q { margin: 0; font: 600 20px var(--sans); }
.nm-amt { display: inline-flex; align-items: center; border: 1px solid var(--ink); background: var(--card); margin: 4px 0; }
.nm-bb { width: 48px; height: 48px; border: 0; background: var(--card); font: 600 22px var(--mono); cursor: pointer; color: var(--ink); }
.nm-bb:hover { background: var(--surface-2); }
.nm-amt-v { display: flex; align-items: center; justify-content: center; gap: 4px; min-width: 170px; padding: 0 10px; font: 600 24px var(--mono);
  border-left: 1px solid var(--rule); border-right: 1px solid var(--rule); height: 48px; cursor: text; }
.nm-amt-in { width: 120px; border: 0; background: transparent; text-align: right; font: 600 24px var(--mono); color: var(--ink); padding: 0; }
.nm-amt-in:focus { outline: 2px solid var(--link, #2A4FD6); outline-offset: 2px; }
.nm-chips { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 8px 0; }
.nm-chips .nm-note { margin: 0 4px 0 0; }
.nm-chip { border: 1px solid var(--rule); background: var(--card); padding: 4px 10px; font: 600 13px var(--mono); cursor: pointer; border-radius: 14px; color: var(--ink); }
.nm-chip:hover { border-color: var(--ink); }
.nm-chip.is-on { background: var(--ink); color: var(--card); border-color: var(--ink); }
.nm-iva { border: 0; background: none; padding: 0; color: var(--link, #2A4FD6); text-decoration: underline; font: inherit; cursor: pointer; }
.nm-lab { display: flex; flex-direction: column; gap: 6px; font: 600 12px var(--mono); text-transform: uppercase; letter-spacing: .04em; color: var(--muted); }
.nm-in { width: 100%; max-width: 520px; padding: 12px 14px; border: 1px solid var(--ink); font: 16px var(--sans); text-transform: none; letter-spacing: 0; color: var(--ink); background: var(--card); }
.nm-date { max-width: 220px; margin-top: 4px; }
.nm-note { font-size: 12px; color: var(--muted); margin: 4px 0; }
.nm-warn { font-size: 13px; color: var(--alarm, #B4372B); margin: 6px 0; }
.nm-warn:empty { display: none; }
.nm-line { font-size: 13px; color: var(--ink); background: var(--card); border-left: 3px solid var(--ink); padding: 8px 12px; margin: 10px 0; }
.nm-t { width: 100%; margin: 4px 0 10px; font-size: 13px; }
.nm-t .nm-tn { color: var(--muted); font-size: 12px; }
.nm-t tr.is-band td { font: 600 11px var(--mono); text-transform: uppercase; letter-spacing: .04em; color: var(--muted); padding-top: 12px; border-bottom: 1px solid var(--ink); }
.nm-t tr.is-tot td { font-weight: 700; border-top: 1px solid var(--ink); }
.nm-gest { display: flex; gap: 12px; border: 1px solid var(--rule); background: var(--card); padding: 8px 12px; font-size: 13px; margin: 6px 0; }
.nm-gest-k { font: 600 11px var(--mono); text-transform: uppercase; letter-spacing: .04em; color: var(--muted); white-space: nowrap; padding-top: 2px; }
.st-btn.is-off { opacity: .4; cursor: not-allowed; }

/* Deactivated people (Paul, 2026-11-02): under the last active one, closed until opened, in grey. */
.dir-offhead { display: block; width: 100%; text-align: left; background: none; border: 0; padding: 6px 0 4px 16px;
  font: 12px var(--mono); color: var(--muted); cursor: pointer; }
.dir-offhead:hover { color: var(--ink); }
.fl-sitem.is-off .fl-sitem-t { color: var(--faint); }
.dir-offblock { margin: 6px 0 18px; border-top: 1px solid var(--rule); }
.dir-offblock .dir-offhead { padding-left: 6px; }
.dir-offlist { list-style: none; margin: 0; padding: 0 0 0 22px; display: grid; gap: 4px; }
.dir-offlist a { color: var(--faint); }
.dir-offtag { color: var(--faint); margin-left: 8px; }
.dir-active { margin-left: auto; display: inline-flex; align-items: center; gap: 8px; }
.dir-offyes { border-color: var(--alarm); color: var(--alarm); }
/* a client's Libro mayor from Odoo (2026-11-03) */
.dir-ledger { margin: 14px 0 0; }
.dir-lg-r { display: grid; gap: 0 10px; align-items: center; padding: 5px 0; border-top: 1px solid var(--rule); font-size: 14px; }
.dir-lg-r .num { text-align: right; font-variant-numeric: tabular-nums; }
.dir-lg-r.is-head { border-top: 0; border-bottom: 1px solid var(--ink); }
.dir-lg-r.is-total { font-weight: 700; border-top: 1px solid var(--ink); }

/* the small bike beside a slow action's message (alta.js busy()) */
.al-busy { display: inline-flex; align-items: center; gap: 10px; color: var(--muted); }
.al-busy img { width: 84px; height: auto; flex: none; }

/* The alta's explanations behind an "i" beside a field's title (alta.js tipMark), the Horario clock picker
   (timePicker) and the pay over the contract's length (payTable). Paul, 2026-11-03. */
.al-lab { display: inline-flex; align-items: center; gap: 6px; }
.al-tip { display: inline-grid; place-items: center; width: 15px; height: 15px; border: 1px solid var(--muted);
  border-radius: 50%; font: italic 600 10px/1 Georgia, serif; color: var(--muted); text-transform: none; letter-spacing: 0; }
.al-tipw:hover .al-tip, .al-tipw:focus .al-tip, .al-tipw.is-open .al-tip { color: var(--card); background: var(--ink); border-color: var(--ink); }
/* The app's hover box (.hl-tip), opening leftwards from the i so a right-hand field's box stays on the page. */
.al-tipw .hl-tip { left: auto; right: -6px; text-transform: none; letter-spacing: 0; }
.al-timef { position: relative; display: flex; }
.al-timef > input { flex: 1; min-width: 0; padding-right: 34px; }
.al-clock { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); width: 22px; height: 22px; padding: 0; border: 0; cursor: pointer;
  background: no-repeat center/16px url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23141413' stroke-width='1.5'%3E%3Ccircle cx='8' cy='8' r='6.5'/%3E%3Cpath d='M8 4.5V8l2.5 1.5'/%3E%3C/svg%3E"); }
.al-timep { position: absolute; top: calc(100% + 4px); left: 0; z-index: 30; padding: 10px; background: var(--card); border: 1px solid var(--hairline);
  box-shadow: 0 4px 14px rgba(0, 0, 0, .12); display: grid; gap: 8px; }
.al-timep[hidden] { display: none; }
.al-timerows { display: grid; gap: 6px; }
.al-timerow { display: grid; grid-template-columns: auto 110px auto 110px; align-items: center; gap: 6px; font-size: 13px; }
.al-timeacts { display: flex; justify-content: space-between; gap: 8px; }
.al-span2 { grid-column: 1 / -1; }
.al-pay td:first-child { white-space: nowrap; }
.al-pay { border-collapse: collapse; font-size: 13px; width: auto; }
.al-pay th { font: 400 11px/1.2 'Courier New', monospace; color: var(--muted); text-align: left; padding: 0 14px 4px 0; text-transform: uppercase; }
.al-pay td { padding: 3px 14px 3px 0; border-top: 1px solid var(--rule); }
.al-pay .num { text-align: right; font-variant-numeric: tabular-nums; }
.al-pay .al-paytot td { font-weight: 600; border-top: 1px solid var(--ink); }
/* The review, one paper at a time (alta.js review): a thin row of numbered steps, the paper full width. */
.al-psteps { display: flex; flex-wrap: wrap; gap: 6px; list-style: none; margin: 0 0 10px; padding: 0; }
.al-pstep { display: inline-flex; align-items: center; gap: 6px; padding: 5px 10px 5px 6px; border: 1px solid var(--rule); background: var(--card);
  font: inherit; font-size: 12.5px; color: var(--muted); cursor: pointer; }
.al-pstep.is-on { border-color: var(--ink); color: var(--ink); }
.al-pstep.is-ok .al-pmark { background: var(--ink); color: var(--card); border-color: var(--ink); }
.al-pstep.is-bad { color: var(--alarm); border-color: var(--alarm); }
.al-pmark { display: inline-grid; place-items: center; width: 18px; height: 18px; border: 1px solid currentColor; border-radius: 50%; font-size: 11px; }
.al-pnow { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; margin: 4px 0 8px; }
.al-pnow strong { font-size: 15px; }
.al-pnow .fl-faint { flex-basis: 100%; font-size: 13px; }
.al-pbad { display: grid; gap: 6px; padding: 18px; border: 1px solid var(--alarm); background: var(--card); color: var(--alarm); }
.al-pbad span { color: var(--body); }
.al-alldone { display: grid; gap: 4px; padding: 18px; border: 1px solid var(--rule); background: var(--card); margin-bottom: 8px; }
.al-review .al-pdf { width: 100%; }
.al-grid .ct-f > select, .al-grid .ct-f > input { min-width: 0; width: 100%; box-sizing: border-box; }
/* A title with an i: the words are cut to one line, the i and its bubble are not. */
.al-grid .ct-f > .micro.al-lab, .al-stack .ct-f > .micro.al-lab { display: flex; overflow: visible; max-width: 100%; }
.al-labt { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.al-tipw { flex: none; }
/* The review's head and steps on one line each (Paul, 2026-11-03). */
.al-rhead { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 8px; }
.al-rhead .fl-wiz-q { margin: 0; }
.al-rhead .al-waitline { margin: 0; }
.al-review .al-psteps { flex-wrap: nowrap; }
.al-review .al-psteps > li { flex: 1 1 0; min-width: 0; }
.al-review .al-pstep { width: 100%; min-width: 0; }
.al-pname { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.al-pmark { flex: none; }
.al-step.is-link { cursor: pointer; }
.al-step.is-link:hover .al-name, .al-step.is-link:focus .al-name { text-decoration: underline; text-underline-offset: 3px; }
.al-step.is-link:focus { outline: none; }
.al-paycards { flex-wrap: nowrap; }
.al-paycards .pr-kpi { flex: 1 1 0; min-width: 0; max-width: 240px; }
.al-paycards .pr-sub { white-space: pre-line; }
@media (max-width: 900px) { .al-paycards { flex-wrap: wrap; } .al-paycards .pr-kpi { flex: 1 1 140px; } }
/* Distribución as day toggles (alta.js dayPicker). */
.al-days { display: flex; gap: 4px; }
.al-day { width: 32px; height: 32px; border: 1px solid var(--hairline); background: var(--card); font: 600 12px var(--mono); color: var(--muted); cursor: pointer; }
.al-day.is-on { background: var(--ink); color: var(--card); border-color: var(--ink); }
/* Jornada as blocks (alta.js blocksEditor) and the time picker that opens on the chosen value (timeSel). */
.al-blocks { display: grid; gap: 8px; justify-items: start; }
.al-block { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.al-bw { font-size: 13px; color: var(--muted); }
.al-bsum { font-size: 12px; min-width: 120px; }
.al-bdel { width: 28px; height: 28px; border: 1px solid var(--rule); background: var(--card); color: var(--muted); cursor: pointer; font-size: 16px; line-height: 1; }
.al-bdel:hover { border-color: var(--ink); color: var(--ink); }
.al-tselw { position: relative; display: inline-block; }
.al-tsel { min-width: 70px; height: 32px; padding: 0 10px; border: 1px solid var(--hairline); background: var(--card); font: 500 14px var(--mono); color: var(--ink); cursor: pointer; }
.al-tsel.is-empty { color: var(--faint); }
.al-tpop { position: absolute; top: calc(100% + 4px); left: 0; z-index: 40; display: flex; background: var(--card); border: 1px solid var(--hairline);
  box-shadow: 0 4px 14px rgba(0, 0, 0, .12); }
.al-tcol { display: flex; flex-direction: column; height: 196px; overflow-y: auto; scrollbar-width: thin; }
.al-tcol + .al-tcol { border-left: 1px solid var(--rule); }
.al-titem { width: 52px; padding: 6px 0; border: 0; background: none; font: 14px var(--mono); color: var(--ink); cursor: pointer; flex: none; }
.al-titem:hover { background: var(--field-focus); }
.al-titem.is-on { background: var(--ink); color: var(--card); }
/* «El contrato» on one screen (Paul, 2026-11-03): the form, and a column on the right with the pay and the totals. */
.al-body:has(> .al-two) { max-width: 1120px; }
.al-two { display: grid; grid-template-columns: minmax(0, 1fr) 250px; gap: 28px; align-items: start; }
.al-main { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.al-side { position: sticky; top: 12px; display: flex; flex-direction: column; gap: 8px; padding-top: 6px; }
.al-side .al-paycards { flex-direction: column; flex-wrap: nowrap; }
.al-side .al-paycards .pr-kpi { max-width: none; }
.al-side .al-kpis-line { flex-direction: column; flex-wrap: nowrap; gap: 6px; }
.al-side .al-kpis-line .pr-kpi { min-width: 0; }
.al-side .al-paycards { gap: 6px; }
.al-side .al-paycards .pr-kpi { padding: 6px 10px; gap: 1px; }
.al-side .al-paycards .pr-kpi strong { font-size: 17px; }
.al-side .al-paycards .pr-sub, .al-side .al-kpis-line .pr-sub { font-size: 11.5px; line-height: 1.35; white-space: normal; }
.al-side .al-kpis-line .pr-kpi { padding: 6px 10px; gap: 1px; }
.al-side .al-kpis-line .pr-kpi strong { font-size: 17px; }
/* A block on one line in the narrower form column. */
.al-two .al-day { width: 27px; height: 30px; }
.al-two .al-days { gap: 3px; }
.al-two .al-block { gap: 6px; flex-wrap: nowrap; }
.al-two .al-tsel { min-width: 60px; height: 30px; padding: 0 6px; }
.al-two .al-bsum { min-width: 0; white-space: nowrap; }
.al-two .al-bdel { width: 26px; height: 26px; flex: none; }
/* The hidden fields that carry the papers' wording are not drawn (.cfg-in would show them as empty boxes). */
.al input[type=hidden] { display: none; }
.al-side .al-note { font-size: 11.5px; }
@media (max-width: 1100px) { .al-two { grid-template-columns: minmax(0, 1fr); } .al-side { position: static; } }
.al-two .al-main .cfg-in { height: 32px; padding-top: 4px; padding-bottom: 4px; }
.al-two .al-main .al-acts { padding-top: 4px; }
.al-two .al-main .al-sect > .micro { margin-bottom: 4px; }

/* Easy wins of the findings pass (Paul, 2026-11-03). */
.dir .fl-embed .pr-name { display: none; }
.fl-sitem.is-orgval.is-flag .dir-tag { color: var(--muted); }
button.dir-kpi { text-align: left; font: inherit; cursor: pointer; }
button.dir-kpi.is-click:hover { border-color: var(--ink); }
button.dir-kpi.is-on { box-shadow: inset 3px 0 0 var(--ink); }
.dir-nonebox { display: flex; flex-wrap: wrap; gap: 6px 16px; margin: -4px 0 12px; }
.dir-nonebox[hidden] { display: none; }
button.pr-acc { text-align: left; font: inherit; background: none; cursor: pointer; color: inherit; }
button.pr-acc:hover { background: var(--surface-2, #f1f1ec); }
.pr-kpis-side { align-content: flex-start; margin-bottom: 0; }
.st-docs { white-space: nowrap; }
.st-docs a { margin-right: 12px; }

/* Equipo with its tabs (Paul, 2026-11-04): Cierre's tabs and table; the calendar of the whole team. */
.eq { font-size: 14px; }
.eq .cm-tbs { margin: 0 0 14px; }
.eq .cm-tb-b { min-width: 1120px; }
.eq .cm-row-g > div { padding-top: 7px; padding-bottom: 7px; }
.eq .cm-row-g.is-head > div, .eq .cm-row-g.is-grp > div { padding-top: 2px; padding-bottom: 3px; }
.eq .cm-row-g.is-total { font-weight: 700; border-top: 1px solid var(--ink); }
.eq .cm-saldo { background: #dfddd3; }
.eq .cm-row-g.is-sub { font-size: 14px; }
.eq-two { grid-template-columns: minmax(0, 1fr) 340px; }
.eq-grp { cursor: pointer; }
.eq-grp:hover { background: var(--card); }
.eq-caret { background: none; border: 0; padding: 0 6px 0 0; font: inherit; color: var(--muted); cursor: pointer; }
.eq-mix { display: flex; height: 8px; width: 84px; }
.eq-h { font: 700 15px var(--serif); margin: 0 0 6px; }
.eq-att { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 2px 10px; padding: 7px 0; border-top: 1px solid #d8d6cc; }
.eq-att > :first-child { justify-self: start; }
.eq-att b { color: #8a5a00; }
.eq-sub { grid-column: 1 / -1; color: var(--muted); font-size: 13px; }
.eq-attb { color: inherit; text-decoration: none; border-bottom: 1px solid var(--rule); font-size: 14px; }
.eq-acc { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 4px 6px; }
.eq-acc .num { text-align: right; font-weight: 700; }
.eq-mon { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; margin: 0 0 10px; }
.eq-mon strong { font: 700 17px var(--serif); }
.eq-slip { width: 26px; height: 26px; padding: 0; border: 0; background: var(--accent-purple); color: var(--card); font: inherit; line-height: 26px; text-align: center; cursor: pointer; justify-self: end; }
.eq-slip:hover { background: var(--ink); }
.eq-nom { display: grid; grid-template-columns: 300px minmax(0, 1fr); gap: 26px; height: calc(100vh - 150px); }
.eq-nom-pdf { display: flex; flex-direction: column; min-width: 0; }
.eq-nom-pdf iframe { flex: 1; width: 100%; border: 1px solid var(--hairline); background: var(--card); }
.eq-nom-pick { display: flex; gap: 10px; margin-bottom: 6px; }
@media (max-width: 900px) { .eq-nom { grid-template-columns: minmax(0, 1fr); height: auto; } .eq-nom-pdf iframe { height: 70vh; flex: none; } }
.eq-arr { border: 1px solid var(--hairline); background: var(--card); width: 26px; height: 26px; padding: 0; font: inherit; color: inherit; cursor: pointer; }
.eq-k { font-size: 13px; color: var(--muted); }
.eq-cal { display: grid; font-size: 12px; min-width: 1120px; border-bottom: 1px solid var(--hairline); }
.eq-cal > div { border-top: 1px solid #d8d6cc; min-height: 42px; display: flex; flex-direction: column; align-items: stretch; justify-content: center; }
.eq-cal > .eq-d, .eq-cal > button.eq-d { font: 10px var(--mono); text-align: center; color: var(--muted); min-height: 32px; border: 0; background: none; padding: 0; display: block; }
.eq-cal > div.eq-d { display: flex; flex-direction: row; align-items: center; justify-content: flex-end; }
.eq-cal > button.eq-d { cursor: pointer; }
.eq-cal > button.eq-d:hover { color: var(--ink); }
.eq-cal > button.eq-d.is-today { color: var(--ink); font-weight: 700; box-shadow: inset 0 -2px 0 0 var(--ink); }
.eq-cal .is-we { background: #ecebe3; }
.eq-cal > .eq-n { font-size: 14px; padding-right: 10px; align-items: flex-start; }
.eq-cal > .eq-t { text-align: right; font-variant-numeric: tabular-nums; font-weight: 600; }
.eq-cal > .eq-tt { text-align: center; font-size: 11.5px; font-weight: 600; }
.eq-cell { flex: 1; display: flex; flex-direction: column; background: none; border: 0; padding: 0; font: inherit; cursor: pointer; min-height: 40px; }
.eq-cell.is-draft { opacity: .55; }
.eq-c { flex: 1; margin: 1px; display: flex; align-items: center; justify-content: center; color: #fff; font-size: 11.5px; font-variant-numeric: tabular-nums; }
.eq-v { flex: 1; margin: 1px; display: flex; align-items: center; justify-content: center; font-size: 11px; color: #5d3d00; border: 1px solid #8a5a00;
  background: repeating-linear-gradient(45deg, #fff, #fff 3px, #e3c98c 3px, #e3c98c 6px); }
.eq-v.is-pending { border-style: dashed; }
.eq-gone { margin-top: 14px; }
.eq-h2 { margin-top: 14px; }
.eq-acts { display: flex; gap: 8px; justify-content: flex-end; }
.eq-wait { margin: 0 0 20px; }
.eq-cal > .eq-n .eq-sub { font-size: 11px; }
.fl-rtitle .eq-add { margin-left: auto !important; }
