/* Gymveo · the shop "Boutique" (board shop.html). Page layout for the counter sale, the owner's Boutique pages and the
   member's "À régler à l'accueil"; colours and components come from tokens.css / components.css. Local classes are
   prefixed sh-. Loaded by the shop's own views (views/shop/_css.ejs). Body text sizes use calc(Npx*var(--k)). */

/* ---- product photo: a square, evenly lit, a soft shadow under the product ---- */
.sh-ph{position:relative;aspect-ratio:1/1;border-radius:5px;background:#EDE8DF;display:grid;place-items:center;overflow:hidden;box-shadow:inset 0 0 0 1px rgba(11,21,48,.08);width:100%}
.sh-ph img{width:100%;height:100%;object-fit:cover;display:block}
.sh-ph.sm{width:44px;flex:none;border-radius:4px}
.sh-ph.md{width:64px;flex:none}
.sh-ph.up{background:repeating-linear-gradient(135deg,transparent 0 6px,rgba(11,21,48,.06) 6px 7px),#E9E4DA}
.sh-ph .sh-cam{width:34%;height:34%;color:#4D5573}
.sh-ph.sm .sh-cam{width:50%;height:50%}

/* ---- the counter: products on the left, the ticket on the right ---- */
.view-shop\/sale main.main{padding:0!important;gap:0!important}
.sh-sale{display:grid;grid-template-columns:minmax(0,1fr) 460px;min-height:calc(100dvh - 64px);align-items:stretch}
.sh-main{padding:24px clamp(16px,2.4vw,32px) 40px;display:flex;flex-direction:column;gap:16px;min-width:0}
.sh-side{background:var(--sunken);border-inline-start:1px solid var(--line);padding:20px 24px 24px;min-width:0;position:sticky;top:64px;align-self:start;min-height:calc(100dvh - 64px);max-height:calc(100dvh - 64px);overflow-y:auto}
.sh-form{display:flex;flex-direction:column;gap:14px}
.sh-head{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.sh-head h1{font-size:calc(34px*var(--k));font-weight:700;letter-spacing:-.045em;line-height:1}
[dir=rtl] .sh-head h1{line-height:1.3;letter-spacing:0}
.sh-head .end{margin-inline-start:auto;display:flex;gap:10px;align-items:center}
.sh-who{display:inline-flex;align-items:center;gap:10px;min-height:44px;padding:0 12px 0 6px;border-radius:999px;border:1.5px dashed var(--line-2);color:var(--muted);font:inherit;font-size:calc(14.5px*var(--k));background:none;cursor:pointer;max-width:100%}
[dir=rtl] .sh-who{padding:0 6px 0 12px}
.sh-who b{color:var(--text);font-weight:600}
.sh-who .av{width:32px;height:32px;font-size:13px;background:var(--panel)}
.sh-who .av .ic{width:16px;height:16px}
.sh-who.on{border-style:solid;border-color:var(--text);color:var(--text);cursor:default;padding-inline-end:2px}
.sh-who.on .av{background:var(--text);color:var(--page)}
.sh-who-n{font-weight:650;color:var(--text);text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sh-who-x{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;color:var(--muted)}
.sh-who-x:hover{color:var(--text);background:var(--sunken)}
.sh-who-x .ic{width:16px;height:16px}
.sh-search{height:52px;border-width:2px;border-color:var(--text)}
.sh-search input{flex:1;min-width:0;border:0;background:none;font:inherit;font-size:calc(16px*var(--k));color:var(--text);outline:0;height:100%}
.sh-search input::placeholder{color:var(--muted)}
.sh-search:focus-within{box-shadow:0 0 0 3px rgba(47,80,255,.18);border-color:var(--action)}
.sh-cats{gap:8px}
.sh-cats .chip{cursor:pointer;background:none;font-family:inherit;min-height:44px}
.sh-cats .chip small{margin-inline-start:4px;font-variant-numeric:tabular-nums}

/* tiles */
.sh-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px}
.sh-tile{position:relative;background:var(--panel);border-radius:8px;box-shadow:0 0 0 1px var(--line),0 10px 20px -18px rgba(11,21,48,.5);padding:8px 8px 11px;display:grid;gap:8px;align-content:start;border:0;font:inherit;color:var(--text);text-align:start;cursor:pointer;transition:box-shadow .15s,transform .06s}
.sh-tile:hover{box-shadow:0 0 0 1.5px var(--line-2),0 12px 22px -18px rgba(11,21,48,.6)}
.sh-tile:active{transform:translateY(1px)}
.sh-tile.sel{box-shadow:0 0 0 2px var(--text),0 10px 20px -18px rgba(11,21,48,.5)}
.sh-tile.flash{animation:sh-flash .5s var(--ease-out)}
@keyframes sh-flash{0%{box-shadow:0 0 0 4px var(--action)}100%{box-shadow:0 0 0 2px var(--text)}}
.sh-phw{position:relative;display:block}
.sh-tile .nm{font-size:calc(14.5px*var(--k));font-weight:600;line-height:1.25;min-height:2.5em;padding-inline:4px;letter-spacing:-.005em;display:block}
[dir=rtl] .sh-tile .nm{line-height:1.45}
.sh-tile .pr{display:flex;align-items:baseline;justify-content:space-between;gap:6px;padding-inline:4px;flex-wrap:wrap}
.sh-tile .pr b{font-size:calc(18px*var(--k));font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums;white-space:nowrap}
.sh-stk{font-size:calc(13px*var(--k));color:var(--muted);white-space:nowrap}
.sh-nophoto{display:block;font-weight:500;margin-top:2px}
.sh-tile.low .pr .sh-stk,.sh-tile.none-left .pr .sh-stk{color:var(--warn);font-weight:650}
.sh-tile.low .pr .sh-stk::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:currentColor;margin-inline-end:5px;vertical-align:1px}
.sh-tile.out{background:transparent;box-shadow:0 0 0 1px var(--line-2) inset;cursor:not-allowed}
.sh-tile.out img{opacity:.35}
.sh-tile.out .nm,.sh-tile.out .pr b{color:var(--muted)}
.sh-tile.out .stamp{position:absolute;top:34%;left:50%;translate:-50% 0;--c:#0B1530;--page:#EDE8DF;mix-blend-mode:multiply;animation:none} /* on the (always light) photo */
.sh-q{position:absolute;top:7px;right:7px;min-width:32px;height:32px;padding:0 7px;border-radius:16px;background:var(--ink);color:#fff;font-weight:700;font-size:14px;display:grid;place-items:center;font-variant-numeric:tabular-nums;z-index:2;direction:ltr}
.sh-add{position:absolute;bottom:7px;inset-inline-end:7px;width:36px;height:36px;border-radius:50%;background:var(--sheet);box-shadow:0 0 0 1.5px rgba(11,21,48,.26);display:grid;place-items:center;color:var(--ink);z-index:2}
.sh-add .ic{width:16px;height:16px}
.sh-none{padding:12px 0}

[dir=rtl] .sh-q{right:auto;left:7px}
/* the ticket, printed live */
button.pen,button.sh-linkbtn{background:none;border:0;font:inherit;font-weight:600;cursor:pointer;padding:0}
.sh-sidehead{display:flex;align-items:center;gap:10px;min-height:44px}
.sh-end{margin-inline-start:auto}
.sh-close{display:none}
.rcpt.open{-webkit-mask:linear-gradient(#000 0 0) 0 8px/100% calc(100% - 8px) no-repeat,radial-gradient(circle at 5px 0,transparent 4.5px,#000 5px) 0 0/10px 9px repeat-x;mask:linear-gradient(#000 0 0) 0 8px/100% calc(100% - 8px) no-repeat,radial-gradient(circle at 5px 0,transparent 4.5px,#000 5px) 0 0/10px 9px repeat-x;padding-bottom:16px}
.rcpt .gymhead.row{display:flex;justify-items:start;text-align:start;gap:12px;align-items:center}
.rcpt .gymhead.row svg,.rcpt .gymhead.row img{width:34px;height:34px;flex:none;color:var(--ink)}
.rcpt .gymhead.row span{display:grid;line-height:1.25}
.rcpt .gymhead.row small{font-size:13px}
.sh-cl{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:4px 12px;align-items:center;padding:8px 0;border-bottom:1px dotted var(--hair-2)}
.sh-cl:has(.sh-ph){grid-template-columns:44px minmax(0,1fr) auto auto}
.sh-cl .nm{display:grid;min-width:0}
.sh-cl b{font-weight:600;font-size:calc(14px*var(--k));line-height:1.3}
.sh-cl small{color:var(--ink-muted);font-size:13px}
.sh-cl small.sh-warn,.sh-warn{color:#8A5200;font-weight:650}
.sh-cl .amt{font-weight:650;font-variant-numeric:tabular-nums;white-space:nowrap;min-width:64px;text-align:end}
.sh-cl .stp{display:inline-flex;align-items:center;border:1.5px solid var(--hair-2);border-radius:8px;height:44px;direction:ltr}
.sh-cl .stp button{width:40px;height:100%;display:grid;place-items:center;color:var(--ink-muted);font-size:18px;background:none;border:0;cursor:pointer;font-family:inherit}
.sh-cl .stp button:hover{color:var(--ink)}
.sh-cl .stp b{min-width:30px;text-align:center;font-size:15px;font-weight:700;border-inline:1px solid var(--hair);line-height:40px}
.sh-cl.mem{grid-template-columns:minmax(0,1fr) auto;border-top:0}
.sh-cl.mem small{grid-column:1}
.sh-cl.mem .amt{grid-row:1/3;grid-column:2}
.sh-cl.mem .sh-planx{grid-column:1/-1;font-size:13px;justify-self:start;min-height:32px;display:inline-flex;align-items:center}
.sh-plan{font:inherit;font-weight:650;font-size:calc(15px*var(--k));color:var(--ink);background:transparent;border:0;border-bottom:1.5px dashed var(--hair-2);padding:4px 18px 4px 0;appearance:none;cursor:pointer;background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:calc(100% - 9px) 55%,calc(100% - 4px) 55%;background-size:5px 5px;background-repeat:no-repeat;min-height:36px;max-width:100%}
[dir=rtl] .sh-plan{padding:4px 0 4px 18px;background-position:9px 55%,4px 55%}
.sh-renew{margin:6px 0 0}
.sh-renew .pen{font-size:14px;gap:6px}
.sh-renew .ic{width:16px;height:16px}
.sh-empty{display:flex;gap:10px;align-items:center;color:var(--ink-muted);font-size:calc(14px*var(--k));padding:14px 0;border-bottom:1px dotted var(--hair-2)}
.sh-empty .ic{width:20px;height:20px;flex:none}
.sh-owes{display:flex;align-items:center;gap:10px;justify-content:space-between;flex-wrap:wrap;padding:10px 12px;border-radius:8px;border:1.5px solid var(--text);font-size:calc(14px*var(--k))}

/* payment */
.sh-pay{display:grid;gap:12px}
.sh-seg{display:flex;width:100%;background:var(--page)}
.sh-seg button,.sh-seg2 button,.sh-seg2 label{flex:1;min-height:44px;padding:0 6px;border-radius:8px;display:flex;align-items:center;justify-content:center;gap:6px;font:600 calc(14px*var(--k))/1.1 inherit;font-family:inherit;color:var(--muted);background:none;border:0;cursor:pointer;text-align:center}
.sh-seg button.on,.sh-seg2 button.on,.sh-seg2 label.on{background:var(--panel);color:var(--text);box-shadow:0 1px 0 var(--line-2)}
.sh-seg button .ic{width:17px;height:17px}
.sh-seg button.dis{color:var(--muted);box-shadow:inset 0 0 0 1.5px var(--line-2);background:repeating-linear-gradient(135deg,transparent 0 5px,rgba(11,21,48,.05) 5px 6px);cursor:not-allowed}
.sh-seg2{display:flex;width:100%;background:var(--page)}
.sh-seg2 label input{position:absolute;opacity:0;pointer-events:none}
.sh-diswhy{display:flex;align-items:flex-start;gap:7px;margin-top:-4px;font-size:calc(13.5px*var(--k));color:var(--text-2)}
.sh-diswhy .ic{width:15px;height:15px;color:var(--muted);margin-top:2px;flex:none}
.sh-diswhy.flash{animation:sh-nudge .35s}
@keyframes sh-nudge{0%,100%{transform:none}30%{transform:translateX(-4px)}60%{transform:translateX(4px)}}
.sh-lbl{font-size:calc(13.5px*var(--k));font-weight:600;color:var(--text-2)}
.sh-cash{display:grid;gap:8px}
.sh-bills{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.sh-bill{min-height:48px;border-radius:8px;border:1.5px solid var(--line-2);display:grid;place-items:center;align-content:center;font:650 calc(15px*var(--k))/1.1 inherit;font-family:inherit;font-variant-numeric:tabular-nums;background:var(--panel);color:var(--text);cursor:pointer;direction:ltr}
.sh-bill.on{border-color:var(--text);box-shadow:inset 0 0 0 1px var(--text)}
.sh-bill small{font-weight:500;color:var(--muted);font-size:12px;display:block;text-align:center;line-height:1.1}
.sh-other{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:calc(14px*var(--k));color:var(--text-2)}
.sh-other .sh-amt{max-width:170px}
.sh-other input[aria-invalid=true]{color:var(--bad)}
.sh-chg{display:flex;align-items:baseline;justify-content:space-between;padding:10px 0 2px;border-top:1.5px solid var(--text)}
.sh-chg span{font-size:calc(15px*var(--k));font-weight:600}
.sh-chg b{font-size:34px;font-weight:700;letter-spacing:-.03em;font-variant-numeric:tabular-nums;white-space:nowrap;word-spacing:.08em}
.sh-tabpart{display:grid;gap:12px}
.sh-f2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}
.sh-amt input{flex:1;min-width:0;border:0;background:none;font:650 calc(17px*var(--k))/1 inherit;font-family:inherit;color:var(--text);outline:0;font-variant-numeric:tabular-nums;direction:ltr;text-align:start}
[dir=rtl] .sh-amt input{text-align:end}
.sh-amt:focus-within{border-color:var(--action);box-shadow:0 0 0 3px rgba(47,80,255,.18)}
.sh-tabm{display:grid;gap:6px}
.sh-tabm .bar2{position:relative;height:10px;border:1.5px solid var(--text);border-radius:3px;overflow:hidden;display:flex}
.sh-tabm .bar2 i{display:block;height:100%;background:var(--text)}
.sh-tabm .bar2 i.new{background:repeating-linear-gradient(135deg,var(--text) 0 2px,transparent 2px 5px)}
.sh-tabm.over .bar2{border-color:var(--bad)}
.sh-tabm.over .bar2 i.new{background:repeating-linear-gradient(135deg,var(--bad) 0 2px,transparent 2px 5px)}
.sh-tabm .lbl{display:flex;justify-content:space-between;gap:4px 10px;font-size:calc(13.5px*var(--k));color:var(--muted);flex-wrap:wrap}
.sh-tabm .lbl b{color:var(--text);font-weight:650;font-variant-numeric:tabular-nums}
.sh-tabm.sm .bar2{height:7px;border-width:1.25px}
.sh-why{display:flex;gap:8px;align-items:flex-start;font-size:calc(13.5px*var(--k));color:var(--text-2);line-height:1.5}
.sh-why .ic{width:16px;height:16px;flex:none;margin-top:2px;color:var(--muted)}
.sh-why b{color:var(--text);font-weight:650}
.sh-alert{display:grid;grid-template-columns:22px minmax(0,1fr);gap:10px;padding:12px 14px;border-radius:8px;border:1.5px solid currentColor;font-size:calc(14px*var(--k));line-height:1.5;background:var(--panel)}
.sh-alert .ic{width:20px;height:20px}
.sh-alert b{font-weight:650;display:block}
.sh-alert.bad{color:var(--bad)}
.sh-alert.warn{color:var(--warn)}
.sh-alert p{color:var(--text-2)}
.sh-alert .act{margin-top:8px;display:flex;gap:8px;flex-wrap:wrap;color:var(--text);align-items:center}
.sh-alert[hidden]{display:none}
.sh-go{height:58px;font-size:calc(17px*var(--k));border-radius:11px;justify-content:space-between;padding:0 12px 0 20px;white-space:normal;text-align:start;line-height:1.2}
[dir=rtl] .sh-go{padding:0 20px 0 12px}
.sh-go[disabled]{opacity:.55}

/* done: the receipt comes out of the thermal slot */
.sh-say{font-size:calc(17px*var(--k));line-height:1.45;color:var(--text-2);margin:2px 0 6px}
.sh-say b{color:var(--text-hi);font-weight:650}
.sh-slot{height:8px;border-radius:4px;background:var(--text);opacity:.85;position:relative;z-index:2}
.sh-rcw{margin:-4px 10px 0;animation:sh-print .7s var(--ease-out)}
@keyframes sh-print{from{transform:translateY(-40px);clip-path:inset(0 0 100% 0)}to{transform:none;clip-path:inset(0 0 0 0)}}
.sh-rcw .rcpt-wrap{width:100%}
.sh-doneacts{display:grid;gap:10px;margin:4px 0 20px}
.sh-doneacts .btn.primary{height:56px;justify-content:center}
.sh-row2{display:flex;gap:8px;flex-wrap:wrap}
.sh-row2 .btn{flex:1}
.sh-noprint{display:flex;gap:8px;align-items:flex-start}
.sh-noprint .ic{width:16px;height:16px;flex:none;margin-top:3px}

/* receipt details */
.sh-rcpt .foot .powered{justify-content:flex-end}
.sh-ty{text-align:center;margin-top:8px;font-size:13px;color:var(--ink-muted)}
.sh-print{background:#E9E4DA;min-height:100dvh}
.sh-ptools{display:flex;gap:8px;justify-content:center;padding:16px;flex-wrap:wrap}
.sh-paper{display:flex;justify-content:center;padding:0 16px 40px}
.sh-paper .rcpt-wrap{width:80mm;max-width:100%}
@media print{.sh-ptools{display:none}.sh-print{background:#fff}.sh-paper{padding:0}.sh-paper .rcpt-wrap{filter:none;width:100%}}

/* phone: the ticket becomes a bottom sheet; a cart bar stays under the thumb */
.sh-cartbar{display:none}
.sh-scrim{display:none}
@media (max-width:900px){
  .sh-sale{grid-template-columns:minmax(0,1fr);min-height:0}
  .sh-main{padding:16px 16px 150px;gap:14px}
  .sh-head h1{font-size:calc(30px*var(--k))}
  .sh-head .sh-lg{display:none}
  .sh-cats{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-inline:-16px;padding-inline:16px}
  .sh-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}
  .sh-side{min-height:0;position:fixed;inset:auto 0 0 0;top:auto;z-index:45;max-height:88dvh;border-inline-start:0;border-radius:18px 18px 0 0;box-shadow:0 -20px 50px -20px rgba(3,7,18,.45);transform:translateY(105%);transition:transform .2s var(--ease-out);padding:14px 16px calc(20px + env(safe-area-inset-bottom,0px));background:var(--page)}
  .sh-sale.sheet-open .sh-side,.sh-sale.is-done .sh-side{transform:none}
  .sh-sale.is-done .sh-side{position:static;border-radius:0;box-shadow:none;max-height:none;background:var(--sunken)}
  .sh-sale.is-done .sh-main{padding-bottom:24px}
  .sh-close{display:inline-flex;margin-inline-start:4px}
  .sh-live .rcpt .gymhead.row{display:none}
  .sh-live .rcpt{padding:16px 16px 12px}
  .sh-form{gap:12px}
  .sh-scrim:not([hidden]){display:block;position:fixed;inset:0;z-index:44;background:rgba(3,7,18,.55)}
  .sh-cartbar:not([hidden]){display:flex;position:fixed;left:12px;right:12px;bottom:calc(84px + env(safe-area-inset-bottom,0px));z-index:30;align-items:center;gap:12px;padding:10px 12px 10px 16px;border-radius:12px;background:var(--ink);color:#fff}
  [dir=rtl] .sh-cartbar:not([hidden]){padding:10px 16px 10px 12px}
  .sh-cartbar .c{display:grid;line-height:1.25;min-width:0}
  .sh-cartbar .c small{font-size:calc(13px*var(--k));color:#C9D3EE}
  .sh-cartbar .c b{font-size:22px;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums;white-space:nowrap}
  .sh-cartbar .btn.primary{margin-inline-start:auto;height:46px;box-shadow:0 4px 0 #000A2A;margin-bottom:4px}
  .sh-bills{grid-template-columns:repeat(2,minmax(0,1fr))}
  .sh-chg b{font-size:28px}
}
@media (max-width:420px){.sh-f2{grid-template-columns:minmax(0,1fr)}}

/* dialogs (member picker, report, owner PIN, settle) */
.sh-dlg .dialog{background:var(--panel);border-radius:14px;box-shadow:0 30px 60px -20px rgba(3,7,18,.5),0 0 0 1px var(--line);padding:22px;display:flex;flex-direction:column;gap:14px;width:min(520px,calc(100vw - 32px));color:var(--text)}
.sh-dh{display:flex;align-items:center;gap:12px}
.sh-dh h2{flex:1}
.sh-dh .av .ic{width:18px;height:18px}
.sh-dacts{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}
.sh-dlg .input input{flex:1;min-width:0;border:0;background:none;font:inherit;color:var(--text);outline:0;height:100%}
.sh-mlist{max-height:50dvh;overflow:auto}
.sh-mpick{width:100%;background:none;border:0;border-bottom:1px solid var(--line-soft);font:inherit;color:var(--text);text-align:start;cursor:pointer;min-height:56px}
.sh-mpick:hover,.sh-mpick:focus-visible{background:var(--sunken);border-radius:8px}
.sh-fs{border:0;padding:0;margin:0;display:grid;gap:8px}
.field-l{font-size:calc(13.5px*var(--k));font-weight:600;color:var(--text-2);padding:0}
.sh-radio{cursor:pointer;position:relative}
.sh-radio input{position:absolute;opacity:0;pointer-events:none}
.sh-radio:has(input:checked){background:var(--text);color:var(--page);border-color:var(--text)}
.sh-radio:has(input:focus-visible){outline:3px solid var(--focus);outline-offset:2px}
.sh-stepper{display:inline-flex;align-items:center;border:1.5px solid var(--line-2);border-radius:9px;height:48px;direction:ltr;align-self:flex-start;background:var(--panel)}
.sh-stepper button{width:48px;height:100%;background:none;border:0;font:500 20px/1 inherit;color:var(--text-2);cursor:pointer}
.sh-stepper input{width:64px;height:100%;border:0;border-inline:1px solid var(--line);text-align:center;font:700 17px/1 inherit;font-family:inherit;background:none;color:var(--text);outline:0}
.sh-subsum{display:grid}
.sh-subsum div{display:flex;justify-content:space-between;gap:10px;padding:7px 0;border-bottom:1px dotted var(--line-2);font-size:calc(14.5px*var(--k))}
.sh-subsum div b{font-weight:650;font-variant-numeric:tabular-nums;white-space:nowrap}
.sh-subsum div.t{border-bottom:0;border-top:1.5px solid var(--text);font-size:calc(16px*var(--k));padding-top:10px;align-items:baseline}
.sh-subsum div.t b{font-size:24px;font-weight:700;letter-spacing:-.02em}
.sh-pinrow{display:flex;align-items:center;justify-content:space-between}
.sh-dots{display:flex;gap:10px}
.sh-dots i{width:16px;height:16px;border-radius:50%;border:1.5px solid var(--text)}
.sh-dots i.f{background:var(--text)}
.sh-keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.sh-keypad button{height:56px;border-radius:12px;border:0;background:var(--sunken);display:grid;place-items:center;font:500 22px/1 Outfit,sans-serif;font-variant-numeric:tabular-nums;color:var(--text);cursor:pointer}
.sh-keypad button.fn{background:transparent;color:var(--muted)}
.sh-keypad button.fn .ic{width:24px;height:24px}
.sh-keypad button:active{transform:translateY(1px)}
.sh-toast{display:flex;align-items:center;gap:10px;padding:10px 12px 10px 16px;border-radius:10px;background:var(--ink);color:var(--fog);font-size:calc(14px*var(--k));box-shadow:0 12px 30px -12px rgba(3,7,18,.5)}
.sh-toast[hidden]{display:none}
.sh-toast .ic{width:18px;height:18px;color:var(--sky);flex:none}
.sh-toast b{font-weight:650}
.sh-toast .sh-undo{margin-inline-start:auto;color:var(--fog);text-decoration-color:var(--sky);background:none;border:0;font:inherit;font-weight:600;cursor:pointer;min-height:44px;padding:0 6px}
@media (min-width:901px){.sh-toast.page{left:24px;right:auto;bottom:24px;width:420px}[dir=rtl] .sh-toast.page{right:24px;left:auto}}

/* ---- owner: Boutique (board O1–O7) ---- */
.sh-oph h1{font-size:calc(36px*var(--k));font-weight:700;letter-spacing:-.045em}
[dir=rtl] .sh-oph h1{letter-spacing:0}
.sh-otabs{display:flex;gap:4px 24px;border-bottom:1px solid var(--line);flex-wrap:wrap;margin-top:-6px}
.sh-otabs a{min-height:44px;display:flex;align-items:center;gap:8px;font-size:calc(15px*var(--k));color:var(--muted);font-weight:500;position:relative;text-decoration:none}
.sh-otabs a:hover{color:var(--text)}
.sh-otabs a.on{color:var(--text);font-weight:650}
.sh-otabs a.on::after{content:"";position:absolute;inset-inline:0;bottom:-1px;height:3px;background:var(--text)}
.sh-sent{font-size:calc(26px*var(--k));max-width:36em}
.sh-sent b{font-weight:650}
.sh-filters{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.sh-filters .chip{text-decoration:none;min-height:44px}
.sh-fsearch{margin-inline-start:auto;width:min(280px,100%)}
.sh-fsearch .input input{flex:1;min-width:0;border:0;background:none;font:inherit;color:var(--text);outline:0;height:100%}
.sh-tblw{overflow-x:auto;min-width:0}
.sh-tbl{font-size:calc(14.5px*var(--k))}
.sh-tbl th{font-size:13px;letter-spacing:.08em;white-space:nowrap}
[dir=rtl] .sh-tbl th{font-size:13.5px;letter-spacing:0}
.sh-tbl td{padding:8px 10px;border-bottom:1px solid var(--line)}
.sh-tbl .r{text-align:end;font-variant-numeric:tabular-nums;white-space:nowrap}
.sh-tbl td.pn .pnw{display:flex;align-items:center;gap:12px;color:var(--text);text-decoration:none;min-height:44px}
.sh-tbl td.pn a.pnw:hover b{text-decoration:underline 1.5px var(--action);text-underline-offset:4px}
.sh-tbl td.pn b{font-weight:600;display:block;line-height:1.25}
.sh-tbl td.pn small{display:block;color:var(--muted);font-size:13.5px}
.sh-tbl td small.sub{display:block;color:var(--muted);font-size:13px}
.sh-tbl tr.flag td{background:rgba(180,42,20,.045)}
html[data-theme="dark"] .sh-tbl tr.flag td{background:rgba(255,138,115,.07)}
.sh-tbl tr.sel td{background:var(--panel)}
.sh-tbl tr.off td{opacity:.6}
.sh-tbl .neg{color:var(--bad);font-weight:650}
.sh-tbl tfoot td{border-bottom:0;border-top:1.5px solid var(--text);font-weight:650}
.sh-go-cell{width:52px}
.sh-lvl{display:grid;gap:4px;min-width:112px}
.sh-lvl .b{height:6px;border-radius:2px;background:var(--line);position:relative;overflow:hidden}
.sh-lvl .b i{position:absolute;inset-block:0;inset-inline-start:0;background:var(--text)}
.sh-lvl.low .b i{background:var(--warn)}
.sh-lvl .t{display:flex;justify-content:space-between;gap:8px;font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}
.sh-lvl .t b{color:var(--text);font-weight:650;font-size:14.5px}
.sh-lvl.low .t b,.sh-lvl.out .t b{color:var(--warn)}
.sh-oempty{padding:40px 0}

/* side panel over the page (product sheet, restock, adjust, count) */
.sh-pscrim{position:fixed;inset:0;z-index:38;background:rgba(3,7,18,.35);display:block}
.sh-panel{position:fixed;top:0;bottom:0;inset-inline-end:0;z-index:40;width:min(620px,100vw);background:var(--page);box-shadow:0 0 0 1px var(--line-2),-40px 0 60px -40px rgba(11,21,48,.6);display:flex;flex-direction:column;min-height:0}
.sh-panel.wide{width:min(700px,100vw)}
[dir=rtl] .sh-panel{box-shadow:0 0 0 1px var(--line-2),40px 0 60px -40px rgba(11,21,48,.6)}
.sh-ph-h{display:flex;align-items:center;gap:12px;padding:18px 24px 14px;border-bottom:1px solid var(--line)}
.sh-ph-h h2{font-size:calc(22px*var(--k));font-weight:700;letter-spacing:-.03em;line-height:1.15}
[dir=rtl] .sh-ph-h h2{letter-spacing:0;line-height:1.35}
.sh-ph-h small{display:block;color:var(--muted);font-size:calc(14px*var(--k));margin-top:3px}
.sh-ph-h .sh-x{margin-inline-start:auto;border-radius:50%;width:44px;height:44px}
.sh-pb{flex:1;min-height:0;overflow-y:auto;padding:18px 24px;display:flex;flex-direction:column;gap:14px}
.sh-pf{padding:14px 24px 18px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--page)}
.sh-pf .btn.primary{height:50px}
.sh-f3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.sh-pb .field>span small,.sh-settings .field>span small{font-weight:500;color:var(--muted);font-size:13px}
.sh-ro{background:transparent!important}
.sh-ro b{font-weight:650;font-variant-numeric:tabular-nums}
.sh-ro .suf{margin-inline-start:auto;color:var(--muted);font-size:13.5px;font-variant-numeric:tabular-nums}
.sh-ro a.suf{color:var(--text)}
.sh-stepper.sh-stepw{width:100%;justify-content:space-between;height:44px}
.sh-stepper.sh-stepw input{flex:1;width:auto}
.sh-stepper.sm{height:40px}
.sh-stepper.sm button{width:40px}
.sh-stepper.sm input{width:48px}
.sh-photo{display:grid;grid-template-columns:120px minmax(0,1fr);gap:16px;align-items:center}
.sh-photo .sh-ph{width:120px}
.sh-photo-t{display:grid;gap:8px;justify-items:start}
.sh-photo-t .btn{position:relative;cursor:pointer}
.sh-setrow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 20px;padding:10px 0;border-top:1px solid var(--line);align-items:center;cursor:pointer}
.sh-setrow b{display:block;font-size:calc(15.5px*var(--k));font-weight:650}
.sh-setrow small{display:block;font-size:calc(13.5px*var(--k));color:var(--muted);line-height:1.5;max-width:56ch}
.sh-setrow.sh-compact{border-top:0;padding:24px 0 0}
.sh-pmoves{display:grid;gap:4px;margin-top:6px}
.sh-journal{display:grid}
.sh-journal .j{display:grid;grid-template-columns:118px 22px minmax(0,1fr) auto;gap:10px;align-items:center;min-height:52px;padding:4px 0;border-bottom:1px solid var(--line);font-size:calc(14.5px*var(--k))}
.sh-journal .j time{color:var(--muted);font-variant-numeric:tabular-nums;font-size:calc(13.5px*var(--k));white-space:nowrap}
.sh-journal .j .ic{width:18px;height:18px;color:var(--muted)}
.sh-journal .j .who{color:var(--muted);font-size:calc(13.5px*var(--k))}
.sh-journal .j.chk{background:linear-gradient(90deg,var(--warn-bg,transparent),transparent 70%)}
.sh-journal.sm .j{grid-template-columns:118px minmax(0,1fr);min-height:40px}
.sh-mnav{display:flex;align-items:center;gap:10px}
.sh-mnav b{font-size:calc(16px*var(--k));font-weight:650;min-width:9em;text-align:center}
.sh-mnav.sm{margin-inline-start:auto}
.sh-mnav .btn.icon{width:44px;height:44px}
.sh-sh{display:flex;align-items:baseline;gap:10px;margin-bottom:8px;flex-wrap:wrap}
.sh-sh .legend,.sh-sh .seg{margin-inline-start:auto}
.sh-sw{width:16px;height:11px;background:var(--text);display:inline-block}
.sh-strip{grid-template-columns:repeat(4,minmax(0,1fr))}
.sh-strip>div{padding:12px 16px 14px;border-inline-end:1px solid var(--line)}
.sh-strip>div:first-child{padding-inline-start:0}
.sh-strip>div:last-child{border-inline-end:0}
.sh-strip small{font-size:calc(13.5px*var(--k))}
.sh-strip b{font-size:calc(22px*var(--k));font-weight:650}
.sh-strip .sub{font-size:calc(13px*var(--k));color:var(--muted);display:block}
.sh-two{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:40px;align-items:start}
.sh-chart{height:auto;overflow:visible}
.sh-chart text{font:500 12.5px Outfit,sans-serif;fill:var(--muted);font-variant-numeric:tabular-nums}
.sh-chart text.v{font-weight:650;fill:var(--text)}
.sh-chart .base{stroke:var(--text);stroke-width:1}
.sh-chart .grid{stroke:var(--line);stroke-width:1}
.sh-chart .mg{fill:var(--text)}
.sh-segl a{height:36px;padding:0 12px;border-radius:8px;display:flex;align-items:center;font-size:calc(14px*var(--k));font-weight:600;color:var(--muted);text-decoration:none}
.sh-segl a.on{background:var(--raised);color:var(--text);box-shadow:0 1px 0 var(--line-2)}
.sh-best{list-style:none;margin:0;padding:0;display:grid}
.sh-best li{display:grid;grid-template-columns:22px 44px minmax(0,1fr) auto;gap:4px 12px;align-items:center;padding:9px 0;border-bottom:1px solid var(--line)}
.sh-best .rk{font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums}
.sh-best b{font-weight:600;font-size:calc(14.5px*var(--k))}
.sh-best b small{display:block;font-weight:400}
.sh-best .v{font-weight:650;font-variant-numeric:tabular-nums;white-space:nowrap}
.sh-best .hb{grid-column:3/5;height:8px;border-radius:2px;overflow:hidden;background:var(--line)}
.sh-best .hb svg{display:block;width:100%;height:8px}
.sh-stockgrid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:40px;align-items:start}
.sh-checks{display:grid;gap:10px;align-content:start}
.sh-chk{display:grid;gap:8px;padding:12px 14px;border-radius:8px;background:var(--panel);box-shadow:0 0 0 1px var(--line)}
.sh-chk b{display:block;font-weight:650;font-size:calc(14.5px*var(--k))}
.sh-chk small{display:block;color:var(--muted);font-size:13.5px}
.sh-chka{display:flex;gap:8px;flex-wrap:wrap}
.sh-adjp{display:flex;gap:12px;align-items:center}
.sh-adjp b{display:block;font-weight:650}
.sh-rstbl td{vertical-align:top}
.sh-rstbl select.input{min-width:200px}
.sh-rstbl small[data-hint]{display:block;margin-top:4px;min-height:1.2em}
.sh-num{width:96px;text-align:end;font-variant-numeric:tabular-nums}
.sh-segr{display:flex;width:100%;flex-wrap:wrap}
.sh-segr label{flex:1;min-height:44px;padding:0 10px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:calc(14px*var(--k));font-weight:600;color:var(--muted);cursor:pointer;text-align:center}
.sh-segr label.on{background:var(--raised);color:var(--text);box-shadow:0 1px 0 var(--line-2)}
.sh-segr label.dis{opacity:.5;cursor:not-allowed}
.sh-segr input{position:absolute;opacity:0;pointer-events:none}
.sh-segr label:has(input:focus-visible){outline:3px solid var(--focus);outline-offset:2px}
.sh-tabsgrid{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:32px;align-items:start}
.sh-tabtbl .av{width:40px;height:40px}
.sh-tabtbl small.lat{font-size:13.5px}
.sh-rl{display:grid;gap:2px;justify-items:start}
.sh-rl small{font-size:13px;color:var(--muted)}
.sh-mutedbtn{color:var(--muted)!important}
.sh-mt{margin-top:5px}
.sh-tabside{display:grid;gap:14px;position:sticky;top:24px}
.sh-msg{font-weight:500!important;font-size:calc(15.5px*var(--k))!important;line-height:1.5}
.sh-wa{height:52px;justify-content:space-between}
.sh-detail .sh-grp,.sh-mslip .sh-grp{font-size:12.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted);margin-top:12px;display:flex;justify-content:space-between;align-items:center;gap:8px}
[dir=rtl] .sh-detail .sh-grp,[dir=rtl] .sh-mslip .sh-grp{text-transform:none;font-size:13px;letter-spacing:0}
.sh-detail .sh-grp a,.sh-mslip .sh-grp a{color:var(--cobalt-deep);text-decoration:none;letter-spacing:0;text-transform:none;font-weight:600;min-height:44px;display:inline-flex;align-items:center;padding-inline:6px}
.slip dl div.paid{color:var(--ink-muted)}
.slip .q{color:var(--ink-muted);font-variant-numeric:tabular-nums}
.sh-rule{display:grid;gap:10px;padding-top:6px}
.sh-allpaid{padding:40px 0;display:grid;gap:12px;justify-items:start}
.sh-settings{display:grid;gap:34px;max-width:880px}
.sh-setform{display:grid;gap:30px}
.sh-setform section,.sh-settings>section{display:grid;gap:14px}
.sh-narrow{max-width:260px}
.sh-setgo{display:flex;justify-content:flex-end}
.sh-cattbl td{padding:6px 8px}
.sh-acts{display:flex;gap:6px;justify-content:flex-end}
.sh-suplist{list-style:none;margin:0;padding:0;display:grid}
.sh-suplist li{display:flex;gap:10px;align-items:center;min-height:44px;border-bottom:1px solid var(--line)}
.sh-suplist .ic{width:18px;height:18px;color:var(--muted)}

/* counter: a sale's page (returns, cancellation) */
.sh-dph{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap}
.sh-dph .end{margin-inline-start:auto}
.sh-detailgrid{display:grid;grid-template-columns:340px minmax(0,1fr);gap:40px;align-items:start}
.sh-rcw.static{margin:0;animation:none}
.sh-detailacts{display:grid;gap:28px;max-width:560px}
.sh-detailacts section{display:grid;gap:12px}
.sh-ret{display:grid;gap:10px;padding:12px 0;border-bottom:1px solid var(--line)}
.sh-ret-h b{display:block;font-weight:650}
.sh-ret-f{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.sh-narrowalert{max-width:640px}

/* printed report (A4) */
.sh-report .sh-sheet{max-width:820px;margin:0 auto 40px;background:var(--sheet);padding:36px 40px;box-shadow:var(--shadow-paper);display:grid;gap:22px}
.sh-letter{display:flex;align-items:center;gap:14px;padding-bottom:16px;border-bottom:1.5px solid var(--ink)}
.sh-letter svg,.sh-letter img{color:var(--ink)}
.sh-letter b{display:block;font-size:18px;font-weight:700}
.sh-letter small{display:block;color:var(--ink-muted);font-size:13px}
.sh-letter-t{margin-inline-start:auto;font-weight:650;color:var(--ink-muted);font-size:14px}
.sh-letterfoot{display:flex;justify-content:space-between;align-items:center;gap:10px;color:var(--ink-muted);font-size:13px;border-top:1px solid var(--hair);padding-top:12px}
@media print{.sh-report .sh-sheet{box-shadow:none;padding:0;max-width:none}}
/* The report opened on a phone: the sheet fits the screen, the letterhead wraps, a wide table scrolls in its own box */
.sh-tblw{min-width:0;max-width:100%;overflow-x:auto}
@media screen and (max-width:600px){
  .sh-report .sh-sheet{padding:20px 16px;margin-inline:0}
  .sh-letter{flex-wrap:wrap}
  .sh-letter-t{margin-inline-start:0;flex-basis:100%}
  .sh-ptools{flex-wrap:wrap}
}

/* ---- member app: "À régler à l'accueil", the detail, receipts (board M1–M4) ---- */
/* the member's "À régler à l'accueil" row draws through views/app/partials/owe-row.ejs (member.css .mb-owe) */
.sh-rrow{text-decoration:none;color:inherit}
.sh-mbody{display:flex;flex-direction:column;gap:18px;padding-bottom:28px}
.sh-bigamt{display:grid;gap:4px}
.sh-bigamt b{font-size:calc(56px*var(--k));font-weight:700;letter-spacing:-.05em;line-height:.95;font-variant-numeric:tabular-nums;word-spacing:.05em;color:var(--text-hi)}
.sh-bigamt b small{font-size:.42em;letter-spacing:-.01em;font-weight:600;margin-inline-start:6px}
[dir=rtl] .sh-bigamt b{line-height:1.2;letter-spacing:0}
.sh-mslip dl{margin:0}
.sh-tot2{display:flex;justify-content:space-between;align-items:baseline;border-top:1.5px solid var(--ink);margin-top:10px;padding-top:10px;font-weight:700}
.sh-tot2 b{font-size:24px;letter-spacing:-.015em;font-variant-numeric:tabular-nums;white-space:nowrap}
.sh-rc{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;align-items:center;min-height:60px;text-decoration:none;color:inherit}
.sh-rc-l b{display:block;font-weight:600;font-size:calc(16px*var(--k))}
.sh-rc .v{display:flex;gap:6px;align-items:center;font-weight:650;color:var(--text)!important;white-space:nowrap}
.sh-rc .v .ic{width:18px;height:18px;color:var(--muted)}
.sh-mrc{align-items:center}
.sh-mrc .rcpt-wrap{width:100%;max-width:340px}

@media (max-width:1100px){
  .sh-stockgrid,.sh-tabsgrid,.sh-two{grid-template-columns:minmax(0,1fr)}
  .sh-tabside{position:static}
}
@media (max-width:900px){
  .sh-hide-m{display:none}
  .sh-strip{grid-template-columns:repeat(2,minmax(0,1fr))}
  .sh-strip>div:nth-child(2n){border-inline-end:0}
  .sh-strip>div:nth-child(n+3){border-top:1px solid var(--line)}
  .sh-strip>div:nth-child(3){padding-inline-start:0}
  .sh-sent{font-size:calc(21px*var(--k))}
  .sh-f3{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .sh-panel,.sh-panel.wide{width:100vw;top:auto;height:92dvh;border-radius:18px 18px 0 0}
  .sh-pf{padding-bottom:calc(18px + env(safe-area-inset-bottom,0px))}
  .sh-detailgrid{grid-template-columns:minmax(0,1fr)}
  .sh-fsearch{margin-inline-start:0;width:100%}
  .sh-journal .j{grid-template-columns:minmax(0,1fr) auto;gap:2px 10px}
  .sh-journal .j time{grid-column:1/-1}
  .sh-journal .j>.ic{display:none}
  .sh-mnav b{min-width:0}
  .sh-photo{grid-template-columns:96px minmax(0,1fr)}
  .sh-photo .sh-ph{width:96px}
}
@media (max-width:560px){
  .sh-f3{grid-template-columns:minmax(0,1fr)}
  .sh-f2{grid-template-columns:minmax(0,1fr)}
  .sh-lvl{min-width:80px}
  .sh-tbl td,.sh-tbl th{padding-inline:6px}
  .sh-best li{grid-template-columns:18px 44px minmax(0,1fr) auto}
}
/* fields inside grids never push their column wider than 1fr */
.sh-f2>*,.sh-f3>*{min-width:0}
.sh-amt input,.sh-stepper input{min-width:0;width:100%}
.sh-stepper input{width:64px}
.sh-stepper.sh-stepw input{width:100%}
.sh-stepper.sm input{width:48px}
.sh-ro{min-width:0;overflow:hidden;white-space:nowrap}
.sh-self{justify-self:start}
.sh-leaders div dt{flex:1;display:flex;align-items:baseline;gap:8px;min-width:0}
.sh-leaders dt .lead{flex:1;border-bottom:1.5px dotted var(--hair-2);transform:translateY(-4px);min-width:12px}
.sh-tblw:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.sh-tblw{position:relative} /* keeps absolutely positioned labels (sr-only) inside the scroll box */
@media (max-width:560px){
  .sh-cat .sh-go-cell,.sh-cat th:last-child{display:none}
  .sh-cat td.pn small{display:none}
  .sh-cat .sh-lvl{min-width:64px}
  .sh-cat .sh-lvl .t span{display:none}
  .sh-cat td.pn .pnw{gap:10px}
  .sh-oph{gap:10px}
  .sh-oph .ow-ph-acts{width:100%}
  .sh-oph .ow-ph-acts .btn{flex:1}
}
.sh-stepper:not(.sh-stepw){justify-self:start}
