/* css/admin.css — styles owned by js/views/staff.js, js/views/events.js, js/views/reasons.js, js/views/grouptypes.js, js/views/price-list.js, js/views/items.js and js/list-editor.js */

/* ---------- Staff roster ---------- */
.table-scroll{overflow-x:auto}
.staff-table .who small{color:var(--text-muted)}
.staff-table .branches{white-space:normal;max-width:260px}
.staff-table .actions-cell .btn{margin-left:4px}

/* ---------- Account form ---------- */
.acct-form{display:flex;flex-direction:column;gap:var(--gap)}
.checks{border:0;padding:0;margin:0;min-width:0}
.checks legend{font-size:var(--fs-sm);font-weight:500;padding:0;margin-bottom:6px}
.check{display:flex;align-items:center;gap:8px;font-size:var(--fs-sm);min-height:28px;cursor:pointer}
.check input{width:16px;height:16px;margin:0;accent-color:var(--primary)}
.link.sm{font-size:var(--fs-sm);white-space:nowrap}
.input.pw{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.08em;font-size:calc(var(--fs) * 1.05)}

/* ---------- One-time hand-off and the identity strip in confirms ---------- */
.handoff-row{display:flex;gap:8px;align-items:center}
.handoff-row .input{flex:1;min-width:0}
.identity{display:inline-flex;width:100%;align-items:center;gap:10px;padding:8px 10px;margin-bottom:10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--muted-2)}
.identity-text{display:inline-flex;flex-direction:column;line-height:1.3;min-width:0}
.identity-text b{font-weight:500}
.identity-text small{color:var(--text-muted)}

/* ---------- Event history ---------- */
.evt-filters{display:grid;grid-template-columns:minmax(200px,2fr) repeat(4,minmax(130px,1fr)) auto;gap:8px 12px;align-items:end}
.evt-filters .field{min-width:0}
.evt-filters .clear:empty{display:none}
@media (max-width:1199px){
  .evt-filters{grid-template-columns:repeat(4,minmax(0,1fr))}
  .evt-filters .q{grid-column:1 / -1}
}
.evt-day{padding:12px var(--pad) 6px;background:var(--muted-2);border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.evt-day h3{font-size:var(--fs-sm);font-weight:600;color:var(--text-soft)}
.evt-list{padding:0 var(--pad)}
.evt-list .text{min-width:0;overflow-wrap:anywhere}
.evt-list .rowlink{font-weight:500;text-decoration:none}
.evt-list .rowlink:hover{text-decoration:underline}
.pager .btn{width:auto;height:calc(var(--control-h) - 8px)}
.panel-info .lucide{width:1em;height:1em;vertical-align:-.15em;margin-right:4px}

/* ---------- Reasons and the shared list editor (js/list-editor.js), also used by Group types ---------- */
.rs-layout{display:grid;grid-template-columns:230px minmax(0,1fr);gap:var(--gap);align-items:start}
.rs-nav ul{list-style:none;margin:0;padding:6px}
.rs-nav a{display:flex;align-items:center;gap:8px;min-height:var(--control-h);padding:4px 10px;border-radius:var(--radius-sm);color:var(--text-soft);text-decoration:none;font-size:var(--fs-sm)}
.rs-nav a span:first-child{flex:1}
.rs-nav a:hover{background:var(--muted)}
.rs-nav a[aria-current="page"]{background:var(--muted);color:var(--text);font-weight:500}
.rs-select{display:none}
.le-hint{padding:0 var(--pad) 8px}
.le-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--border)}
.le-row{display:grid;grid-template-columns:auto 24px minmax(0,1fr) auto auto;align-items:center;gap:6px 10px;padding:8px var(--pad);border-bottom:1px solid var(--border);background:var(--card)}
.le-row.off .le-text{color:var(--text-muted)}
.le-row.dragging{opacity:.5}
.le-row.drop-before{box-shadow:inset 0 2px 0 var(--primary)}
.le-row.drop-after{box-shadow:inset 0 -2px 0 var(--primary)}
.le-grip{display:grid;place-items:center;color:var(--text-muted);cursor:grab}
.le-pos{font-size:var(--fs-xs);color:var(--text-muted);font-variant-numeric:tabular-nums;text-align:right}
.le-text{display:flex;flex-direction:column;gap:2px;min-width:0;overflow-wrap:anywhere}
.le-text b{font-weight:500}
.le-text small{display:flex;flex-wrap:wrap;gap:2px 14px;color:var(--text-muted);font-size:var(--fs-xs)}
.le-lang>span:first-child{font-weight:500;color:var(--text-soft)}
.le-state{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.gt-card{max-width:880px}
.le-actions{display:flex;align-items:center;gap:4px;flex-wrap:wrap;justify-content:flex-end}
.iconbtn:disabled{opacity:.4;cursor:not-allowed}
.le-foot{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px var(--pad)}

/* ---------- Price list: the tab bar, one link per tab, and the tab's help line ---------- */
.pl-tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--border);margin-bottom:12px}
.pl-tabs a{display:inline-flex;align-items:center;min-height:var(--control-h);padding:0 14px;margin-bottom:-1px;border-bottom:2px solid transparent;color:var(--text-muted);font-size:var(--fs-sm);font-weight:500;text-decoration:none;white-space:nowrap}
.pl-tabs a:hover{color:var(--text)}
.pl-tabs a[aria-current="page"]{color:var(--text);border-bottom-color:var(--primary)}
.pl-tabs a:focus-visible{outline:2px solid var(--ring);outline-offset:-2px;border-radius:var(--radius-sm)}
.pl-help{margin:0 0 var(--gap);color:var(--text-soft);font-size:var(--fs-sm);max-width:80ch}
.pl-help a{color:inherit;font-weight:500;text-decoration:underline;text-underline-offset:2px}
.pl-tab .panel-info > div + div{margin-top:6px}

