/* Et Prik Stock – tillæg til dashboardets base.css */
.l-short { display: none; }
@media (max-width: 560px) { .l-long { display: none; } .l-short { display: inline; } }
section.tab-panel { margin-bottom: 0; }
.panel-sec { margin: 0 0 44px; }
.panel-sec > h2 { font-size: 1.5rem; font-weight: 400; color: var(--ink); margin: 0 0 6px; }
.panel-sec > .sub { color: var(--muted); font-size: .9rem; margin: 0 0 16px; max-width: 860px; }
.toolbar { display: flex; flex-wrap: wrap; gap: 12px 16px; align-items: flex-end; margin: 0 0 22px; }
.fld { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.fld > span { font-size: .7rem; color: var(--muted); text-transform: uppercase; letter-spacing: 1px; }
.fld small { color: var(--muted); font-size: .74rem; }
input.in, select.in, textarea.in {
  font-family: inherit; font-weight: 300; font-size: .92rem; color: var(--ink);
  border: 1px solid #d5d8dd; border-radius: var(--r-btn); padding: 9px 11px; background: #fff; min-width: 0; width: 100%;
  box-shadow: inset 0 1px 2px rgba(0,0,0,.03);
}
input.in:focus, select.in:focus, textarea.in:focus { outline: none; border-color: var(--blue); box-shadow: 0 0 0 3px var(--blue-tint); }
input.in:disabled, select.in:disabled { background-color: var(--bg); color: var(--muted); }
/* Ens select-styling (23.10.2026): egen chevron i stedet for browserens pil, så pilen sidder samme sted
   og er lodret centreret i Chrome, Safari/WebKit og Firefox – også i kompakte grids (batch/Givet/Årsag/Type). */
select, select.in, .filters select {
  -webkit-appearance: none; -moz-appearance: none; appearance: none;
  padding: 9px 36px 9px 11px; line-height: 1.25; height: 40px; box-sizing: border-box; vertical-align: middle;
  background-color: #fff;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%235b6470' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 12px center; background-size: 12px 8px;
  text-overflow: ellipsis; white-space: nowrap; overflow: hidden; cursor: pointer;
}
select::-ms-expand { display: none; }
select:disabled, select.in:disabled { cursor: default; opacity: 1; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%23a9afb7' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); }
/* samme højde og linjehøjde for felter og dropdowns, så de flugter i rækkerne */
input.in:where(:not([type=checkbox]):not([type=radio])) { line-height: 1.25; height: 40px; box-sizing: border-box; }
input.num { text-align: right; font-variant-numeric: tabular-nums; }
input.qty { width: 84px; }
.btn { font-family: inherit; font-size: .78rem; font-weight: 500; letter-spacing: 1px; text-transform: uppercase; color: var(--ink);
  background: #fff; border: 1px solid var(--ink); border-radius: var(--r-btn); min-height: 40px; padding: 0 16px; cursor: pointer; white-space: nowrap; }
.btn:hover { background: var(--bg); }
.btn.primary { background: var(--ink); color: #fff; }
.btn.primary:hover { background: #000; }
.btn.small { min-height: 32px; padding: 0 10px; font-size: .68rem; }
.btn.danger { color: var(--bad); border-color: var(--bad); }
.btn:disabled { opacity: .45; cursor: not-allowed; }
.linkbtn { background: none; border: 0; padding: 0; font: inherit; font-size: .84rem; color: var(--link); cursor: pointer; }
.linkbtn:hover { text-decoration: underline; }
.linkbtn.bad { color: var(--bad); }
.card.form-card { padding: 22px 24px; }
.form-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px 18px; }
.form-grid .span2 { grid-column: span 2; }
.form-grid .span4 { grid-column: 1 / -1; }
.sales-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 22px; }
.sales-grid .card .value { font-size: 1.7rem; }
.sales-grid .card input.in { font-size: 1.2rem; font-weight: 400; }
.chip-row { display: inline-flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.vpill.v-big { font-size: .74rem; padding: 6px 11px; }
.problems { background: var(--bad-tint); color: var(--bad); border-radius: var(--r-card); padding: 14px 18px; margin: 0 0 18px; font-size: .88rem; }
.problems ul { margin: 6px 0 0; padding-left: 18px; }
.okbox { background: var(--good-tint); color: var(--good); border-radius: var(--r-card); padding: 14px 18px; margin: 0 0 18px; font-size: .9rem; }
.infobox { background: var(--blue-tint); color: var(--ink); border-radius: var(--r-card); padding: 14px 18px; margin: 0 0 18px; font-size: .88rem; }
.toast { position: fixed; left: 50%; bottom: 24px; transform: translateX(-50%); z-index: 80; background: var(--ink); color: #fff; padding: 12px 18px; border-radius: 6px; box-shadow: var(--shadow-lift); font-size: .9rem; max-width: 92vw; }
.toast.err { background: var(--bad); }

/* Tabeller i appen: må gerne ombryde, ingen vandret scroll */
.table-wrap.fit { overflow-x: visible; }
table.data.app { table-layout: auto; }
table.data.app th { cursor: default; }
table.data.app th:hover { color: var(--muted); }
table.data.app td, table.data.app th { white-space: normal; }
table.data.app td.nw, table.data.app th.nw { white-space: nowrap; }
table.data.app td.l, table.data.app th.l { text-align: left; }
table.data.app td .sub2 { display: block; font-size: .76rem; color: var(--muted); font-weight: 300; }
table.data.app tr.grp-first td { border-top: 1px solid var(--line); }
table.data.app tr.row-warn { background: rgba(224,161,0,.07); }
table.data.app tr.row-bad { background: rgba(184,33,5,.05); }
table.data.app tr.row-muted td { color: var(--faint); }
table.data.app td.diff-pos { color: var(--good); font-weight: 500; }
table.data.app td.diff-neg { color: var(--bad); font-weight: 500; }
table.data.app tfoot td { font-weight: 500; border-top: 1px solid var(--line); border-bottom: 0; }
.cause-cell { display: flex; flex-direction: column; gap: 6px; min-width: 190px; }
.usage-line { display: grid; grid-template-columns: minmax(0, 2.2fr) minmax(0, 1fr) 96px 132px 28px; gap: 8px; align-items: center; }
.u-amt { display: flex; flex-direction: column; align-items: flex-end; line-height: 1.2; font-size: 13px; white-space: nowrap; }
.u-amt .u-unit { color: var(--muted); font-size: 12px; }
.u-amt .u-sum { font-weight: 600; font-variant-numeric: tabular-nums; }
.usage-line + .usage-line { margin-top: 6px; }
.rm { width: 28px; height: 28px; border-radius: 50%; border: 1px solid #d5d8dd; background: #fff; color: var(--muted); cursor: pointer; line-height: 1; }
.rm:hover { border-color: var(--bad); color: var(--bad); }
/* Handlingsbjælke (Dagsafslutning, Startoptælling): almindelig blok nederst i indholdet – ikke sticky */
.actionbar { position: static; margin-top: 18px; background: transparent; border-top: 1px solid var(--line); padding: 16px 0 0; display: flex; flex-wrap: wrap; gap: 10px 14px; align-items: center; justify-content: space-between; }
.actionbar .fld { flex: 1 1 320px; }
.actionbar .btns { display: flex; gap: 10px; flex-wrap: wrap; }
.exp-panel { padding: 14px 18px 18px 30px; }
.exp-panel table.queries { width: 100%; }
.kv { display: grid; grid-template-columns: max-content 1fr; gap: 4px 14px; font-size: .84rem; }
.kv dt { color: var(--muted); } .kv dd { margin: 0; color: var(--ink); }
pre.jsn { white-space: pre-wrap; word-break: break-word; font-size: .74rem; background: var(--bg); padding: 10px 12px; border-radius: 4px; margin: 6px 0 0; }
.flag-list { margin: 0; padding-left: 18px; font-size: .88rem; }
.flag-list li { margin: 3px 0; }
.empty { color: var(--muted); font-style: italic; }
.test-banner { background: rgba(224,161,0,.18); color: #7a5a00; border-radius: 6px; padding: 10px 14px; margin-bottom: 16px; font-size: .88rem; }

@media (max-width: 960px) {
  .sales-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .form-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
/* Mobil/tablet på højkant: tabeller bliver til kort */
@media (max-width: 760px) {
  table.data.cards thead { display: none; }
  table.data.cards, table.data.cards tbody, table.data.cards tfoot { display: block; }
  table.data.cards tr { display: grid; grid-template-columns: 1fr 1fr; gap: 4px 12px; padding: 12px 14px; border-bottom: 1px solid var(--line-soft); }
  table.data.cards td { display: block; border: 0; padding: 2px 0; text-align: left !important; font-size: .86rem; }
  table.data.cards td[data-l]::before { content: attr(data-l); display: block; font-size: .64rem; text-transform: uppercase; letter-spacing: .8px; color: var(--muted); }
  table.data.cards td.full { grid-column: 1 / -1; }
  table.data.cards tr.grp-first td { border-top: 0; }
  .usage-line { grid-template-columns: minmax(0, 1fr) 72px minmax(78px, auto) 28px; }
  .usage-line .bsel { grid-column: 1 / -1; }
  .cause-cell { min-width: 0; }
  .exp-panel { padding: 10px; }
}
@media (max-width: 520px) {
  .sales-grid { grid-template-columns: 1fr; gap: 14px; }
  .form-grid { grid-template-columns: 1fr; }
  .form-grid .span2 { grid-column: auto; }
  .toolbar .fld { flex: 1 1 100%; }
  .actionbar .btns { width: 100%; } .actionbar .btns .btn { flex: 1 1 auto; }
  .panel-sec > h2 { font-size: 1.3rem; }
}
.cause-cell[hidden], [hidden] { display: none !important; }

/* Roller */
.prim-btn[hidden] { display: none !important; }
.missing-cost { border-left: 4px solid #e0a100; }
.cost-in { width: 110px; }
.warnbox { background: #fff7e0; color: #6b4e00; border-left: 4px solid #e0a100; border-radius: var(--r-card); padding: 14px 18px; margin: 0 0 18px; font-size: .88rem; }
.warnbox ul { margin: 6px 0 0; padding-left: 18px; }
.cost-row { display: inline-flex; gap: 8px; align-items: center; flex-wrap: wrap; }

/* Header: logo (det simple Et Prik-mærke) + "Stock" til venstre; bruger · rolle + diskret "Log ud" samlet yderst til højre */
.user-box { display: flex; flex-direction: column; align-items: flex-end; gap: 3px; flex: 0 0 auto; min-width: 0;
  font-size: .84rem; line-height: 1.25; color: var(--muted); text-align: right; }
.user-id { white-space: nowrap; color: var(--muted); }
.user-id b { font-weight: 500; color: var(--ink); }
.logout-form { margin: 0; display: inline-flex; }
.logout-link { display: inline-flex; align-items: center; gap: 5px; background: none; border: 0; padding: 2px 0; margin: 0;
  font: inherit; font-size: .84rem; font-weight: 400; letter-spacing: 0; text-transform: none; color: var(--muted); cursor: pointer; white-space: nowrap; }
.logout-link:hover, .logout-link:focus-visible { color: var(--ink); text-decoration: underline; text-underline-offset: 3px; }
.logout-link:focus-visible { outline: 2px solid var(--blue); outline-offset: 2px; border-radius: 2px; }
.logout-link .exit-ic { flex: 0 0 auto; }
.site-head-inner > .prim-switch { margin-left: auto; }   /* hovedfaner højrestillet, lige til venstre for brugerblokken */
.user-box-d { margin-left: 28px; }
.user-box-m { display: none; }
/* Under 1024 px (tablet/mobil) flyttes bruger-blokken ned ved dato-pillen i hero, i samme diskrete stil */
@media (max-width: 1023px) {
  .user-box-d { display: none; }
  .user-box-m { display: flex; flex-direction: row; align-items: center; gap: 12px; margin-top: 10px; }
  .prim-btn { flex: 0 0 auto; }
  /* Sikkerhedsnet: passer fanerne ikke, kan de skubbes vandret i headeren – siden selv scroller aldrig sidelæns */
  .prim-switch { min-width: 0; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; padding: 2px 0; }
  .prim-switch::-webkit-scrollbar { display: none; }
}
/* Underfaner (samme mønster som dashboardet): grå bjælke under hero, kun for den aktive hovedfane */
#subnav .navwrap-inner { padding-top: 18px; padding-bottom: 0; }
#subnav + .wrap { padding-top: 22px; }
.pill-row { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.login-body .site-head-inner { justify-content: flex-start; }
.login-body .login-word { display: inline !important; }
.login-card { max-width: 440px; }
.login-card { margin: 8px 0 40px; }
.login-body footer { max-width: 440px; }
.login-form { display: flex; flex-direction: column; gap: 16px; }
.login-form .btn { width: 100%; min-height: 44px; margin-top: 4px; }
.login-note { color: var(--muted); font-size: .8rem; margin: 18px 0 0; }
/* Dagsafslutning i to trin */
.sub-tabs .step-mark { display: inline-block; margin-left: 6px; color: var(--good, #1a7f4b); font-weight: 700; }
.sub-tabs button[aria-selected="true"] .step-mark { color: inherit; }
.rev-card { padding: 18px 22px; }
table.rev { width: 100%; max-width: 640px; }
table.rev td { padding: 8px 0; border-bottom: 1px solid var(--line, #e6e6e6); }
table.rev td.nw { text-align: right; }
table.rev tr.rev-sum td { border-bottom: 2px solid var(--ink, #1a1a1a); }
table.rev .rabat-in { width: 9.5em; text-align: right; }
.softwarn { margin-top: 14px; background: rgba(224,161,0,.14); color: #6b4f00; border-radius: 6px; padding: 12px 14px; font-size: .9rem; max-width: 760px; }
.softwarn.ok { background: var(--good-tint); color: var(--good); }
.ready-box { margin: 22px 0 0; border-radius: var(--r-card); padding: 14px 18px; font-size: .9rem; }
.ready-box ul { margin: 6px 0 4px; padding-left: 18px; }
.ready-box.wait { background: rgba(224,161,0,.14); color: #6b4f00; }
.ready-box.go { background: var(--good-tint); color: var(--good); }
@media (max-width: 560px) { table.rev .rabat-in { width: 7.5em; } .rev-card { padding: 14px 14px; } }
/* Handlingsbjælke: note-felt og knapper i samme højde, bundjusteret på én linje */
.actionbar { align-items: flex-end; }
.actionbar .btns { align-items: flex-end; }
.actionbar input.in, .actionbar select.in, .actionbar .btn { height: 42px; min-height: 42px; box-sizing: border-box; }
.actionbar .btn { display: inline-flex; align-items: center; justify-content: center; }
.actionbar input.in { padding-top: 0; padding-bottom: 0; }

/* Hovedfaner: 5 faner for admin (Dagsafslutning, Varemodtagelse, Lager, Økonomi, Historik) – korte navne under 1024 px, så de passer på én linje uden vandret scroll */
.p-short { display: none; }
@media (max-width: 1023px) { .prim-btn .p-long { display: none; } .prim-btn .p-short { display: inline; } }

/* Historik i almindeligt dansk (23.10.2026) */
.h-detail { text-transform: none; letter-spacing: 0; }
.h-detail .h-lead { margin: 0 0 10px; font-weight: 600; }
.h-detail .h-sub { margin: 14px 0 6px; font-size: .78rem; text-transform: uppercase; letter-spacing: .06em; color: var(--muted); }
.h-kv { display: grid; grid-template-columns: max-content 1fr; gap: 4px 18px; margin: 0; }
.h-kv dt { color: var(--muted); }
.h-kv dd { margin: 0; }
.h-list { margin: 0; padding-left: 18px; }
.h-list li { margin: 2px 0; }
.h-arrow { color: var(--muted); padding: 0 4px; }
#log-table tr.log-mine td:first-child { box-shadow: inset 3px 0 0 var(--good); }
@media (max-width: 600px) { .h-kv { grid-template-columns: 1fr; gap: 0; } .h-kv dt { margin-top: 6px; font-size: .8rem; } }

/* Trin 1: kolonneoverskrift "Salgspris" over à-pris og linjebeløb – samme grid som .usage-line, så højre kant flugter */
.usage-head { display: grid; grid-template-columns: minmax(0, 2.2fr) minmax(0, 1fr) 96px 132px 28px; gap: 8px; align-items: end; }
.usage-head .uh-lbl { grid-column: 1 / 4; }
.usage-head .uh-price { grid-column: 4; text-align: right; }
.usage-head.m { display: none; }
@media (max-width: 760px) {
  .usage-head.m { display: grid; grid-template-columns: minmax(0, 1fr) 72px minmax(78px, auto) 28px; margin-bottom: 4px;
    font-size: .64rem; text-transform: uppercase; letter-spacing: .8px; color: var(--muted); }
  .usage-head.m .uh-lbl { grid-column: 1 / 3; }
  .usage-head.m .uh-price { grid-column: 3; }
  table.data.cards td.uh-td[data-l]::before { content: none; display: none; }
}
#sup-table .sup-n { width: 100%; min-width: 200px; }
#sup-table td .btn { margin: 2px 0; }
/* Skrivebeskyttet værdi (f.eks. Lagerkorrektion › Nuværende antal): almindelig tekst uden ramme, samme højde som felterne, så den flugter med dem */
.in.ro { display:flex; align-items:center; min-height: 40px; box-sizing: border-box; background: transparent; border-color: transparent; box-shadow: none; padding-left: 0; padding-right: 0; font-weight: 700; color: var(--ink); font-variant-numeric: tabular-nums; cursor: default; }
.in.ro.empty { font-weight: 400; color: var(--muted); }
/* Mobil: underfaner må bryde om på to linjer i stedet for at skjule en fane uden for skærmen (f.eks. admin Lager med 4 underfaner) */
@media (max-width: 560px) { nav.sub-tabs { flex-wrap: wrap; overflow-x: visible; margin-right: 0; padding-right: 0; } }

/* Historik-typechips: neutrale, dæmpede farver – én pr. type (ikke grøn/gul, som bruges til Stemte/Afvigelse) */
.vpill.htype { font-weight: 600; border: 1px solid rgba(27,33,26,.10); }
.htype-dag { background: #e6ebf2; color: #2c3e55; }
.htype-modt { background: #efe9e1; color: #5a4632; }
.htype-korr { background: #efe6ee; color: #5a3552; }
.htype-start { background: #e9e9e4; color: #45453b; }
.htype-lev { background: #e3eeee; color: #2d5052; }
.htype-bruger { background: #ece6f3; color: #4a3a63; }
.htype-pris { background: #ebe7f3; color: #44386a; }
.htype-vac { background: #e4ecf5; color: #1f4a73; }
.htype-ydelse { background: #f2e8e6; color: #6a3a32; }
.htype-import { background: #ececec; color: #444; }
#log-table td.htype-cell { white-space: nowrap; }

/* Søgefelter: smallere, med × til at rydde (vises kun når der står noget) */
.toolbar .search-fld { flex: 0 1 340px; }
.sbox { position: relative; display: block; }
.sbox .in.sq { width: 100%; padding-right: 38px; }
.sbox .sx { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); width: 28px; height: 28px; border: 0; background: transparent; color: var(--faint, #888); font-size: 1.25rem; line-height: 1; cursor: pointer; border-radius: 50%; padding: 0; }
.sbox .sx:hover { color: var(--ink, #111); background: rgba(0,0,0,.06); }
.sbox .in.sq:placeholder-shown + .sx { display: none; }
@media (max-width: 700px) { .toolbar .search-fld { flex: 1 1 100%; } }

/* Varemodtagelse pr. følgeseddel (23.10.2026): hoved én gang + linjer som på papiret */
.rc-lines-h { font-size: .78rem; font-weight: 500; text-transform: uppercase; letter-spacing: 1px; color: var(--muted); margin: 26px 0 10px; }
.rl { border: 1px solid var(--line, #e6e6e6); border-radius: var(--r-card); padding: 10px 14px 12px; background: #fff; }
.rl + .rl { margin-top: 10px; }
.rl.rl-bad { border-color: var(--bad); box-shadow: inset 3px 0 0 var(--bad); }
.rl-head { display: flex; align-items: center; justify-content: space-between; min-height: 28px; margin-bottom: 6px; }
.rl-no { font-size: .72rem; font-weight: 500; text-transform: uppercase; letter-spacing: 1px; color: var(--muted); }
.rl-grid { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1.3fr) minmax(0, 1fr) minmax(0, .7fr); gap: 12px 14px; }
.rl-grid.rl-admin { grid-template-columns: minmax(0, 2fr) minmax(0, 1.3fr) minmax(0, 1fr) minmax(0, .7fr) minmax(0, .9fr); }
.rl-new { margin-top: 12px; }
.rl-msg:empty { display: none; }
.rl .rl-msg { margin-top: 8px; font-size: .8rem; color: var(--muted); }
.rl-err { margin-top: 8px; color: var(--bad); font-size: .86rem; font-weight: 500; }
.rc-addrow { display: flex; flex-wrap: wrap; gap: 8px 14px; align-items: center; margin-top: 12px; }
.rc-addrow .hint { font-size: .84rem; color: var(--muted); }
.rc-submit { margin-top: 18px; display: flex; flex-wrap: wrap; gap: 10px; }
.rc-postnote { margin: 0; }
#rc-headerr { margin-top: 0; }
#rc-docs tr.rc-doc { cursor: pointer; }
#rc-docs tr.rc-doc.open td { background: var(--bg); }
.rc-doc-panel .h-kv { margin-bottom: 4px; }
.rc-doc-panel table.rc-lines { width: 100%; margin-top: 4px; }
.rc-late-wrap { margin-top: 14px; }
.rc-late-form { margin-top: 12px; }
.rc-late-form .infobox { margin: 0 0 12px; }
.rc-late-form .fld { margin-top: 12px; }
@media (max-width: 960px) {
  .rl-grid, .rl-grid.rl-admin { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .rl-grid .rl-vf { grid-column: 1 / -1; }
}
@media (max-width: 760px) {
  .rc-doc-panel table.rc-lines tr { padding: 10px 0; }
  #rc-docs tr.rc-doc-exp { padding: 0; }
  .rc-submit .btn.primary { flex: 1 1 100%; }
}
.rc-rule { margin: 18px 0 0; padding: 10px 14px; border-left: 3px solid var(--warn, #c98a00); background: var(--bg); font-size: .86rem; line-height: 1.45; }
.rc-rule-help { margin: 0 0 14px; font-weight: 500; }

/* Brugere (23.10.2026): koden vises én gang */
.pw-once { border-left: 4px solid var(--warn, #d08a00); margin: 0 0 22px; }
.pw-once .pw-dl { display: grid; grid-template-columns: max-content 1fr; gap: 6px 14px; margin: 10px 0 14px; }
.pw-once dt { color: var(--muted, #667); }
.pw-once code { font-size: 1.05em; user-select: all; overflow-wrap: anywhere; }
.pw-once .pw-code { font-size: 1.25em; letter-spacing: .04em; }

/* Skift kode (23.10.2026) */
@media (max-width: 1023px) { .user-box-m { flex-wrap: wrap; row-gap: 4px; } }
.pw-dlg { border: 0; border-radius: 12px; padding: 22px 24px; width: min(440px, calc(100vw - 32px)); box-sizing: border-box; box-shadow: 0 12px 40px rgba(0,0,0,.25); }
.pw-dlg::backdrop { background: rgba(20, 25, 35, .45); }
.pw-dlg form { display: grid; gap: 12px; }
.pw-dlg .fld { display: grid; gap: 4px; }
.pw-dlg .in { width: 100%; box-sizing: border-box; }
.pw-dlg .in-bad { border-color: var(--red, #c0392b); }
.pw-show { display: flex; align-items: center; gap: 8px; font-size: .9rem; color: var(--muted); }
.pw-err:empty { display: none; }
.pw-actions { display: flex; gap: 10px; flex-wrap: wrap; }
.pw-foot { margin: 4px 0 0; font-size: .85rem; }
/* Session-advarsel (24.10.2026): udløb pga. inaktivitet / absolut tid nærmer sig, eller logget ud (indtastninger er gemt i fanen) */
.sess-warn { position: fixed; left: 50%; top: 12px; transform: translateX(-50%); z-index: 90; display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px;
  background: #fff7e0; color: var(--ink); border: 1px solid #e3c46b; border-radius: 6px; box-shadow: var(--shadow-lift); padding: 10px 14px; font-size: .9rem; max-width: min(720px, 94vw); }
.sess-warn[hidden] { display: none; }
.sess-warn[data-kind="out"] { background: #fdecea; border-color: #e7a59d; }
.sess-warn .sw-btn { flex: none; }
/* Faneskift henter friske data (24.10.2026): den gamle side dæmpes kort, så gamle tal ikke ligner de aktuelle */
.nav-loading .tab-panel.active { opacity: .45; pointer-events: none; transition: opacity .12s .08s; }
.nav-loading body { cursor: progress; }
/* Vis tomme batches (v56, 25.10.2026): kompakt afkrydsning i samme højde som søgefeltet (lodret centreret),
   kort forklaring på egen linje under hele rækken. Wrapperen er display:contents, så label og note bliver selvstændige flex-børn. */
.empty-tog { display: contents; }
.empty-tog .empty-lbl { display: inline-flex; align-items: center; gap: 9px; height: 40px; box-sizing: border-box; padding: 0 14px 0 12px; flex: none; align-self: flex-end;
  border: 1px solid #d5d8dd; border-radius: var(--r-btn); background: #fff; box-shadow: inset 0 1px 2px rgba(0,0,0,.03);
  font-size: .88rem; font-weight: 500; color: var(--ink); cursor: pointer; text-transform: none; letter-spacing: 0; white-space: nowrap; user-select: none; -webkit-tap-highlight-color: transparent; }
.empty-tog .empty-lbl:hover { border-color: #b9bec6; }
.empty-tog .empty-lbl input { width: 17px; height: 17px; margin: 0; flex: none; accent-color: var(--link); cursor: pointer; }
.empty-tog .empty-lbl:has(input:focus-visible) { outline: none; border-color: var(--blue); box-shadow: 0 0 0 3px var(--blue-tint); }
.empty-tog.on .empty-lbl { border-color: var(--link); background: #f3f7fe; }
.empty-tog .empty-note { flex: 1 1 100%; order: 10; margin: -6px 0 0; font-size: .82rem; line-height: 1.4; color: var(--muted); }
/* v57: stille variant i formularer – lille dæmpet tekst-afkrydsning direkte under feltet, ingen boks */
.empty-tog.quiet { display: block; margin-top: 3px; }
.empty-tog.quiet .empty-lbl { height: auto; min-height: 28px; padding: 2px 0; border: 0; background: none; box-shadow: none; gap: 7px;
  font-size: .8rem; font-weight: 400; color: var(--muted); }
.empty-tog.quiet .empty-lbl:hover { color: var(--ink); }
.empty-tog.quiet .empty-lbl input { width: 14px; height: 14px; }
.empty-tog.quiet.on .empty-lbl { background: none; color: var(--ink); }
.empty-tog.quiet .empty-lbl:has(input:focus-visible) { box-shadow: none; outline: 2px solid var(--blue-tint); outline-offset: 2px; }
.fld > span > label { cursor: inherit; }
.form-grid .fld[hidden] { display: none; }
/* v58: Lagerkorrektion – fast 2 kolonner × 3 rækker (Vaccine | Batch, Nuværende antal | Nyt faktisk antal, Årsag | Note), felterne flugter.
   Nuværende antal står altid som en skrivebeskyttet, grå felt-boks i samme højde som felterne ("–" indtil vaccine og batch er valgt). */
.corr-grid { align-items: start; }
/* v59: desktop – lige store rækkeafstande. "Vis tomme batches" ligger i rækkeafstanden under Batch
   (absolut placeret), så den ikke gør række 1 højere; alle rækkeafstande er ens (36px). Mobil uændret. */
@media (min-width: 961px) {
  .corr-grid { row-gap: 36px; }
  #corr-form .corr-batch-f { position: relative; }
  #corr-form .corr-batch-f .empty-tog.quiet { position: absolute; left: 0; top: 100%; margin-top: 3px; }
}
#corr-form #corr-cur { height: 40px; min-height: 40px; padding: 0 11px; border: 1px solid #d5d8dd; background: var(--bg); border-radius: var(--r-btn); box-shadow: none; }
/* v60: tom tilstand = pladsholder-tekst i samme stil som Note-feltets placeholder; altid én linje */
#corr-form #corr-cur { display: flex; align-items: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
#corr-form #corr-cur.empty { color: #757575; font-weight: 300; font-size: .92rem; font-style: normal; }
@media (max-width: 700px) { .toolbar .empty-tog .empty-lbl { align-self: flex-start; } }
.exp-panel .lg-hid { margin: 8px 2px 0; font-size: .84rem; color: var(--muted); }
.hint-empty { margin-top: -10px; font-size: .84rem; color: var(--muted); }

/* v=54: forklaring på lukket dag – lille linje under knappen (samme størrelse og farve som andre hints), ombrydes pænt på mobil */
.actionbar .ab-hint { flex: 1 1 100%; margin: -2px 0 0; font-size: .84rem; line-height: 1.4; color: var(--muted); text-align: right; }
.actionbar .ab-hint.solo { text-align: left; }
@media (max-width: 520px) { .actionbar .ab-hint { text-align: left; } }
/* v54: Salg/Lager-chips i Historik – samme linje-stil i salgsblokken og under Lageroptælling */
.h-detail .h-chipline { margin: 6px 0; }
.h-detail .h-kv + .h-chipline { margin-top: 12px; }
@media (max-width: 760px) { #log-table td.htype-cell { white-space: normal; grid-column: 1 / -1; } table.data.cards tr.page-row td.name[data-l]::before { width: auto; transform: none; margin-right: 0; color: var(--muted) !important; } }
/* v55: Økonomi › Afstemning */
.card .value.val-ok { color: var(--good); }
.card .value.val-warn { color: #7a5a00; font-size: clamp(1.3rem, 2.4vw, 1.9rem); }
/* v55: Registreret efter lukning (sen kunde) */
#ac-sec .ac-open-row { margin-top: 10px; }
#ac-sec .ac-sum { margin: 8px 0 0; }
#ac-table td.ac-act { text-align: right; }
#ac-table .ac-cancel { display: grid; gap: 8px; justify-items: end; }
#ac-table .ac-cancel .in { width: min(280px, 100%); }
.ac-box { margin-top: 12px; padding: 18px 20px; display: grid; gap: 12px; }
.ac-box h3, .ac-box .sub, .ac-box h4 { margin: 0; }
.ac-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 10px 14px; }
.ac-grid .fld, .ac-box > .fld { display: grid; gap: 4px; }
.ac-box .in { width: 100%; box-sizing: border-box; }
.ac-lines { display: grid; gap: 8px; }
.ac-line { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1.5fr) 110px 72px 28px; gap: 8px; align-items: center; }
.ac-calc { margin: 0; font-size: .9rem; color: var(--muted); }
.ac-calc .vpill { margin-left: 4px; }
.ac-box .rl-err:empty { display: none; }
.ac-box .btns { justify-content: flex-end; }
@media (max-width: 760px) {
  .ac-box { padding: 14px; }
  .ac-line { grid-template-columns: minmax(0, 1fr) 72px 28px; padding-bottom: 8px; border-bottom: 1px solid var(--line-soft); }
  .ac-line .ac-vac, .ac-line .ac-bat { grid-column: 1 / -1; }
  #ac-table td.ac-act { text-align: left; grid-column: 1 / -1; }
  #ac-table .ac-cancel { justify-items: stretch; }
  #ac-table .ac-cancel .in { width: 100%; }
}
#ac-sec .btns { display: flex; gap: 10px; flex-wrap: wrap; }
@media (max-width: 520px) { .ac-box .btns .btn { flex: 1 1 auto; } }
.ac-grid { align-items: end; }
/* v55: in-app dialog (erstatter browserens prompt/confirm) – samme stil som Skift kode */
.ask-dlg { padding: 0; width: min(460px, calc(100vw - 32px)); }
.ask-dlg form { padding: 22px 24px; }
.ask-dlg h2 { margin: 0; }
.ask-body { margin: 0; line-height: 1.5; }
.ask-body p { margin: 0 0 8px; } .ask-body p:last-child { margin-bottom: 0; }
.ask-actions { justify-content: flex-end; margin-top: 4px; }
.ask-dlg .btn.danger { background: var(--bad); border-color: var(--bad); color: #fff; }
@media (max-width: 520px) {
  .ask-dlg form { padding: 18px 16px; }
  .ask-actions .btn { flex: 1 1 0; }
}
/* v55: topkort med navneliste (Under minimum): +N mere › folder ud på stedet */
.um-list .linkbtn { font: inherit; padding: 0; vertical-align: baseline; }
.um-list .nm-name { color: inherit; text-decoration: underline; text-decoration-color: var(--line); text-underline-offset: 2px; }
.um-list .nm-name:hover { text-decoration-color: currentColor; }
.um-list .nm-tog { white-space: nowrap; font-weight: 600; }
.um-list .nm-i { white-space: nowrap; }

/* v=61: Økonomi › Bruttoavance pr. dag – tryk på en dato for at se dagens salg (vacciner, ydelser, rabat, afstemning). */
.mgd-hint { margin: -14px 0 10px; }
.mgd-tog { all: unset; cursor: pointer; display: inline-flex; align-items: center; gap: 8px; font: inherit; color: inherit; border-radius: 4px; }
.mgd-tog:focus-visible { outline: 2px solid var(--blue-tint); outline-offset: 3px; }
.mgd-chev { width: 7px; height: 7px; border-right: 1.6px solid currentColor; border-bottom: 1.6px solid currentColor; transform: rotate(-45deg); transition: transform .15s; margin: 0 2px 0 0; opacity: .7; flex: none; }
.mgd-open .mgd-chev { transform: rotate(45deg); }
table.data.app tr.mgd-row-tr { cursor: pointer; }
table.data.app tr.mgd-row-tr:hover td { background: rgba(27,33,26,.025); }
table.data.app tr.mgd-open td { border-bottom-color: transparent; }
table.data.app tr.mgd-tr td.mgd-td { padding: 0 12px 18px; background: transparent; }
.mgd { background: var(--bg); border-radius: var(--r-card); padding: 16px 20px; display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 4px 40px; align-items: start; text-align: left; white-space: normal; }
.mgd > .empty, .mgd > .problems { grid-column: 1 / -1; margin: 0; }
.mgd-h { margin: 4px 0 4px; font-size: .64rem; font-weight: 500; text-transform: uppercase; letter-spacing: .8px; color: var(--muted); }
.mgd-tot { margin-top: 14px; }
.mgd-l { display: grid; grid-template-columns: minmax(0, 1fr) auto 6.5em; gap: 14px; align-items: baseline; padding: 7px 0; border-bottom: 1px solid var(--line-soft); font-size: .86rem; }
.mgd-n { min-width: 0; }
.mgd-n .vpill { margin-left: 4px; }
.mgd-s { font-size: .78rem; color: var(--muted); font-weight: 300; text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.mgd-a { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.mgd-l.mgd-sub, .mgd-l.mgd-sum { border-bottom: 2px solid var(--ink, #1a1a1a); }
.mgd-none { margin: 6px 0; font-size: .86rem; color: var(--muted); }
.mgd-note { margin: 8px 0 0; font-size: .8rem; color: var(--muted); }
@media (max-width: 760px) {
  .mgd-hint { margin: -14px 0 8px; }
  table.data.cards tr.mgd-tr { display: block; padding: 0 10px 14px; border-bottom: 1px solid var(--line-soft); }
  table.data.cards tr.mgd-open { border-bottom: 0; }
  table.data.cards tr.mgd-tr td.mgd-td { padding: 0; }
  .mgd { grid-template-columns: 1fr; padding: 12px 14px; }
  .mgd-tot { margin-top: 10px; }
  .mgd-l { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "n a" "s s"; gap: 1px 12px; }
  .mgd-n { grid-area: n; } .mgd-a { grid-area: a; } .mgd-s { grid-area: s; text-align: left; white-space: normal; }
  .mgd-s:empty { display: none; }
}

/* ---------- Indlæs fra Onlinebooq (v=62) ---------- */
.imp-drops { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px; margin-bottom: 18px; }
.imp-drop { position: relative; display: flex; flex-direction: column; gap: 6px; cursor: pointer; border: 1px dashed var(--line); min-height: 118px; }
.imp-drop:hover, .imp-drop.drag, .imp-drop:focus-within { border-color: var(--blue); background: var(--blue-tint); }
.imp-drop .imp-dt { font-size: 1.05rem; font-weight: 600; color: var(--link); }
.imp-drop input[type=file] { position: absolute; inset: 0; opacity: 0; cursor: pointer; width: 100%; height: 100%; }
#imp-body .imp-sum { margin: 18px 0; }
#imp-body .imp-sum .card .value { font-size: 1.35rem; }
table.imp-rev .imp-batch { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: .85em; color: var(--muted); white-space: nowrap; }
table.imp-rev select.imp-sel { width: 100%; min-width: 15em; max-width: 26em; }
table.imp-files .imp-rm-td { text-align: right; }
/* v=63: rabat-chip (salg med rabatprocent) */
.vpill.v-rabat { color: #1d4ed8; background: rgba(59,130,246,.12); cursor: help; }
.imp-st { display: inline-flex; gap: 6px; align-items: center; flex-wrap: wrap; justify-content: flex-end; }
.imp-rabat-hint { color: var(--text); }
.imp-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px 22px; margin-top: 14px; }
.imp-actions .chk { display: inline-flex; align-items: center; gap: 8px; font-size: .92rem; }
.imp-actions .btns { display: flex; gap: 10px; flex-wrap: wrap; }
.imp-msg { max-width: none; }
@media (max-width: 760px) {
  .imp-drops { grid-template-columns: 1fr; gap: 14px; }
  .imp-drop { min-height: 0; }
  table.imp-rev select.imp-sel { min-width: 0; max-width: none; }
  .imp-actions { flex-direction: column; align-items: stretch; }
  .imp-actions .btns .btn { flex: 1 1 0; }
}
