/* ============================================================
   GLASS POS KIT — liquid-glass componentstijl (FurnStream Kassa v2)
   Tokens zijn 1:1 overgenomen uit het FurnStream Kassa v2-ontwerp.
   Gebruik: laad NA bootstrap.min.css.
   Thema:   data-gp-theme="dark" | "light" op <html>.
   Instelbaar per klant:
     --gp-accent : merk-gloedkleur
     --gp-bg     : app-achtergrond (alleen zichtbaar in dark)
   ============================================================ */

:root, [data-gp-theme="dark"] {
  --gp-accent: #B0509F;
  --gp-bg: #0A0A0C;
  --gp-bg2: color-mix(in oklab, var(--gp-bg), white 7%);
  --gp-ink: #F4F6F7;
  --gp-ink-40: rgba(244,246,247,.4);  --gp-ink-45: rgba(244,246,247,.45);
  --gp-ink-50: rgba(244,246,247,.5);  --gp-ink-55: rgba(244,246,247,.55);
  --gp-ink-60: rgba(244,246,247,.6);  --gp-ink-65: rgba(244,246,247,.65);
  --gp-ink-70: rgba(244,246,247,.7);  --gp-ink-85: rgba(244,246,247,.85);
  /* fills (v2: f055…f20) */
  --gp-f055: rgba(255,255,255,.055);  --gp-f06: rgba(255,255,255,.06);
  --gp-f07: rgba(255,255,255,.07);    --gp-f08: rgba(255,255,255,.08);
  --gp-f09: rgba(255,255,255,.09);    --gp-f10: rgba(255,255,255,.1);
  --gp-f14: rgba(255,255,255,.14);    --gp-f16: rgba(255,255,255,.16);
  --gp-f18: rgba(255,255,255,.18);    --gp-f20: rgba(255,255,255,.2);
  /* borders */
  --gp-ln1: rgba(255,255,255,.09);
  --gp-ln2: rgba(255,255,255,.12);
  --gp-ln3: rgba(255,255,255,.25);
  /* glass */
  --gp-pan-a: rgba(40,44,52,.36);  --gp-pan-b: rgba(14,16,20,.24);
  --gp-mod-a: rgba(42,46,54,.58);   --gp-mod-b: rgba(16,18,22,.46);
  --gp-spec: rgba(255,255,255,.07);   /* panel sheen */
  --gp-spec2: rgba(255,255,255,.08);  /* modal/login sheen */
  --gp-blur: blur(30px) saturate(1.9);
  --gp-pan-shadow: 0 24px 70px rgba(0,0,0,.45), 0 4px 20px rgba(0,0,0,.3),
                   inset 0 1px 0 rgba(255,255,255,.22), inset 0 -1px 0 rgba(255,255,255,.05);
  --gp-card-shadow-big: 0 30px 80px rgba(0,0,0,.5), inset 0 1px 0 rgba(255,255,255,.28);
  --gp-btn-shadow: inset 0 1px 0 rgba(255,255,255,.16);
  --gp-key-shadow: inset 0 1px 0 rgba(255,255,255,.25);
  --gp-card-in: inset 0 1px 0 rgba(255,255,255,.12);
  /* solid (active state / CTA) */
  --gp-solid: #F4F6F7;  --gp-solid-ink: #0B0C0F;  --gp-solid-hover: #ffffff;
  /* accent derivatives */
  --gp-accent-strong: color-mix(in oklab, var(--gp-accent), white 40%);
  --gp-accent-glow: color-mix(in srgb, var(--gp-accent) 35%, transparent);
  --gp-accent-soft: color-mix(in srgb, var(--gp-accent) 14%, transparent);
  --gp-accent-line: color-mix(in srgb, var(--gp-accent) 40%, transparent);
  --gp-accent-dot: var(--gp-accent);
  /* glow orbs */
  --gp-glow-o1: .30; --gp-glow-o2: .34; --gp-glow-o3: .18;
  /* overlay */
  --gp-backdrop: rgba(4,6,10,.45);
  --gp-ov-blur: blur(14px);
  --gp-scrim: linear-gradient(180deg, rgba(5,8,12,.35), rgba(5,8,12,.55));
  /* compat aliases (older kit pages) */
  --gp-fill: var(--gp-f055); --gp-fill-btn: var(--gp-f08);
  --gp-fill-hover: var(--gp-f16); --gp-line: var(--gp-ln1);
  --gp-line-2: var(--gp-ln2); --gp-line-hover: var(--gp-ln3);
}