/* ---------- Pay per visit: a list to read, grouped by kind, and one Edit dialog per item ---------- */
.items-table td{white-space:normal;padding-top:10px;padding-bottom:10px}
.items-table .it-item b{font-weight:500}
.items-table .it-item small{display:block;color:var(--text-muted);font-size:var(--fs-xs)}
.items-table .it-item .tag{margin-top:4px}
.items-table .it-price{white-space:nowrap}
.items-table .it-branches span{display:block;white-space:nowrap}
.items-table td.actions-cell{white-space:nowrap}
.it-part{display:flex;flex-direction:column;gap:10px;padding-top:var(--gap);border-top:1px solid var(--border)}
.it-part:first-child{padding-top:0;border-top:0}
.it-part[hidden]{display:none}
.it-part h3{font-size:var(--fs-sm)}
.it-part .hint{margin:0;font-size:var(--fs-xs);color:var(--text-muted)}
.it-part .error{font-size:var(--fs-xs);color:var(--danger)}
.it-part .error:empty{display:none}
.it-part > .seg{align-self:flex-start}
.it-part .seg button{height:auto;min-height:calc(var(--control-h) - 8px);padding:4px 10px;line-height:1.2}
.it-label{font-size:var(--fs-sm);font-weight:500}
.it-short{max-width:180px}
.it-row{display:grid;grid-template-columns:minmax(120px,1fr) auto;align-items:center;gap:6px 12px}
.it-own{grid-column:1 / -1;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:4px 10px}
.it-own[hidden]{display:none}
.it-own label{font-size:var(--fs-sm)}
.it-own .input{width:140px}
.it-own .error{flex-basis:100%;text-align:right}

/* ---------- Breakpoints ---------- */
@media (max-width:1199px){
  .staff-table .optional{display:none}
  .le-row{grid-template-columns:auto 24px minmax(0,1fr) auto}
  .le-actions{grid-column:3 / -1;justify-content:flex-start}
}
@media (max-width:1023px){
  .evt-filters{grid-template-columns:1fr 1fr}
  .evt-filters .q,.evt-filters .clear{grid-column:1 / -1}
}
@media (max-width:767px){
  .rs-layout{grid-template-columns:1fr}
  .rs-nav{display:none}
  .rs-select{display:flex}
  .le-row{grid-template-columns:auto minmax(0,1fr) auto}
  .le-grip{display:none}
  .le-actions{grid-column:1 / -1;justify-content:flex-start}
  .evt-list .evt{grid-template-columns:auto 1fr;gap:2px 10px}
  .evt-list .evt .text{grid-column:1 / -1}
  .evt-list .evt .actor{color:var(--text-muted)}
}
@media (max-width:640px){
  /* The roster becomes a card list here, so it must not keep the shared 560px table minimum. */
  .card.tight .staff-table{min-width:0}
  .staff-table,.staff-table tbody{display:block}
  .staff-table thead{display:none}
  .staff-table tr{display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px 12px;padding:12px;border-bottom:1px solid var(--border)}
  .staff-table tr:last-child{border-bottom:0}
  .staff-table td{display:block;height:auto;padding:0;border:0;white-space:normal}
  .staff-table tbody tr:hover td{background:none}
  .staff-table td.role-cell,.staff-table td.status-cell{justify-self:end}
  .staff-table td.branches{display:block;max-width:none;font-size:var(--fs-xs);color:var(--text-muted)}
  .staff-table td.branches::before{content:"Branches: "}
  .staff-table td.actions-cell{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:6px;text-align:left}
  .staff-table td.actions-cell .btn{margin:0}
  /* Items and prices: each item is a card, the price on the right of the name. */
  .card.tight .items-table{min-width:0}
  .items-table,.items-table tbody{display:block}
  .items-table thead{display:none}
  .items-table tr{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 12px;padding:12px;border-bottom:1px solid var(--border)}
  .items-table tr.group{display:block;padding:0}
  .items-table tr.group td{display:flex;align-items:center;height:32px;padding:0 12px}
  .items-table td{display:block;height:auto;padding:0;border:0}
  .items-table tbody tr:hover td{background:none}
  .items-table td.it-price{grid-column:2;grid-row:1}
  .items-table td.it-branches{grid-column:1 / -1;font-size:var(--fs-xs);color:var(--text-soft)}
  .items-table td.actions-cell{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:6px;text-align:left}
  .items-table td.actions-cell .btn{margin:0}
  .it-row{grid-template-columns:1fr}
  .it-part .seg.wrap{grid-template-columns:repeat(auto-fit,minmax(96px,1fr))}
  .it-part > .seg{align-self:stretch}
  .it-own{justify-content:flex-start}
  .it-own .error{text-align:left}
  .evt-day{padding:10px 12px 4px}
  .le-hint,.le-foot{padding-left:12px;padding-right:12px}
  .le-row{padding:10px 12px}
  .evt-list{padding:0 12px}
}
