/* =============================================================================================
   PosMoviles themes, professional monochrome. <html data-pos-theme="mono"> (default, light) or "graphite"
   (dark). Chosen per computer with the sun/moon button in the top bar (pos.js, cookie "pos-look").
   Black, white and greys with subtle frosted-glass panels; colour only where it means something
   (errors, warnings, OK) and a thin stripe for each shop. Every rule below reads these tokens;
   Bootstrap's own variables are mapped onto them.
   ============================================================================================= */

/* Mono (default). Also used by pages without a theme (printed tickets bring their own white page). */
:root[data-pos-theme="mono"],
:root:not([data-pos-theme]) {
    --pos-bg: linear-gradient(180deg, #FAFAFA 0%, #F1F1F1 100%);

    /* Frosted panels: cards, sidebar, top bar, alerts. */
    --pos-glass-bg: rgba(255, 255, 255, 0.78);
    --pos-glass-border: rgba(17, 17, 17, 0.08);
    --pos-glass-shadow: 0 1px 2px rgba(17, 17, 17, 0.04), 0 4px 16px rgba(17, 17, 17, 0.04);
    --pos-glass-blur: 12px;

    /* Solid panels: tables, form fields, cart. */
    --pos-solid-bg: #FFFFFF;
    --pos-solid-border: rgba(17, 17, 17, 0.10);

    --pos-text: #111111;
    --pos-text-2: #6B6B6B;
    --pos-heading: #111111;

    /* The one accent: black buttons with white text. */
    --pos-accent: #111111;
    --pos-accent-rgb: 17, 17, 17;
    --pos-accent-hover: #333333;
    --pos-on-accent: #FFFFFF;
    --pos-link: #111111;
    --pos-focus-rgb: 17, 17, 17;

    /* Status colours, muted (only for meaning). */
    --pos-success: #067647;
    --pos-success-rgb: 6, 118, 71;
    --pos-success-bg: #ECFDF3;
    --pos-warning: #B54708;
    --pos-warning-rgb: 181, 71, 8;
    --pos-warning-bg: #FFFAEB;
    --pos-danger: #B42318;
    --pos-danger-rgb: 180, 35, 24;
    --pos-danger-hover: #912018;
    --pos-danger-bg: #FEF3F2;

    --pos-nav-text: #3F3F3F;
    --pos-nav-section: #8A8A8A;
    --pos-nav-hover-bg: rgba(17, 17, 17, 0.04);
    --pos-nav-active-bg: rgba(17, 17, 17, 0.07);
    --pos-nav-active-text: #111111;

    --pos-radius: 10px;
    --pos-radius-sm: 8px;
    color-scheme: light;
}

/* Graphite: the same design in the dark (white buttons with black text). */
:root[data-pos-theme="graphite"] {
    --pos-bg: linear-gradient(180deg, #161618 0%, #0F0F10 100%);

    --pos-glass-bg: rgba(30, 30, 33, 0.78);
    --pos-glass-border: rgba(255, 255, 255, 0.08);
    --pos-glass-shadow: 0 1px 2px rgba(0, 0, 0, 0.3), 0 4px 16px rgba(0, 0, 0, 0.25);
    --pos-glass-blur: 12px;

    --pos-solid-bg: #1C1C1E;
    --pos-solid-border: rgba(255, 255, 255, 0.10);

    --pos-text: #F5F5F5;
    --pos-text-2: #A1A1AA;
    --pos-heading: #FFFFFF;

    --pos-accent: #F5F5F5;
    --pos-accent-rgb: 245, 245, 245;
    --pos-accent-hover: #FFFFFF;
    --pos-on-accent: #111111;
    --pos-link: #F5F5F5;
    --pos-focus-rgb: 255, 255, 255;

    --pos-success: #47CD89;
    --pos-success-rgb: 71, 205, 137;
    --pos-success-bg: rgba(71, 205, 137, 0.10);
    --pos-warning: #F7B955;
    --pos-warning-rgb: 247, 185, 85;
    --pos-warning-bg: rgba(247, 185, 85, 0.10);
    --pos-danger: #F97066;
    --pos-danger-rgb: 249, 112, 102;
    --pos-danger-hover: #F04438;
    --pos-danger-bg: rgba(249, 112, 102, 0.10);

    --pos-nav-text: #D4D4D8;
    --pos-nav-section: #71717A;
    --pos-nav-hover-bg: rgba(255, 255, 255, 0.05);
    --pos-nav-active-bg: rgba(255, 255, 255, 0.09);
    --pos-nav-active-text: #FFFFFF;

    --pos-radius: 10px;
    --pos-radius-sm: 8px;
    color-scheme: dark;
}

/* Shop colours: only a thin stripe on the shop name and the shop cards, so you always know which shop it is. */
:root {
    --shop-t1: #0E7490;
    --shop-t2: #6D28D9;
    --shop-t3: #047857;
    --shop-color: #8A8A8A;
}

:root[data-shop="T1"] { --shop-color: var(--shop-t1); }
:root[data-shop="T2"] { --shop-color: var(--shop-t2); }
:root[data-shop="T3"] { --shop-color: var(--shop-t3); }

/* ---- Bootstrap mapped onto the tokens ------------------------------------------------------ */
:root[data-pos-theme] {
    --bs-body-font-family: "DM Sans", "Segoe UI", system-ui, -apple-system, sans-serif;
    --bs-body-bg: var(--pos-solid-bg);
    --bs-body-color: var(--pos-text);
    --bs-emphasis-color: var(--pos-text);
    --bs-heading-color: var(--pos-heading);
    --bs-secondary-color: var(--pos-text-2);
    --bs-tertiary-color: var(--pos-text-2);
    --bs-secondary-bg: var(--pos-glass-bg);
    --bs-tertiary-bg: var(--pos-glass-bg);
    --bs-border-color: var(--pos-solid-border);
    --bs-border-color-translucent: var(--pos-solid-border);
    --bs-border-radius: var(--pos-radius-sm);
    --bs-border-radius-lg: var(--pos-radius);

    --bs-primary: var(--pos-accent);
    --bs-primary-rgb: var(--pos-accent-rgb);
    --bs-link-color: var(--pos-link);
    --bs-link-color-rgb: var(--pos-accent-rgb);
    --bs-link-hover-color: var(--pos-accent-hover);
    --bs-link-hover-color-rgb: var(--pos-accent-rgb);
    --bs-success: var(--pos-success);
    --bs-success-rgb: var(--pos-success-rgb);
    --bs-warning: var(--pos-warning);
    --bs-warning-rgb: var(--pos-warning-rgb);
    --bs-danger: var(--pos-danger);
    --bs-danger-rgb: var(--pos-danger-rgb);

    --bs-success-text-emphasis: var(--pos-success);
    --bs-success-bg-subtle: var(--pos-success-bg);
    --bs-success-border-subtle: rgba(var(--pos-success-rgb), 0.3);
    --bs-warning-text-emphasis: var(--pos-warning);
    --bs-warning-bg-subtle: var(--pos-warning-bg);
    --bs-warning-border-subtle: rgba(var(--pos-warning-rgb), 0.3);
    --bs-danger-text-emphasis: var(--pos-danger);
    --bs-danger-bg-subtle: var(--pos-danger-bg);
    --bs-danger-border-subtle: rgba(var(--pos-danger-rgb), 0.3);
    --bs-primary-text-emphasis: var(--pos-text);
    --bs-primary-bg-subtle: rgba(var(--pos-accent-rgb), 0.06);
    --bs-primary-border-subtle: rgba(var(--pos-accent-rgb), 0.2);
    --bs-info-bg-subtle: rgba(var(--pos-accent-rgb), 0.04);
    --bs-info-border-subtle: var(--pos-solid-border);
    --bs-info-text-emphasis: var(--pos-text);
}

/* Low specificity on purpose: printed tickets (their own <style>) keep a plain white page. */
body {
    background: var(--pos-bg) fixed;
    color: var(--pos-text);
    font-family: var(--bs-body-font-family);
    min-height: 100vh;
}

h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6, .navbar-brand, .display-6 {
    font-family: "Sora", "Segoe UI", system-ui, sans-serif;
    letter-spacing: -0.015em;
}

html[data-pos-theme] :is(h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6) {
    color: var(--pos-heading);
    font-weight: 600;
}

/* ---- Frosted panels ---------------------------------------------------------------------------- */
html[data-pos-theme] .card,
html[data-pos-theme] .alert,
html[data-pos-theme] .sidebar,
html[data-pos-theme] .top-row,
html[data-pos-theme] .quick-action {
    backdrop-filter: blur(var(--pos-glass-blur));
    -webkit-backdrop-filter: blur(var(--pos-glass-blur));
}

html[data-pos-theme] .card {
    --bs-card-bg: var(--pos-glass-bg);
    --bs-card-border-color: var(--pos-glass-border);
    --bs-card-border-radius: var(--pos-radius);
    --bs-card-inner-border-radius: calc(var(--pos-radius) - 1px);
    --bs-card-cap-bg: transparent;
    box-shadow: var(--pos-glass-shadow);
}

html[data-pos-theme] .alert {
    border-radius: var(--pos-radius-sm);
    box-shadow: none;
}

html[data-pos-theme] .alert-warning {
    --bs-alert-bg: var(--pos-warning-bg);
    --bs-alert-color: var(--pos-warning);
}

html[data-pos-theme] .alert-danger {
    --bs-alert-bg: var(--pos-danger-bg);
    --bs-alert-color: var(--pos-danger);
}

html[data-pos-theme] .alert-success {
    --bs-alert-bg: var(--pos-success-bg);
    --bs-alert-color: var(--pos-success);
}

html[data-pos-theme] .sidebar {
    background: var(--pos-glass-bg);
    border-right: 1px solid var(--pos-glass-border);
}

html[data-pos-theme] main > .top-row {
    background: var(--pos-glass-bg);
    border-bottom: 1px solid var(--pos-glass-border);
}

/* Big figure cards (e.g. "Sales today"): the accent itself, the one strong block on the page. */
html[data-pos-theme] .text-bg-primary {
    background-color: var(--pos-accent) !important;
    color: var(--pos-on-accent) !important;
    border-color: var(--pos-accent) !important;
}

/* ---- Sidebar menu (NavMenu) -------------------------------------------------------------------- */
html[data-pos-theme] .sidebar .top-row {
    background: transparent;
    border-bottom: 1px solid var(--pos-glass-border);
}

html[data-pos-theme] .sidebar .navbar-brand {
    color: var(--pos-heading);
    font-weight: 600;
}

html[data-pos-theme] .sidebar .nav-section {
    color: var(--pos-nav-section);
    letter-spacing: 0.06em;
}

html[data-pos-theme] .sidebar .nav-link {
    color: var(--pos-nav-text) !important;
    border-radius: var(--pos-radius-sm) !important;
}

html[data-pos-theme] .sidebar .nav-link:hover {
    background-color: var(--pos-nav-hover-bg) !important;
    color: var(--pos-nav-active-text) !important;
}

html[data-pos-theme] .sidebar .nav-link.active {
    background-color: var(--pos-nav-active-bg) !important;
    color: var(--pos-nav-active-text) !important;
    font-weight: 600;
    box-shadow: inset 3px 0 0 var(--pos-accent);
}

html[data-pos-theme="mono"] .navbar-toggler {
    background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23111111' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") no-repeat center/1.75rem var(--pos-solid-bg) !important;
    border-color: var(--pos-solid-border) !important;
}

/* ---- Tables, form fields, lists ------------------------------------------------------------------ */
html[data-pos-theme] .table {
    --bs-table-bg: transparent;
    --bs-table-color: var(--pos-text);
    --bs-table-border-color: var(--pos-solid-border);
    --bs-table-hover-bg: rgba(var(--pos-accent-rgb), 0.04);
    --bs-table-striped-bg: rgba(var(--pos-accent-rgb), 0.025);
}

html[data-pos-theme] .table > thead th {
    color: var(--pos-text-2);
    font-weight: 600;
    font-size: 0.8rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

html[data-pos-theme] .table-responsive {
    background: var(--pos-solid-bg);
    border: 1px solid var(--pos-solid-border);
    border-radius: var(--pos-radius);
    padding: 0.25rem 0.5rem;
}

html[data-pos-theme] .card .table-responsive {
    background: transparent;
    border: 0;
    padding: 0;
}

html[data-pos-theme] .table-light {
    --bs-table-bg: rgba(var(--pos-accent-rgb), 0.04);
    --bs-table-color: var(--pos-text);
    --bs-table-border-color: var(--pos-solid-border);
}

html[data-pos-theme] .form-control,
html[data-pos-theme] .form-select,
html[data-pos-theme] .input-group-text,
html[data-pos-theme] .list-group {
    background-color: var(--pos-solid-bg);
    border-color: var(--pos-solid-border);
    color: var(--pos-text);
}

html[data-pos-theme] .form-control,
html[data-pos-theme] .form-select {
    border-radius: var(--pos-radius-sm);
}

html[data-pos-theme] .form-control:focus,
html[data-pos-theme] .form-select:focus {
    border-color: rgba(var(--pos-focus-rgb), 0.55);
    box-shadow: 0 0 0 0.2rem rgba(var(--pos-focus-rgb), 0.10);
}

html[data-pos-theme] .form-check-input:checked {
    background-color: var(--pos-accent);
    border-color: var(--pos-accent);
}

html[data-pos-theme="graphite"] .form-check-input:checked[type="checkbox"] {
    --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23111' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e");
}

html[data-pos-theme] .list-group {
    --bs-list-group-bg: var(--pos-solid-bg);
    --bs-list-group-border-color: var(--pos-solid-border);
    --bs-list-group-color: var(--pos-text);
    --bs-list-group-action-hover-bg: rgba(var(--pos-accent-rgb), 0.04);
    border-radius: var(--pos-radius-sm);
}

/* Bootstrap's "light" boxes: neutral panels in both themes. */
html[data-pos-theme] :is(.text-bg-light, .bg-light, .bg-white) {
    background-color: rgba(var(--pos-accent-rgb), 0.04) !important;
    color: var(--pos-text) !important;
    border-color: var(--pos-solid-border) !important;
}

html[data-pos-theme] .text-bg-light.text-body-secondary {
    color: var(--pos-text-2) !important;
}

/* IMEIs and codes: plain text colour instead of Bootstrap's pink. */
html[data-pos-theme] code {
    color: var(--pos-text);
}

/* ---- Buttons ------------------------------------------------------------------------------------ */
html[data-pos-theme] .btn {
    --bs-btn-border-radius: var(--pos-radius-sm);
    --bs-btn-border-radius-lg: var(--pos-radius);
    --bs-btn-font-weight: 500;
}

/* Main and "go" actions (primary, success) are the accent: black in Mono, white in Graphite. */
html[data-pos-theme] :is(.btn-primary, .btn-success) {
    --bs-btn-bg: var(--pos-accent);
    --bs-btn-border-color: var(--pos-accent);
    --bs-btn-color: var(--pos-on-accent);
    --bs-btn-hover-bg: var(--pos-accent-hover);
    --bs-btn-hover-border-color: var(--pos-accent-hover);
    --bs-btn-hover-color: var(--pos-on-accent);
    --bs-btn-active-bg: var(--pos-accent-hover);
    --bs-btn-active-border-color: var(--pos-accent-hover);
    --bs-btn-active-color: var(--pos-on-accent);
    --bs-btn-disabled-bg: var(--pos-accent);
    --bs-btn-disabled-border-color: var(--pos-accent);
    --bs-btn-disabled-color: var(--pos-on-accent);
}

/* Secondary actions: outlined. */
html[data-pos-theme] :is(.btn-outline-primary, .btn-outline-success, .btn-outline-secondary) {
    --bs-btn-color: var(--pos-text);
    --bs-btn-border-color: var(--pos-solid-border);
    --bs-btn-bg: var(--pos-solid-bg);
    --bs-btn-hover-bg: var(--pos-accent);
    --bs-btn-hover-border-color: var(--pos-accent);
    --bs-btn-hover-color: var(--pos-on-accent);
    --bs-btn-active-bg: var(--pos-accent);
    --bs-btn-active-border-color: var(--pos-accent);
    --bs-btn-active-color: var(--pos-on-accent);
}

html[data-pos-theme] .btn-outline-secondary {
    --bs-btn-color: var(--pos-text-2);
}

/* Attention (e.g. daily closing): outlined in amber, not a big yellow block. */
html[data-pos-theme] :is(.btn-warning, .btn-outline-warning) {
    --bs-btn-bg: var(--pos-warning-bg);
    --bs-btn-color: var(--pos-warning);
    --bs-btn-border-color: rgba(var(--pos-warning-rgb), 0.45);
    --bs-btn-hover-bg: var(--pos-warning);
    --bs-btn-hover-border-color: var(--pos-warning);
    --bs-btn-hover-color: var(--pos-solid-bg);
    --bs-btn-active-bg: var(--pos-warning);
    --bs-btn-active-color: var(--pos-solid-bg);
}

html[data-pos-theme] .btn-danger {
    --bs-btn-bg: var(--pos-danger);
    --bs-btn-border-color: var(--pos-danger);
    --bs-btn-color: #FFFFFF;
    --bs-btn-hover-bg: var(--pos-danger-hover);
    --bs-btn-hover-border-color: var(--pos-danger-hover);
    --bs-btn-hover-color: #FFFFFF;
    --bs-btn-active-bg: var(--pos-danger-hover);
}

html[data-pos-theme] .btn-outline-danger {
    --bs-btn-color: var(--pos-danger);
    --bs-btn-border-color: rgba(var(--pos-danger-rgb), 0.45);
    --bs-btn-hover-bg: var(--pos-danger);
    --bs-btn-hover-border-color: var(--pos-danger);
    --bs-btn-hover-color: #FFFFFF;
}

html[data-pos-theme] .text-success { color: var(--pos-success) !important; }
html[data-pos-theme] .text-warning { color: var(--pos-warning) !important; }
html[data-pos-theme] .text-danger { color: var(--pos-danger) !important; }

/* Home shortcuts: calm tiles with the icon in the text colour. Only "New sale" is the strong accent. */
html[data-pos-theme] .quick-action {
    border-radius: var(--pos-radius);
}

html[data-pos-theme] .quick-action:is(.btn-primary, .btn-outline-primary, .btn-success, .btn-warning):not([href="sell"]) {
    --bs-btn-bg: var(--pos-glass-bg);
    --bs-btn-border-color: var(--pos-glass-border);
    --bs-btn-color: var(--pos-text);
    --bs-btn-hover-bg: var(--pos-solid-bg);
    --bs-btn-hover-border-color: var(--pos-accent);
    --bs-btn-hover-color: var(--pos-text);
    box-shadow: var(--pos-glass-shadow);
}

html[data-pos-theme] .quick-action.btn-warning:not([href="sell"]) .bi {
    color: var(--pos-warning);
}

html[data-pos-theme] .nav-pills {
    --bs-nav-pills-link-active-bg: var(--pos-accent);
    --bs-nav-pills-link-active-color: var(--pos-on-accent);
    --bs-nav-link-color: var(--pos-text-2);
    --bs-nav-link-hover-color: var(--pos-text);
    --bs-nav-pills-border-radius: var(--pos-radius-sm);
}

html[data-pos-theme] .nav-tabs {
    --bs-nav-tabs-link-active-bg: var(--pos-solid-bg);
}

/* Shop name in the top bar: neutral pill with the shop's colour as a stripe. */
.shop-pill {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.3rem 0.8rem;
    border-radius: 999px;
    background: var(--pos-solid-bg);
    color: var(--pos-text);
    border: 1px solid var(--pos-solid-border);
    box-shadow: inset 4px 0 0 var(--shop-color);
    font-weight: 600;
    font-size: 0.9rem;
    white-space: nowrap;
}

.shop-pill .bi {
    color: var(--pos-text-2);
}

.btn-shop-T1, .btn-shop-T2, .btn-shop-T3 {
    color: #fff !important;
    border: 0 !important;
}

.btn-shop-T1 { background: var(--shop-t1) !important; }
.btn-shop-T2 { background: var(--shop-t2) !important; }
.btn-shop-T3 { background: var(--shop-t3) !important; }

/* Theme switch button in the top bar. */
.theme-toggle {
    width: 2.25rem;
    height: 2.25rem;
    padding: 0;
    border-radius: 50%;
}

/* The sun/moon button shows the theme you switch to. */
.theme-toggle .bi { margin: 0; }
:root[data-pos-theme="graphite"] .theme-icon-mono,
:root:not([data-pos-theme="graphite"]) .theme-icon-graphite {
    display: none;
}

/* Shop logos. */
.shop-logo-preview {
    width: 7rem;
    height: 7rem;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #fff;
    border: 1px solid var(--pos-solid-border);
    border-radius: var(--pos-radius-sm);
    overflow: hidden;
}

.shop-logo-preview img {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}

.shop-logo {
    height: 1.6rem;
    width: auto;
    max-width: 5rem;
    object-fit: contain;
    border-radius: 6px;
    background: #fff;
    padding: 1px;
}

.shop-logo-lg {
    height: 3.25rem;
    width: auto;
    max-width: 10rem;
    object-fit: contain;
    border-radius: 8px;
    background: #fff;
    padding: 3px;
    border: 1px solid var(--pos-solid-border);
}

/* Shop photo: banner at the top of the menu, and its preview on the shop's admin page. */
.shop-photo-banner img {
    display: block;
    width: 100%;
    /* Natural height: a wide shop sign shows whole; a tall photo is cut to 9rem. */
    height: auto;
    max-height: 9rem;
    object-fit: cover;
    border-radius: var(--pos-radius);
    border: 1px solid var(--pos-glass-border);
    box-shadow: var(--pos-glass-shadow);
}

.shop-photo-caption {
    margin-top: 0.4rem;
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--pos-text-2);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.shop-photo-preview {
    width: 12rem;
    height: 7rem;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(var(--pos-accent-rgb), 0.04);
    border: 1px solid var(--pos-solid-border);
    border-radius: var(--pos-radius-sm);
    overflow: hidden;
}

.shop-photo-preview img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