[data-gp-theme="light"] {
  --gp-bg: #E4E7EC;  /* fixed; the customer bg only applies in dark */
  --gp-bg2: color-mix(in oklab, var(--gp-bg), black 3%);
  --gp-ink: #191C22;
  --gp-ink-40: rgba(28,32,40,.5);  --gp-ink-45: rgba(28,32,40,.55);
  --gp-ink-50: rgba(28,32,40,.58); --gp-ink-55: rgba(28,32,40,.62);
  --gp-ink-60: rgba(28,32,40,.66); --gp-ink-65: rgba(28,32,40,.7);
  --gp-ink-70: rgba(28,32,40,.75); --gp-ink-85: rgba(28,32,40,.88);
  --gp-f055: rgba(255,255,255,.42); --gp-f06: rgba(255,255,255,.5);
  --gp-f07: rgba(255,255,255,.55);  --gp-f08: rgba(255,255,255,.6);
  --gp-f09: rgba(255,255,255,.6);   --gp-f10: rgba(255,255,255,.65);
  --gp-f14: rgba(255,255,255,.92);  --gp-f16: rgba(255,255,255,.92);
  --gp-f18: rgba(255,255,255,.95);  --gp-f20: rgba(255,255,255,.95);
  --gp-ln1: rgba(255,255,255,.65);
  --gp-ln2: rgba(255,255,255,.8);
  --gp-ln3: rgba(22,28,38,.25);
  --gp-pan-a: rgba(255,255,255,.42); --gp-pan-b: rgba(255,255,255,.18);
  --gp-mod-a: rgba(255,255,255,.66); --gp-mod-b: rgba(255,255,255,.42);
  --gp-spec: rgba(255,255,255,.85);
  --gp-spec2: rgba(255,255,255,.92);
  --gp-blur: blur(50px) saturate(2.2);
  --gp-pan-shadow: 0 30px 80px rgba(50,60,90,.2), 0 2px 8px rgba(50,60,90,.06),
                   inset 0 0 0 1px rgba(255,255,255,.6), inset 0 1.5px 0 rgba(255,255,255,.95),
                   inset 0 1px 0 rgba(255,255,255,.22), inset 0 -1px 0 rgba(255,255,255,.05);
  --gp-card-shadow-big: 0 34px 90px rgba(50,60,90,.26), inset 0 0 0 1px rgba(255,255,255,.7),
                        inset 0 1.5px 0 rgba(255,255,255,.95);
  --gp-btn-shadow: 0 4px 14px rgba(50,60,85,.12), inset 0 1px 0 rgba(255,255,255,.95);
  --gp-key-shadow: 0 4px 14px rgba(50,60,85,.14), inset 0 1px 0 rgba(255,255,255,.9);
  --gp-card-in: 0 2px 10px rgba(50,60,85,.08), inset 0 1px 0 rgba(255,255,255,.85);
  --gp-solid: color-mix(in oklab, var(--gp-accent) 24%, #2A2E36);  --gp-solid-ink: #FFFFFF;  --gp-solid-hover: color-mix(in oklab, var(--gp-accent) 24%, #1D2027);
  --gp-accent-strong: color-mix(in oklab, var(--gp-accent), black 14%);
  --gp-accent-glow: color-mix(in srgb, var(--gp-accent) 35%, transparent);
  --gp-accent-dot: color-mix(in oklab, var(--gp-accent), black 12%);
  --gp-glow-o1: .40; --gp-glow-o2: .44; --gp-glow-o3: .26;
  --gp-backdrop: rgba(226,230,238,.4);
  --gp-ov-blur: blur(30px) saturate(1.6);
  --gp-scrim: linear-gradient(180deg, rgba(244,246,249,.5), rgba(244,246,249,.72));
}

/* ---------- App canvas + glow ---------- */
.gp-app {
  position: relative; overflow: hidden;
  background: linear-gradient(160deg, var(--gp-bg) 0%, var(--gp-bg2) 100%);
  color: var(--gp-ink);
  font-family: 'Sora', sans-serif;
  font-variant-numeric: tabular-nums;
  -webkit-font-smoothing: antialiased;
}
.gp-app a { color: var(--gp-ink); text-decoration: none; }
.gp-app a:hover { color: var(--gp-accent-strong); }
.gp-app a.gp-btn, .gp-app a.gp-key, .gp-app a.gp-chip { color: var(--gp-ink); }
.gp-app a.gp-btn:hover, .gp-app a.gp-key:hover, .gp-app a.gp-chip:hover { color: var(--gp-ink); }
.gp-app a.gp-btn-solid, .gp-app a.gp-btn-solid:hover { color: var(--gp-solid-ink); }
.gp-app a.gp-key-nav { color: var(--gp-ink-55); }
.gp-app a.gp-key-nav:hover { color: var(--gp-ink); }
.gp-app a.gp-key-nav.active, .gp-app a.gp-key-nav.active:hover { color: var(--gp-solid-ink); }
.gp-glows { position: absolute; inset: 0; overflow: hidden; pointer-events: none; }
.gp-glows i { position: absolute; border-radius: 50%; filter: blur(90px); }
.gp-glows i:nth-child(1) { width: 44vw; height: 44vw; left: -10vw; top: -12vw;
  background: radial-gradient(circle, var(--gp-accent), transparent 70%);
  opacity: var(--gp-glow-o1); animation: gp-drift 26s ease-in-out infinite alternate; }
.gp-glows i:nth-child(2) { width: 40vw; height: 40vw; right: -8vw; top: 22vh;
  background: radial-gradient(circle, color-mix(in oklab, var(--gp-accent), black 20%), transparent 70%);
  opacity: var(--gp-glow-o2); animation: gp-drift 34s ease-in-out -8s infinite alternate; }
.gp-glows i:nth-child(3) { width: 36vw; height: 36vw; left: 24vw; bottom: -16vw;
  background: radial-gradient(circle, color-mix(in oklab, var(--gp-accent), white 30%), transparent 70%);
  opacity: var(--gp-glow-o3); animation: gp-drift 42s ease-in-out -16s infinite alternate; }
@keyframes gp-drift { to { transform: translate3d(3vw, 2vh, 0) scale(1.08); } }
@keyframes gp-fsbar { from { transform: translateY(10px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }

/* ---------- Glass panel ---------- */
.gp-panel {
  border-radius: 26px;
  border: 1px solid var(--gp-ln1);
  background: radial-gradient(120% 70% at 25% 0%, var(--gp-spec), transparent 55%),
              linear-gradient(165deg, var(--gp-pan-a), var(--gp-pan-b));
  backdrop-filter: var(--gp-blur); -webkit-backdrop-filter: var(--gp-blur);
  box-shadow: var(--gp-pan-shadow);
}

/* ---------- Modal / login card (stronger glass) ---------- */
.gp-modal {
  color: var(--gp-ink);
  font-family: 'Sora', sans-serif;
  border-radius: 28px;
  border: 1px solid var(--gp-ln2);
  background: radial-gradient(140% 60% at 30% 0%, var(--gp-spec2), transparent 55%),
              linear-gradient(165deg, var(--gp-mod-a), var(--gp-mod-b));
  backdrop-filter: var(--gp-blur); -webkit-backdrop-filter: var(--gp-blur);
  box-shadow: var(--gp-card-shadow-big);
}
.gp-modal-backdrop {
  position: fixed; inset: 0; z-index: 50;
  background: var(--gp-backdrop);
  backdrop-filter: var(--gp-ov-blur); -webkit-backdrop-filter: var(--gp-ov-blur);
  display: flex; align-items: center; justify-content: center;
}
.gp-scrim { position: absolute; inset: 0; background: var(--gp-scrim); pointer-events: none; }

/* ---------- Card / product tile / order line ---------- */
.gp-card {
  border-radius: 18px;
  background: var(--gp-f055);
  border: 1px solid var(--gp-ln1);
  box-shadow: var(--gp-card-in);
  transition: border-color .12s ease;
}
.gp-card:hover { border-color: var(--gp-ln3); }
button.gp-card { color: var(--gp-ink); font-family: 'Sora', sans-serif; }
.gp-tile { border-radius: 20px; overflow: hidden; position: relative; }
.gp-tile-photo { height: 112px; background: var(--gp-f06); display: flex; align-items: center; justify-content: center; color: var(--gp-ink-40); font-size: 11px; }
.gp-tile-add {
  position: absolute; top: 10px; right: 10px; width: 36px; height: 36px; border-radius: 50%;
  background: rgba(8,10,14,.55); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  border: 1px solid var(--gp-ln2); color: #fff; font-size: 19px; line-height: 1; font-weight: 400; cursor: pointer;
}
.gp-tile-add:hover { background: var(--gp-solid); color: var(--gp-solid-ink); }

/* ---------- Buttons ---------- */
.gp-btn {  /* pill button (quick amounts: h48 f07) */
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  height: 48px; padding: 0 20px; border-radius: 999px;
  background: var(--gp-f07); border: 1px solid var(--gp-ln1);
  color: var(--gp-ink); font: 600 14px/1 'Sora', sans-serif;
  box-shadow: var(--gp-btn-shadow); cursor: pointer;
  transition: transform .12s ease, background .12s ease;
}
.gp-btn:hover { background: var(--gp-f16); transform: translateY(-1px); color: var(--gp-ink); }
.gp-btn-sm { height: auto; min-height: 34px; padding: 9px 16px; font-size: 12px; }
.gp-btn-wide { padding: 15px 28px; height: auto; background: var(--gp-f08); border-color: var(--gp-ln2); }
.gp-btn-solid {  /* CTA: h58, accent-glow */
  height: 58px; padding: 0 28px;
  background: var(--gp-solid); border: none; color: var(--gp-solid-ink);
  font-size: 16px; font-weight: 600;
  box-shadow: 0 6px 24px var(--gp-accent-glow), inset 0 1px 0 rgba(255,255,255,.8);
}
.gp-btn-solid:hover { background: var(--gp-solid-hover); color: var(--gp-solid-ink); transform: none; }

/* ---------- Round keys ---------- */
.gp-key {  /* payment keypad: 62px f08 */
  display: inline-flex; align-items: center; justify-content: center;
  width: 62px; height: 62px; border-radius: 50%; padding: 0;
  background: var(--gp-f08); border: 1px solid var(--gp-ln2);
  color: var(--gp-ink); font: 500 19px 'Sora', sans-serif;
  box-shadow: var(--gp-key-shadow); cursor: pointer;
  transition: transform .12s ease, background .12s ease;
}
.gp-key:hover { background: var(--gp-f18); }
.gp-key-lg {  /* login keypad: 74px f10 */
  width: 74px; height: 74px; font-size: 22px;
  background: var(--gp-f10);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
}
.gp-key-lg:hover { background: var(--gp-f20); transform: translateY(-1px); }
.gp-key-44 { width: 44px; height: 44px; font-size: 17px; }
.gp-key-qty { width: 34px; height: 34px; font-size: 16px; line-height: 1; }
.gp-key-nav {  /* nav-rail icon: 48px f07 */
  width: 48px; height: 48px; font-size: 16px;
  background: var(--gp-f07); border-color: var(--gp-ln1); color: var(--gp-ink-55);
}
.gp-key-nav:hover { background: var(--gp-f16); color: var(--gp-ink); }
.gp-key-nav.active { background: var(--gp-solid); border-color: transparent; color: var(--gp-solid-ink); }

/* ---------- Chips ---------- */
.gp-chip {
  display: inline-flex; align-items: center; min-height: 44px; padding: 10px 18px;
  border-radius: 999px; background: var(--gp-f06); border: 1px solid var(--gp-ln1);
  color: var(--gp-ink-85); font: 600 13px/1 'Sora', sans-serif;
  box-shadow: var(--gp-btn-shadow); cursor: pointer; transition: transform .12s ease;
}
.gp-chip:hover { transform: translateY(-1px); }
.gp-chip.active { background: var(--gp-solid); color: var(--gp-solid-ink); border-color: transparent; }
.gp-chip-sub { min-height: 0; padding: 7px 14px; font-size: 12px; font-weight: 500; background: transparent; border-color: var(--gp-ln2); color: var(--gp-ink-65); box-shadow: none; }
.gp-chip-sub.active { background: var(--gp-solid); color: var(--gp-solid-ink); }

/* ---------- Segmented control ---------- */
.gp-segment {
  display: inline-flex; gap: 4px; padding: 4px; border-radius: 999px;
  background: var(--gp-f06); border: 1px solid var(--gp-ln1);
}
.gp-segment .gp-seg {
  padding: 8px 15px; border: none; border-radius: 999px; background: transparent;
  color: var(--gp-ink-60); font: 600 12px/1 'Sora', sans-serif; cursor: pointer;
}
.gp-segment .gp-seg.active { background: var(--gp-solid); color: var(--gp-solid-ink); }

/* ---------- Input field ---------- */
.gp-input {
  display: flex; align-items: center; gap: 10px; height: 46px; padding: 0 18px;
  border-radius: 999px; background: var(--gp-f07); border: 1px solid var(--gp-ln1);
  box-shadow: var(--gp-btn-shadow);
}
.gp-input input {
  flex: 1; min-width: 0; background: transparent; border: none; outline: none;
  color: var(--gp-ink); font: 400 14px 'Sora', sans-serif;
}
.gp-input input::placeholder { color: var(--gp-ink-50); }

/* ---------- Accent carriers ---------- */
.gp-accent-text { color: var(--gp-accent-strong); }
.gp-tag {
  display: inline-flex; align-items: center; gap: 8px; padding: 8px 14px; border-radius: 999px;
  background: var(--gp-accent-soft); border: 1px solid var(--gp-accent-line);
  color: var(--gp-accent-strong); font: 600 12px/1 'Sora', sans-serif;
}
.gp-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--gp-accent-dot);
  box-shadow: 0 0 8px var(--gp-accent-dot); display: inline-block; flex-shrink: 0; }

/* ---------- Logo bars ---------- */
.gp-logo { display: flex; gap: 5px; transform: skewX(-14deg); }
.gp-logo b { width: 9px; height: 30px; border-radius: 5px; background: var(--gp-ink); }
.gp-logo b:nth-child(2) { opacity: .78; margin-top: 6px; }
.gp-logo b:nth-child(3) { opacity: .58; }
.gp-logo-sm b { width: 6px; height: 20px; border-radius: 3px; }
.gp-logo-sm b:nth-child(2) { margin-top: 4px; }

/* ---------- Misc ---------- */
.gp-muted { color: var(--gp-ink-50); }
.gp-label { font: 600 11px/1 'Sora', sans-serif; letter-spacing: 1.5px; text-transform: uppercase; color: var(--gp-ink-45); }
.gp-divider { border: 0; border-top: 1px solid var(--gp-ln1); opacity: 1; margin: 14px 0; }
.gp-app ::-webkit-scrollbar { width: 8px; height: 8px; }
.gp-app ::-webkit-scrollbar-thumb { background: var(--gp-ln2); border-radius: 4px; }
.gp-app ::-webkit-scrollbar-track { background: transparent; }

/* ---------- Microinteractions ---------- */
@keyframes gp-flash { 0% { background: var(--gp-accent-soft); border-color: var(--gp-accent-line); } 100% { background: var(--gp-f055); border-color: var(--gp-ln1); } }
.gp-flash { animation: gp-flash .8s ease; }
.gp-app .gp-card { transition: border-color .12s ease, transform .1s ease; }
.gp-tile:active, .gp-card[data-add]:active { transform: scale(.985); }