/* Root tokens must load before everything because colors are calculated */
/* Inlined: ./base/globals.css */
/* stylelint-disable property-no-vendor-prefix change-check */

/* css/base/global.css */
:root {
	--font-oswald: "Oswald", var(--font-sans);
	
	/* -------------- global settings for fluid scaling  */
	--vw-min: 360;
	--vw-max: 1280;
	--fluid-raw: calc((100vw - (var(--vw-min) * 1vw)) / ((var(--vw-max) - var(--vw-min)) * 1vw));
	--fluid: clamp(0, var(--fluid-raw), 1);
	
	/* Line-height tokens */
	--lh-none: 1;
	--lh-tight: 1.2;
	--lh-snug: 1.35a
	--lh-normal: 1.5;
	--lh-relaxed: 1.6;
	--lh-loose: 1.7;
	--heading-h: 0;
	
	/* border width multiplier */
	--border-w: 1px;
	
	/* ========================= Brand Green ========================= */
	--brand-h: 120;   
	--brand-s: 61%; 
	--brand-l: 34%;   
	--brand: hsl(var(--brand-h) var(--brand-s) var(--brand-l));
	--brand-light:   hsl(var(--brand-h) 45% 55%);
	--brand-lighter: hsl(var(--brand-h) 60% 95%);
	--brand-dark:    hsl(var(--brand-h) 70% 25%);
	--brand-darker:  hsl(var(--brand-h) 75% 15%);
	--brand-rgb: var(--brand);
	--brand-light-rgb: var(--brand-light);
	--brand-lighter-rgb: var(--brand-lighter);
	--brand-dark-rgb: var(--brand-dark);
	--brand-darker-rgb: var(--brand-darker);
	

	/* ========================= Brand Blue =========================
	--brand-h: 210;  
	--brand-s: 65%;  
	--brand-l: 40%;  
	--brand: hsl(var(--brand-h) var(--brand-s) var(--brand-l));
	--brand-light:   hsl(var(--brand-h) 50% 60%); 
	--brand-lighter: hsl(var(--brand-h) 70% 95%);  
	--brand-dark:    hsl(var(--brand-h) 70% 30%);  
	--brand-darker:  hsl(var(--brand-h) 75% 18%);  	
	--brand-rgb: var(--brand);
	--brand-light-rgb: var(--brand-light);
	--brand-lighter-rgb: var(--brand-lighter);
	--brand-dark-rgb: var(--brand-dark);
	--brand-darker-rgb: var(--brand-darker);
	*/

	/* ========================= Dark ========================= */
	--dark: hsl(0deg 0% 0%);        /* pure black */
	--dark-h: 0;
	--dark-s: 0%;
	--dark-l: 0%;
	--light: hsl(0deg 0% 100%);     /* pure white */
	--light-h: 0;
	--light-s: 0%;
	--light-l: 100%;
	--dark-rgb: 0, 0, 0;
	--light-rgb: 255, 255, 255;
	
	/* ========================= Error ========================= */
	--error-h: 0;
	--error-s: 85%;
	--error-l: 45%;
	--error: hsl(var(--error-h) var(--error-s) var(--error-l));
	--error-dark: hsl(var(--error-h) var(--error-s) 38%);
	--error-rgb: var(--error);
	--error-dark-rgb: var(--error-dark);
	
	/* ========================= Warn ========================= */
	--warn-h: 38;
	--warn-s: 95%;
	--warn-l: 50%;
	--warn: hsl(var(--warn-h) var(--warn-s) var(--warn-l));
	--warn-dark: hsl(var(--warn-h) var(--warn-s) 42%);
	--warn-rgb: var(--warn);
	--warn-dark-rgb: var(--warn-dark);
	
	/* ========================= Info ========================= */
	--info-h: 120;
	--info-s: 61%;
	--info-l: 34%;
	--info: hsl(var(--info-h) var(--info-s) var(--info-l));
	--info-dark: hsl(var(--info-h) var(--info-s) 38%);
	--info-rgb: var(--info);
	--info-dark-rgb: var(--info-dark);
	
	/* ========================= Question (alias Info) ========================= */
	--question: var(--info);
	--question-dark: var(--info-dark);
	--question-rgb: var(--info-rgb);
	--question-dark-rgb: var(--info-dark-rgb);
	
	/* ========================= Success (alias Brand) ========================= */
	--success: var(--brand);
	--success-light: var(--brand-light);
	--success-lighter: var(--brand-lighter);
	--success-dark: var(--brand-dark);
	--success-darker: var(--brand-darker);
	--success-rgb: var(--brand-rgb);
	--success-light-rgb: var(--brand-light-rgb);
	--success-lighter-rgb: var(--brand-lighter-rgb);
	--success-dark-rgb: var(--brand-dark-rgb); 
	--success-darker-rgb: var(--brand-darker-rgb);
	
	/* ========================= Gray scale ========================= */
	--gray-light-h: 0;
	--gray-light-s: 0%;
	--gray-light-l: 85%;
	--gray-light: hsl(var(--gray-light-h) var(--gray-light-s) var(--gray-light-l));
	--gray-light-rgb: var(--gray-light);
	--gray-lighter-h: 0;
	--gray-lighter-s: 0%;
	--gray-lighter-l: 95%;
	--gray-lighter: hsl(var(--gray-lighter-h) var(--gray-lighter-s) var(--gray-lighter-l));
	--gray-lighter-rgb: var(--gray-lighter);
	--gray-medium-h: 0;
	--gray-medium-s: 0%;
	--gray-medium-l: 60%;
	--gray-medium: hsl(var(--gray-medium-h) var(--gray-medium-s) var(--gray-medium-l));
	--gray-medium-rgb: var(--gray-medium);
	--gray-dark-h: 0;
	--gray-dark-s: 0%;
	--gray-dark-l: 40%;
	--gray-dark: hsl(var(--gray-dark-h) var(--gray-dark-s) var(--gray-dark-l));
	--gray-dark-rgb: var(--gray-dark);
	
	/* ========================= Body/Text ========================= */
	--color-body: #fff;
	--color-body-rgb: 255, 255, 255;
	--color-head: #ddd;
	--color-head-rgb: 255, 255, 255;
	--color-text: #000;
	--color-text-rgb: 0, 0, 0;
	
	/* ====================== chat buttles ========================= */
	
	/* Apple bubble colors (iMessage-ish) */
		--device-apple-chat-sender-1:   #0b93f6;
		--device-apple-chat-sender-2:   #007aff;
		--device-apple-chat-receiver-1: #e5e5ea;
		--device-apple-chat-receiver-2: #d1d1d6;
	
		/* Android bubble colors (Material-ish) */
		--device-android-chat-sender-1:   #1a73e8;
		--device-android-chat-sender-2:   #1558b0;
		--device-android-chat-receiver-1: #f1f3f4;
		--device-android-chat-receiver-2: #e0e0e0;
	
		/* Active (default: Apple) */
		--chat-sender-bg-1:   var(--device-apple-chat-sender-1);
		--chat-sender-bg-2:   var(--device-apple-chat-sender-2);
		--chat-receiver-bg-1: var(--device-apple-chat-receiver-1);
		--chat-receiver-bg-2: var(--device-apple-chat-receiver-2);
	
	
	/* Spacing */
	--space-0: 0;
	--space-1: 0.25rem;
	--space-2: 0.5rem;
	--space-3: 0.75rem;
	--space-4: 1rem;
	--space-5: 1.25rem;
	--space-6: 1.5rem;
	--space-7: 1.75rem;
	--space-8: 2rem;
	--space-9: 2.5rem;
	--space-10: 3rem;
}

html { font-size: 16px;
	
	/* prevents double-tap zoom on phone */
	touch-action: manipulation; /* prevents double-tap zoom in most browsers */
}


html, body {
  height: 100dvh;
  overflow: hidden;
  overscroll-behavior: none;
  margin: 0;
  text-size-adjust: 100%;
}

.body {
  margin: 0; 
  padding: 0;
  min-height: 100dvh;
  height: 100dvh;
  overflow: hidden;
  background-color: var(--color-body);
  color: var(--color-dark);
  display: block; 
  justify-content: center;
  overscroll-behavior: none;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen,
               Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
}

.main {
  display: flex;
  flex-direction: column;
  min-width: 0;
  width: 100%;
  max-width: 1000px;
  height: 100dvh;
  min-height: 0;
  overflow: hidden;
  padding: 0;
  background-color: var(--light);
  color: var(--dark);
  border: none;
  margin: 0 auto;   /* 👈 centers horizontally */
  flex: 1 1 auto;
  position: relative; 
}



/* Sentinel marker for globals.css */
.globals-sentinel { color: limegreen !important; }



/* Load base which loads everything else */
/* Inlined: ./base/base.css */
/* css/base/base.css */
/* Inlined: ./resets.css */
/* css/base/resets.css */
button,
a.button {
    all: unset;
    display: inline-block;
    font: inherit;
    color: inherit;
    box-sizing: border-box;
    cursor: pointer;
}

/* sentinel for globals.css */

/* Sentinel marker for resets.css */
.resets-sentinel { color: limegreen !important; }


/* Inlined: ./system-colors.css */

/* ======= css/base/system-colors.css  ========================================================= */
.text-brand {
  color: var(--brand);
}

.text-brand-light {
  color: var(--brand-light);
}

.text-brand-lighter {
  color: var(--brand-lighter);
}

.text-brand-dark {
  color: var(--brand-dark);
}

.text-brand-darker {
  color: var(--brand-darker);
}

.text-success {
  color: var(--success);
}

.text-success-light {
  color: var(--success-light);
}

.text-success-lighter {
  color: var(--success-lighter);
}

.text-success-dark {
  color: var(--success-dark);
}

.text-success-darker {
  color: var(--success-darker);
}

.text-warn {
  color: var(--warn);
}

.text-warn-dark {
  color: var(--warn-dark);
}

.text-error {
  color: var(--error);
}

.text-error-dark {
  color: var(--error-dark);
}

.text-info {
  color: var(--info);
}

.text-info-dark {
  color: var(--info-dark);
}

.text-question {
  color: var(--question);
}

.text-question-dark {
  color: var(--question-dark);
}

.text-gray-light {
  color: var(--gray-light);
}

.text-gray-medium {
  color: var(--gray-medium);
}

.text-gray-dark {
  color: var(--gray-dark);
}

.text-dark {
  color: var(--dark);
}

.text-light {
  color: var(--light);
}

.text-body {
  color: var(--color-body);
}

.text-head {
  color: var(--color-head);
}

.text-text {
  color: var(--color-text);
}


/* === Background Colors === */
.bg-brand {
  background-color: var(--brand);
}

.bg-brand-light {
  background-color: var(--brand-light);
}

.bg-brand-lighter {
  background-color: var(--brand-lighter);
}

.bg-brand-dark {
  background-color: var(--brand-dark);
}

.bg-brand-darker {
  background-color: var(--brand-darker);
}

.bg-success {
  background-color: var(--success) !important;
}

.bg-success-light {
  background-color: var(--success-light) !important;
}

.bg-success-lighter {
  background-color: var(--success-lighter) !important;
}

.bg-success-dark {
  background-color: var(--success-dark) !important; 
}

.bg-success-darker {
  background-color: var(--success-darker) !important;
}

.bg-warn {
  background-color: var(--warn) !important;
}

.bg-warn-dark {
  background-color: var(--warn-dark) !important;
}

.bg-error {
  background-color: var(--error) !important;
}

.bg-error-dark {
  background-color: var(--error-dark) !important;
}

.bg-info {
  background-color: var(--info) !important;
}

.bg-info-dark {
  background-color: var(--info-dark) !important;
}

.bg-question {
  background-color: var(--question) !important;
}

.bg-question-dark {
  background-color: var(--question-dark) !important;
}

.bg-gray-light {
  background-color: var(--gray-light) !important;
}

.bg-gray-medium {
  background-color: var(--gray-medium) !important;
}

.bg-gray-dark {
  background-color: var(--gray-dark) !important;
}

.bg-dark {
  background-color: var(--dark);
}

.bg-light {
  background-color: var(--light);
}

.bg-body {
  background-color: var(--color-body);
}

.bg-head {
  background-color: var(--color-head);
}

.bg-text {
  background-color: var(--color-text);
}

.bg-transparent {
  background-color: transparent;
}


/* === Border Colors === */
.border-brand {
  border-color: var(--brand);
}

.border-brand-light {
  border-color: var(--brand-light);
}

.border-brand-lighter {
  border-color: var(--brand-lighter);
}

.border-brand-dark {
  border-color: var(--brand-dark);
}

.border-brand-darker {
  border-color: var(--brand-darker);
}

.border-success {
  border-color: var(--success);
}

.border-success-light {
  border-color: var(--success-light);
}

.border-success-lighter {
  border-color: var(--success-lighter);
}

.border-success-dark {
  border-color: var(--success-dark);
}

.border-success-darker {
  border-color: var(--success-darker);
}

.border-warn {
  border-color: var(--warn);
}

.border-warn-dark {
  border-color: var(--warn-dark);
}

.border-error {
  border-color: var(--error);
}

.border-error-dark {
  border-color: var(--error-dark);
}

.border-info {
  border-color: var(--info);
}

.border-info-dark {
  border-color: var(--info-dark);
}

.border-question {
  border-color: var(--question);
}

.border-question-dark {
  border-color: var(--question-dark);
}

.border-gray-light {
  border-color: var(--gray-light);
}

.border-gray-medium {
  border-color: var(--gray-medium);
}

.border-gray-dark {
  border-color: var(--gray-dark);
}

.border-dark {
  border-color: var(--dark);
}

.border-light {
  border-color: var(--light);
}

.border-body {
  border-color: var(--color-body);
}

.border-head {
  border-color: var(--color-head);
}

.border-text {
  border-color: var(--color-text);
}




/* ✅ Sentinel marker */
.system-colors-sentinel {
  color: limegreen !important;
}

/* Inlined: ./text-basis.css */

/* =========================================
   Fluid Type Utilities (text- & fs- aliases) css/base/text-basis.css
   ========================================= */


/* -----------------------------
   Fluid type scale (rem + var(--fluid))
   Continuity: min(n) = max(n-1)
   ----------------------------- */

    /* -----------------------------
        Fluid type scale (rem + var(--fluid))
        Continuity: min(n) = max(n-1)
        ----------------------------- */
        
    /* Tiny */
    .text-tiny, .fs-tiny {
      font-size: clamp(0.625rem, calc(0.625rem + (0.75rem - 0.625rem) * var(--fluid)), 0.75rem);
    }

    /* XS */
    .text-xs, .fs-xs {
      font-size: clamp(0.75rem, calc(0.75rem + (0.875rem - 0.75rem) * var(--fluid)), 0.875rem);
    }

    /* SM */
    .text-sm, .fs-sm {
      font-size: clamp(0.875rem, calc(0.875rem + (1rem - 0.875rem) * var(--fluid)), 1rem);
    }

    /* Base */
    .text-base, .fs-base {
      font-size: clamp(1rem, calc(1rem + (1.125rem - 1rem) * var(--fluid)), 1.125rem);
    }

    /* Normal - same as base */
    .text-normal, .fs-base {
      font-size: clamp(1rem, calc(1rem + (1.125rem - 1rem) * var(--fluid)), 1.125rem);
    }

    /* LG */
    .text-lg, .fs-lg {
      font-size: clamp(1.125rem, calc(1.125rem + (1.25rem - 1.125rem) * var(--fluid)), 1.25rem);
    }

    /* XL */
    .text-xl, .fs-xl {
      font-size: clamp(1.25rem, calc(1.25rem + (1.5rem - 1.25rem) * var(--fluid)), 1.5rem);
    }

    /* 2XL */
    .text-2xl, .fs-2xl {
      font-size: clamp(1.5rem, calc(1.5rem + (2rem - 1.5rem) * var(--fluid)), 2rem);
    }

    /* 3XL */
    .text-3xl, .fs-3xl {
      font-size: clamp(2rem, calc(2rem + (2.5rem - 2rem) * var(--fluid)), 2.5rem);
    }

    /* 4XL (give big text more range so growth is noticeable) */
    .text-4xl, .fs-4xl {
      font-size: clamp(2.5rem, calc(2.5rem + (3.25rem - 2.5rem) * var(--fluid)), 3.25rem);
    }

    /* 5XL */
    .text-5xl, .fs-5xl {
      font-size: clamp(3.25rem, calc(3.25rem + (4.25rem - 3.25rem) * var(--fluid)), 4.25rem);
    }

    /* 6XL */
    .text-6xl, .fs-6xl {
      font-size: clamp(4.25rem, calc(4.25rem + (5.5rem - 4.25rem) * var(--fluid)), 5.5rem);
    }

    /* 7XL */
    .text-7xl, .fs-7xl {
      font-size: clamp(5.5rem, calc(5.5rem + (7rem - 5.5rem) * var(--fluid)), 7rem);
    }

    /* 8XL */
    .text-8xl, .fs-8xl {
      font-size: clamp(7rem, calc(7rem + (9.5rem - 7rem) * var(--fluid)), 9.5rem);
    }

    /* 9XL */
    .text-9xl, .fs-9xl {
      font-size: clamp(9.5rem, calc(9.5rem + (12rem - 9.5rem) * var(--fluid)), 12rem);
    }

/* ============================
   Font Weight Utilities
   ============================ */
    
.font-thin {
  font-weight: 100;
}

.font-extralight {
  font-weight: 200;
}

.font-light {
  font-weight: 300;
}

.font-normal {
  font-weight: 400;
}

.font-medium {
  font-weight: 500;
}

.font-semibold {
  font-weight: 600;
}

.font-bold {
  font-weight: 700;
}

.font-extrabold {
  font-weight: 800;
}

.font-black {
  font-weight: 900;
}

/* Sentinel marker for text-basis.css */
.text-basis-sentinel { color: limegreen !important; }

 
/* Inlined: ./spacing/padding.css */
/* ============================
   Corrected Padding Utilities
   ============================ */

/* Scale 0 */
.p-0 {
  padding: var(--space-0) !important;
}

.pt-0 {
  padding-top: var(--space-0) !important;
}

.pb-0 {
  padding-bottom: var(--space-0) !important;
}

.pl-0 {
  padding-left: var(--space-0) !important;
}

.pr-0 {
  padding-right: var(--space-0) !important;
}

.px-0 {
  padding-left: var(--space-0) !important;
  padding-right: var(--space-0) !important;
}

.py-0 {
  padding-top: var(--space-0) !important;
  padding-bottom: var(--space-0) !important;
}


/* Scale 1 */
.p-1 {
  padding: var(--space-1) !important;
}

.pt-1 {
  padding-top: var(--space-1) !important;
}

.pb-1 {
  padding-bottom: var(--space-1) !important;
}

.pl-1 {
  padding-left: var(--space-1) !important;
}

.pr-1 {
  padding-right: var(--space-1) !important;
}

.px-1 {
  padding-left: var(--space-1) !important;
  padding-right: var(--space-1) !important;
}

.py-1 {
  padding-top: var(--space-1) !important;
  padding-bottom: var(--space-1) !important;
}


/* Scale 2 */
.p-2 {
  padding: var(--space-2) !important;
}

.pt-2 {
  padding-top: var(--space-2) !important;
}

.pb-2 {
  padding-bottom: var(--space-2) !important;
}

.pl-2 {
  padding-left: var(--space-2) !important;
}

.pr-2 {
  padding-right: var(--space-2) !important;
}

.px-2 {
  padding-left: var(--space-2) !important;
  padding-right: var(--space-2) !important;
}

.py-2 {
  padding-top: var(--space-2) !important;
  padding-bottom: var(--space-2) !important;
}


/* Scale 3 */
.p-3 {
  padding: var(--space-3) !important;
}

.pt-3 {
  padding-top: var(--space-3) !important;
}

.pb-3 {
  padding-bottom: var(--space-3) !important;
}

.pl-3 {
  padding-left: var(--space-3) !important;
}

.pr-3 {
  padding-right: var(--space-3) !important;
}

.px-3 {
  padding-left: var(--space-3) !important;
  padding-right: var(--space-3) !important;
}

.py-3 {
  padding-top: var(--space-3) !important;
  padding-bottom: var(--space-3) !important;
}


/* Scale 4 */
.p-4 {
  padding: var(--space-4) !important;
}

.pt-4 {
  padding-top: var(--space-4) !important;
}

.pb-4 {
  padding-bottom: var(--space-4) !important;
}

.pl-4 {
  padding-left: var(--space-4) !important;
}

.pr-4 {
  padding-right: var(--space-4) !important;
}

.px-4 {
  padding-left: var(--space-4) !important;
  padding-right: var(--space-4) !important;
}

.py-4 {
  padding-top: var(--space-4) !important;
  padding-bottom: var(--space-4) !important;
}


/* Scale 5 */
.p-5 {
  padding: var(--space-5) !important;
}

.pt-5 {
  padding-top: var(--space-5) !important;
}

.pb-5 {
  padding-bottom: var(--space-5) !important;
}

.pl-5 {
  padding-left: var(--space-5) !important;
}

.pr-5 {
  padding-right: var(--space-5) !important;
}

.px-5 {
  padding-left: var(--space-5) !important;
  padding-right: var(--space-5) !important;
}

.py-5 {
  padding-top: var(--space-5) !important;
  padding-bottom: var(--space-5) !important;
}


/* Scale 6 */
.p-6 {
  padding: var(--space-6) !important;
}

.pt-6 {
  padding-top: var(--space-6) !important;
}

.pb-6 {
  padding-bottom: var(--space-6) !important;
}

.pl-6 {
  padding-left: var(--space-6) !important;
}

.pr-6 {
  padding-right: var(--space-6) !important;
}

.px-6 {
  padding-left: var(--space-6) !important;
  padding-right: var(--space-6) !important;
}

.py-6 {
  padding-top: var(--space-6) !important;
  padding-bottom: var(--space-6) !important;
}


/* Scale 7 */
.p-7 {
  padding: var(--space-7) !important;
}

.pt-7 {
  padding-top: var(--space-7) !important;
}

.pb-7 {
  padding-bottom: var(--space-7) !important;
}

.pl-7 {
  padding-left: var(--space-7) !important;
}

.pr-7 {
  padding-right: var(--space-7) !important;
}

.px-7 {
  padding-left: var(--space-7) !important;
  padding-right: var(--space-7) !important;
}

.py-7 {
  padding-top: var(--space-7) !important;
  padding-bottom: var(--space-7) !important;
}


/* Scale 8 */
.p-8 {
  padding: var(--space-8) !important;
}

.pt-8 {
  padding-top: var(--space-8) !important;
}

.pb-8 {
  padding-bottom: var(--space-8) !important;
}

.pl-8 {
  padding-left: var(--space-8) !important;
}

.pr-8 {
  padding-right: var(--space-8) !important;
}

.px-8 {
  padding-left: var(--space-8) !important;
  padding-right: var(--space-8) !important;
}

.py-8 {
  padding-top: var(--space-8) !important;
  padding-bottom: var(--space-8) !important;
}


/* Scale 9 */
.p-9 {
  padding: var(--space-9) !important;
}

.pt-9 {
  padding-top: var(--space-9) !important;
}

.pb-9 {
  padding-bottom: var(--space-9) !important;
}

.pl-9 {
  padding-left: var(--space-9) !important;
}

.pr-9 {
  padding-right: var(--space-9) !important;
}

.px-9 {
  padding-left: var(--space-9) !important;
  padding-right: var(--space-9) !important;
}

.py-9 {
  padding-top: var(--space-9) !important;
  padding-bottom: var(--space-9) !important;
}


/* Scale 10 */
.p-10 {
  padding: var(--space-10) !important;
}

.pt-10 {
  padding-top: var(--space-10) !important;
}

.pb-10 {
  padding-bottom: var(--space-10) !important;
}

.pl-10 {
  padding-left: var(--space-10) !important;
}

.pr-10 {
  padding-right: var(--space-10) !important;
}

.px-10 {
  padding-left: var(--space-10) !important;
  padding-right: var(--space-10) !important;
}

.py-10 {
  padding-top: var(--space-10) !important;
  padding-bottom: var(--space-10) !important;
}


/* Sentinel marker for padding.css */
.padding-sentinel {
  color: limegreen !important;
}
 
/* Inlined: ./spacing/margin.css */
.m-0 {
  margin: var(--space-0) !important;
}

.m-1 {
  margin: var(--space-1) !important;
}

.m-2 {
  margin: var(--space-2) !important;
}

.m-3 {
  margin: var(--space-3) !important;
}

.m-4 {
  margin: var(--space-4) !important;
}

.m-5 {
  margin: var(--space-5) !important;
}

.m-6 {
  margin: var(--space-6) !important;
}

.m-7 {
  margin: var(--space-7) !important;
}

.m-8 {
  margin: var(--space-8) !important;
}

.m-9 {
  margin: var(--space-9) !important;
}

.m-10 {
  margin: var(--space-10) !important;
}

.mt-0 {
  margin-top: var(--space-0) !important;
}

.mt-1 {
  margin-top: var(--space-1) !important;
}

.mt-2 {
  margin-top: var(--space-2) !important;
}

.mt-3 {
  margin-top: var(--space-3) !important;
}

.mt-4 {
  margin-top: var(--space-4) !important;
}

.mt-5 {
  margin-top: var(--space-5) !important;
}

.mt-6 {
  margin-top: var(--space-6) !important;
}

.mt-7 {
  margin-top: var(--space-7) !important;
}

.mt-8 {
  margin-top: var(--space-8) !important;
}

.mt-9 {
  margin-top: var(--space-9) !important;
}

.mt-10 {
  margin-top: var(--space-10) !important;
}

.mb-0 {
  margin-bottom: var(--space-0) !important;
}

.mb-1 {
  margin-bottom: var(--space-1) !important;
}

.mb-2 {
  margin-bottom: var(--space-2) !important;
}

.mb-3 {
  margin-bottom: var(--space-3) !important;
}

.mb-4 {
  margin-bottom: var(--space-4) !important;
}

.mb-5 {
  margin-bottom: var(--space-5) !important;
}

.mb-6 {
  margin-bottom: var(--space-6) !important;
}

.mb-7 {
  margin-bottom: var(--space-7) !important;
}

.mb-8 {
  margin-bottom: var(--space-8) !important;
}

.mb-9 {
  margin-bottom: var(--space-9) !important;
}

.mb-10 {
  margin-bottom: var(--space-10) !important;
}

.ml-0 {
  margin-left: var(--space-0) !important;
}

.ml-1 {
  margin-left: var(--space-1) !important;
}

.ml-2 {
  margin-left: var(--space-2) !important;
}

.ml-3 {
  margin-left: var(--space-3) !important;
}

.ml-4 {
  margin-left: var(--space-4) !important;
}

.ml-5 {
  margin-left: var(--space-5) !important;
}

.ml-6 {
  margin-left: var(--space-6) !important;
}

.ml-7 {
  margin-left: var(--space-7) !important;
}

.ml-8 {
  margin-left: var(--space-8) !important;
}

.ml-9 {
  margin-left: var(--space-9) !important;
}

.ml-10 {
  margin-left: var(--space-10) !important;
}

.mr-0 {
  margin-right: var(--space-0) !important;
}

.mr-1 {
  margin-right: var(--space-1) !important;
}

.mr-2 {
  margin-right: var(--space-2) !important;
}

.mr-3 {
  margin-right: var(--space-3) !important;
}

.mr-4 {
  margin-right: var(--space-4) !important;
}

.mr-5 {
  margin-right: var(--space-5) !important;
}

.mr-6 {
  margin-right: var(--space-6) !important;
}

.mr-7 {
  margin-right: var(--space-7) !important;
}

.mr-8 {
  margin-right: var(--space-8) !important;
}

.mr-9 {
  margin-right: var(--space-9) !important;
}

.mr-10 {
  margin-right: var(--space-10) !important;
}

.mx-0 {
  margin-left: var(--space-0) !important;
  margin-right: var(--space-0) !important;
}

.mx-1 {
  margin-left: var(--space-1) !important;
  margin-right: var(--space-1) !important;
}

.mx-2 {
  margin-left: var(--space-2) !important;
  margin-right: var(--space-2) !important;
}

.mx-3 {
  margin-left: var(--space-3) !important;
  margin-right: var(--space-3) !important;
}

.mx-4 {
  margin-left: var(--space-4) !important;
  margin-right: var(--space-4) !important;
}

.mx-5 {
  margin-left: var(--space-5) !important;
  margin-right: var(--space-5) !important;
}

.mx-6 {
  margin-left: var(--space-6) !important;
  margin-right: var(--space-6) !important;
}

.mx-7 {
  margin-left: var(--space-7) !important;
  margin-right: var(--space-7) !important;
}

.mx-8 {
  margin-left: var(--space-8) !important;
  margin-right: var(--space-8) !important;
}

.mx-9 {
  margin-left: var(--space-9) !important;
  margin-right: var(--space-9) !important;
}

.mx-10 {
  margin-left: var(--space-10) !important;
  margin-right: var(--space-10) !important;
}

.my-0 {
  margin-top: var(--space-0) !important;
  margin-bottom: var(--space-0) !important;
}

.my-1 {
  margin-top: var(--space-1) !important;
  margin-bottom: var(--space-1) !important;
}

.my-2 {
  margin-top: var(--space-2) !important;
  margin-bottom: var(--space-2) !important;
}

.my-3 {
  margin-top: var(--space-3) !important;
  margin-bottom: var(--space-3) !important;
}

.my-4 {
  margin-top: var(--space-4) !important;
  margin-bottom: var(--space-4) !important;
}

.my-5 {
  margin-top: var(--space-5) !important;
  margin-bottom: var(--space-5) !important;
}

.my-6 {
  margin-top: var(--space-6) !important;
  margin-bottom: var(--space-6) !important;
}

.my-7 {
  margin-top: var(--space-7) !important;
  margin-bottom: var(--space-7) !important;
}

.my-8 {
  margin-top: var(--space-8) !important;
  margin-bottom: var(--space-8) !important;
}

.my-9 {
  margin-top: var(--space-9) !important;
  margin-bottom: var(--space-9) !important;
}

.my-10 {
  margin-top: var(--space-10) !important;
  margin-bottom: var(--space-10) !important;
}

/* Sentinel marker for margin.css */
.margin-sentinel {
  color: blue !important;
}

/* Inlined: ./spacing/gap.css */
.gap-0 {
  gap: var(--space-0) !important;
}

.gap-x-0 {
  column-gap: var(--space-0) !important;
}

.gap-y-0 {
  row-gap: var(--space-0) !important;
}

.gap-1 {
  gap: var(--space-1) !important;
}

.gap-x-1 {
  column-gap: var(--space-1) !important;
}

.gap-y-1 {
  row-gap: var(--space-1) !important;
}

.gap-2 {
  gap: var(--space-2) !important;
}

.gap-x-2 {
  column-gap: var(--space-2) !important;
}

.gap-y-2 {
  row-gap: var(--space-2) !important;
}

.gap-3 {
  gap: var(--space-3) !important;
}

.gap-x-3 {
  column-gap: var(--space-3) !important;
}

.gap-y-3 {
  row-gap: var(--space-3) !important;
}

.gap-4 {
  gap: var(--space-4) !important;
}

.gap-x-4 {
  column-gap: var(--space-4) !important;
}

.gap-y-4 {
  row-gap: var(--space-4) !important;
}

.gap-5 {
  gap: var(--space-5) !important;
}

.gap-x-5 {
  column-gap: var(--space-5) !important;
}

.gap-y-5 {
  row-gap: var(--space-5) !important;
}

.gap-6 {
  gap: var(--space-6) !important;
}

.gap-x-6 {
  column-gap: var(--space-6) !important;
}

.gap-y-6 {
  row-gap: var(--space-6) !important;
}

.gap-7 {
  gap: var(--space-7) !important;
}

.gap-x-7 {
  column-gap: var(--space-7) !important;
}

.gap-y-7 {
  row-gap: var(--space-7) !important;
}

.gap-8 {
  gap: var(--space-8) !important;
}

.gap-x-8 {
  column-gap: var(--space-8) !important;
}

.gap-y-8 {
  row-gap: var(--space-8) !important;
}

.gap-9 {
  gap: var(--space-9) !important;
}

.gap-x-9 {
  column-gap: var(--space-9) !important;
}

.gap-y-9 {
  row-gap: var(--space-9) !important;
}

.gap-10 {
  gap: var(--space-10) !important;
}

.gap-x-10 {
  column-gap: var(--space-10) !important;
}

.gap-y-10 {
  row-gap: var(--space-10) !important;
}

/* Sentinel marker for gap.css */
.gap-sentinel {
  color: limegreen !important;
}

/* ===========================
   Negative Margin-Top Helpers
   Cancels out vertical gaps
   =========================== */
    
.no-gap-y-0 {
  margin-top: calc(-1 * var(--space-0)) !important;
}

.no-gap-y-1 {
  margin-top: calc(-1 * var(--space-1)) !important;
}

.no-gap-y-2 {
  margin-top: calc(-1 * var(--space-2)) !important;
}

.no-gap-y-3 {
  margin-top: calc(-1 * var(--space-3)) !important;
}

.no-gap-y-4 {
  margin-top: calc(-1 * var(--space-4)) !important;
}

.no-gap-y-5 {
  margin-top: calc(-1 * var(--space-5)) !important;
}

/* Inlined: ./debug.css */
:root {
  --debug-outline: rgb(255 0 0 / 45%);
  --debug-outline-hover: rgb(255 0 0 / 85%);
  --debug-badge-bg: #f00;
  --debug-badge-fg: #000;
}

:where(.debug) { 
  position: relative; 
  outline: 1px dashed var(--debug-outline); 
}

:where(.debug):hover { 
  outline-color: var(--debug-outline-hover); 
}

:where(.debug):hover::after {
  content: attr(data-id) " • " attr(data-class);
  position: absolute;
  left: 0; top: 0;
  transform: translateY(-100%);
  white-space: pre;
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Courier New", monospace;
  padding: 2px 6px;
  border-radius: 4px;
  z-index: 9999;
  background: var(--debug-badge-bg);
  color: var(--debug-badge-fg);
  box-shadow: none;
  pointer-events: none;
}

/* Sentinel marker for debug.css */
.debug-sentinel { color: limegreen !important; }

 
/* Inlined: ./tailwind.css */
/* Overflow (both axes) */
.overflow-auto {
    overflow: auto;
}

.overflow-hidden {
    overflow: hidden;
}

.overflow-visible {
    overflow: visible;
}

.overflow-scroll {
    overflow: scroll;
}


/* Overflow X (horizontal) */
.overflow-x-auto {
    overflow-x: auto;
}

.overflow-x-hidden {
    overflow-x: hidden;
}

.overflow-x-visible {
    overflow-x: visible;
}

.overflow-x-scroll {
    overflow-x: scroll;
}


/* Overflow Y (vertical) */
.overflow-y-auto {
    overflow-y: auto;
}

.overflow-y-hidden {
    overflow-y: hidden;
}



.overflow-y-visible {
    overflow-y: visible;
}

.overflow-y-scroll {
    overflow-y: scroll;
}


/* utility classes to be moved to it's own css when I get enough */
.w-full { 
    width: 100%; 
}

.h-full { 
    height: 100%; 
}

.whitespace-normal {
    white-space: normal;
}

.whitespace-nowrap {
    white-space: nowrap;
}

.whitespace-pre {
    white-space: pre;
}

.whitespace-pre-line {
    white-space: pre-line;
}

.whitespace-pre-wrap {
    white-space: pre-wrap;
}

.whitespace-break-spaces {
    white-space: break-spaces;
}

.break-normal {
    overflow-wrap: normal;
    word-break: normal;
}

.break-words {
    overflow-wrap: break-word;
}

.break-all {
    word-break: break-all;
}

.break-keep {
    word-break: keep-all;
}


 
/* Inlined: ./media-query.css */
/* =====================================================
   Six Breakpoints (override knobs; everything else reads
   these tokens so you don’t touch the utilities again)
   ===================================================== */

    /* Base defaults (very small phones) */
    :root {
      /* Let the phone tiers bias toward the *minimum* end of clamp() */
      --vw-min: 480;   /* set ABOVE actual phone width so fluid → 0 */
      --vw-max: 960;   /* arbitrary upper bound; keeps fluid near 0 on phones */
      --lh-tight: 1.12;
      --lh-normal: 1.25;
      --lh-relaxed: 1.52;
      --lh-loose: 1.62;
      --border-w: 1px;
    }
    html { font-size: 15px; }
    
    /* 1) Small phones ≥360px */
    @media (width >= 360px) {
      :root {
        /* keep fluid low; maintain contrast on phone */
        --vw-min: 480;   /* still above actual width, so fluid ~ 0 */
        --vw-max: 960;
        --lh-tight: 1.26;
        --lh-normal: 1.52;
        --lh-relaxed: 1.62;
        --lh-loose: 1.72;
        --border-w: 1px;
      }
      html { font-size: 15.5px; }
    }

    /* 2) Large phones / phablets ≥480px */
    @media (width >= 480px) {
      :root {
        /* begin to allow some interpolation, but still modest */
        --vw-min: 480;
        --vw-max: 960;
        --lh-tight: 1.28;
        --lh-normal: 1.54;
        --lh-relaxed: 1.64;
        --lh-loose: 1.74;
        --border-w: 1.25px;
      }
      html { font-size: 16px; }
    }

    /* 3) Tablets ≥768px */
    @media (width >= 768px) {
      :root {
        --vw-min: 768;
        --vw-max: 1024;
        --lh-tight: 1.30;
        --lh-normal: 1.55;
        --lh-relaxed: 1.65;
        --lh-loose: 1.75;
        --border-w: 1.5px;
      }
      html { font-size: 17px; }
    }

    /* 4) Laptops ≥1024px */
    @media (width >= 1024px) {
      :root {
        --vw-min: 1024;
        --vw-max: 1280;
        --lh-tight: 1.28;
        --lh-normal: 1.52;
        --lh-relaxed: 1.62;
        --lh-loose: 1.72;
        --border-w: 2px;
      }
      html { font-size: 18px; }
    }

    /* 5) Desktops ≥1280px */
    @media (width >= 1280px) {
      :root {
        --vw-min: 1280;
        --vw-max: 1536;
        --lh-tight: 1.26;
        --lh-normal: 1.50;
        --lh-relaxed: 1.60;
        --lh-loose: 1.70;
        --border-w: 2px;
      }
      html { font-size: 19px; }
    }

    /* 6) Big desktops ≥1536px */
    @media (width >= 1536px) {
      :root {
        --vw-min: 1536;
        --vw-max: 1920;
        --lh-tight: 1.24;
        --lh-normal: 1.48;
        --lh-relaxed: 1.58;
        --lh-loose: 1.68;
        --border-w: 2.25px;
      }
      html { font-size: 20px; }
    }

/* Sentinel marker for media-query.css */
.media-query-sentinel { color: limegreen !important; }

 
/* Inlined: ./controls.css */
/* stylelint-disable property-no-vendor-prefix */

/* help text */
.help-icon {
  border: none;
  background: none;
  padding: 0;
  margin: 0;
  cursor: pointer;
  font-size: 0.9em;
  line-height: 1;
  color: var(--brand, #226B22);
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.help-icon:hover,
.help-icon:focus {
  filter: brightness(1.1);
}

.help-text {
  margin-top: 0;
  font-size: 0.85rem;
  color: #555;
  text-align: left;
}

.help-text.hidden {
  display: none;
}

/* Position label + icon horizontally */
.label-with-help {
  display: flex;
  align-items: center;
  gap: 0.25rem;
}

/* Allow hover glow & box shadows to render fully */
.info,
.menu-card,
.tab-content {
  overflow: visible;
}

/*  TAB LAYOUT SAFETY Prevent horizontal overflow */
.tab-content * {
    box-sizing: border-box;
    max-width: 100%;
    min-width: 0;
}

.page > * {
    min-width: 0;        /* allow shrinking */
    max-width: 100%;     /* prevent overflow */
    box-sizing: border-box;
} 

.form{
    display: contents;
    margin: 0;
    padding: 0;
    gap: 0;
}

.content {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden auto;
    color: var(--color-dark);
    background: var(--color-light);
    padding: var(--space-1) .25rem;
    gap: .75rem;
    -webkit-overflow-scrolling: touch;
    box-sizing: border-box;
    max-width: 100%;
}


.content > * {
    min-width: 0;
    max-width: 100%;
    box-sizing: border-box;
}

.content-noscroll {
  overflow: visible;      /* no scrollbars, let content expand */
  flex: none;             /* don't force flex-grow to fill the container */
  min-height: auto;       /* allow the height to shrink naturally */
}

/* --- Main header wrapper--- */
.info-wrapper {
  padding: .25rem;
  
}

/* Brand border and shadow  for holding groups of labels/fragments */
.info {
    display: flex;
    flex-direction: column;
    width: 100%;
    min-width: 0;
    min-height: 0;
    flex: none;
    color: var(--dark);
    background-color: var(--light);
    border-radius: 0.75rem;
    border: var(--border-w) solid var(--brand);
    gap: .25rem;
    padding: var(--space-2);
    box-shadow: 4px 4px 14px 0 hsl(var(--brand-h) var(--brand-s) var(--brand-l) / 25%);
    box-sizing: border-box;   /* ✅ keep borders/padding inside width */
    overflow: visible;        /* ✅ allow focus rings to render */
}

/* Brand border and shadow  for holding groups of labels/fragments */
.info2 {
    display: flex;
    flex-direction: column;
    width: 100%;
    min-width: 0;
    min-height: 0;
    flex: none;
    color: var(--dark);
    background-color: var(--brand-lighter);
    border-radius: 0.75rem;
    border: var(--border-w) solid var(--brand);
    gap: .25rem;
    padding: var(--space-2);
    box-shadow: 4px 4px 14px 0 hsl(var(--brand-h) var(--brand-s) var(--brand-l) / 25%);
    box-sizing: border-box;   /* ✅ keep borders/padding inside width */
    overflow: visible;        /* ✅ allow focus rings to render */
}

.scanner-greeting{
    display: flex;
    flex-direction: column;
    width: 100%;
    min-width: 0;
    min-height: 0;
    flex: none;
    color: var(--dark);
    background-color: var(light);
    border-radius: 0.75rem;
    border: var(--border-w) solid var(--dark);
    gap: .25rem;
    padding: var(--space-2);
    box-shadow: 4px 4px 14px 0 hsl(var(--dark-h) var(--dark-s) var(--dark-l) / 25%);
    box-sizing: border-box;   /* ✅ keep borders/padding inside width */
    overflow: visible;        /* ✅ allow focus rings to render */
}



/* ====================== CSS for DBEnum Fields =================================== */

/* ===========================
        SCROLLABLE AREA
        =========================== */
.scrollable-content {
    flex: 1 1 auto;          /* fills available space inside the tab */
    overflow: hidden auto;     /* shorthand — vertical scroll, no horizontal */
    width: 100%;             /* stay within tab width */
    background: #fafafa;
    min-height: 0;           /* critical for proper flex scrolling */
    box-sizing: border-box;  /* respect width in flex context */
}


/* ===========================
        TABS HEADER
        =========================== */
.tabs {
    flex: 0 0 auto;          /* fixed height, no flex-grow */
    display: block;          /* acts like normal block header */
    margin-bottom: 1rem;
    color: var(--brand);
}

.tab-header {
    display: flex;
    gap: 8px;
    border-bottom: 1px solid #ccc;
    padding-bottom: 4px;
}

.tab-button {
    background: none;
    border: none;
    padding: 6px 12px;
    font-weight: normal;
    cursor: pointer;
}

.tab-button.active {
    border-bottom: 2px solid var(--brand, #007bff);
    color: var(--brand, #007bff);
    font-weight: bold;
  
}

/* ===========================
        TAB CONTENT AREAS
        =========================== */
.tab-content {
    flex: 1 1 auto;          /* fills remaining space between header/footer */
    display: none;           /* all hidden by default */
    flex-direction: column;
    justify-content: flex-start; /* align content to top */
    align-items: stretch;        /* fill width */
    min-height: 0;               /* allows scrollable child to flex properly */
    box-sizing: border-box;
    margin-left: 0;
    margin-right: 0;
}

/* Only the active tab is shown */
.tab-content.active {
    display: flex;
}

/* ===========================
        TAB CONTENT SCROLL AREA
        =========================== */
.tab-content .scrollable-content {
  flex: 1 1 auto;
  overflow: hidden auto;
  -webkit-overflow-scrolling: touch;
  min-width: 0;
  min-height: 0;
  box-sizing: border-box;
  width: 100%;
}



/* ===========================     PREVIEW TAB FIXES     =========================== */
#tab-preview {
    justify-content: flex-start;
}

#tab-preview .fields {
    align-items: flex-start;
    justify-content: flex-start;
}

.tab-content,
.tab-content * {
    box-sizing: border-box;
    max-width: 100%;
    min-width: 0;
}



/* data table styles specificall for hover/odd-even */

/* stylelint-disable selector-class-pattern */
table.dataTable{
    cursor: pointer;
}

.dataTables_filter {
    display: none !important;
}

table.dataTable > tbody > tr:nth-child(odd),
table.dataTable > tbody > tr:nth-child(odd) * {
    background-color: var(--brand-lighter) !important;
    box-shadow: none !important;
}

table.dataTable > tbody > tr:nth-child(even),
table.dataTable > tbody > tr:nth-child(even) * {
    background-color: var(--light) !important;
    box-shadow: none !important;
}

table.dataTable > thead > th {
    text-align: left !important;
}

table.dataTable > tbody > tr:hover,
table.dataTable > tbody > tr:hover * {
    background-color: var(--brand) !important;
    color: var(--light) !important;
}
/* stylelint-enable selector-class-pattern */


/* title bar */
.title-bar {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    padding: 0.5rem 1rem;
    font-size: 1.25rem;
    font-weight: 700;
    line-height: var(--lh-snug);
    background-color: var(--brand);
    color: var(--light);
    border-top-left-radius: 0.5rem;
    border-top-right-radius: 0.5rem;
    border-bottom: var(--border-w) solid var(--brand-darker);
}

.button-bar {
    display: flex ;
    flex:none;
    width: 100%;
    min-width: 0;
    min-height: 0;
    overflow: auto hidden;
    margin-top: auto; 
    justify-content: center;
    align-items: center;
    gap: 1rem;
    background: var(--light);
    padding-bottom: calc(var(--space-1) * 3); 
    padding-top: calc(var(--space-1) * 2); 
    z-index: 10;
    background-color: var(--light);
}



.custom-search{
    max-width: 100%;
    flex:none;
    min-width:0;
    min-height:0;
    overflow:hidden
}


.plus-button{
  padding-top: .25rem;
}


/* defaults for controls */
.cont-def{
    background-color: transparent;
}

/* button default */
.btn-def {
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 6rem;
    padding: .25rem .5rem;
    font-weight: 600;
    font-size: clamp(1rem, calc(1rem + (1.25rem - 1.125rem) * var(--fluid)), 1.25rem);
    color: var(--light);
    background-color: var(--brand);
    border-width: var(--border-w);
    border-color: var(--light);
    border-radius: 0.75rem;
    user-select: none;         
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;   
    box-shadow: 2px 2px 4px 0 hsl(var(--brand-h) var(--brand-s) calc(var(--brand-l) - 10%) / 50%);
    transition: transform 0.08s ease, box-shadow 0.08s ease;
    will-change: transform;
}

.btn-def:active {
    transform: translate(2px, 2px); /* snap down-right */
    box-shadow: 2px 2px 4px 0 hsl(var(--brand-h) var(--brand-s) calc(var(--brand-l) - 10%) / 50%);
}

/* Disabled variant */
.btn-def:disabled,
.btn-disabled {
    background-color: var(--gray-light);
    border-color: var(--gray);
    color: var(--gray-dark);
    box-shadow: 2px 2px 4px 0 hsl(var(--dark-h) var(--dark-s) var(--dark-l) / 35%);
    pointer-events: none;   
    opacity: 0.6;           
    cursor: not-allowed;    
}


/* =====   ✅ Product & Image Handling Styles=== */

/* ---- Small product thumbnail (lists) ---- */
.product-thumb-box {
  width: 4rem;
  aspect-ratio: 4 / 3;                  /* keeps consistent 4:3 ratio */
  border-radius: 0.5rem;
  overflow: hidden;
  display: inline-flex;                  /* allows centering and padding */
  align-items: center;
  justify-content: center;
  padding: 0.125rem;                      /* space inside the box */
  background-color: var(--light);        /* helps images with transparency */
  box-shadow: 0 0.15rem 0.4rem hsl(0deg 0% 0% / 25%);
  vertical-align: middle;
}


.product-thumb-box-md {
  width: 5rem;
  aspect-ratio: 4 / 3;                  /* keeps consistent 4:3 ratio */
  border-radius: 0.5rem;
  overflow: hidden;
  display: inline-flex;                  /* allows centering and padding */
  align-items: center;
  justify-content: center;
  padding: 0.125rem;                      /* space inside the box */
  background-color: var(--light);        /* helps images with transparency */
  box-shadow: 0 0.15rem 0.4rem hsl(0deg 0% 0% / 25%);
  vertical-align: middle;
}

.product-thumb {
  width: 100%;
  height: 100%;
  object-fit: contain;                   /* preserve image proportions */
  display: block;
  border-radius: 0.25rem;                /* matches padding gap visually */
}

/* ---- Main Product Image & Drop Zone ---- */
.image-drop-wrapper {
  position: relative;
  width: 20rem;              /* consistent width across states */
  aspect-ratio: 4 / 3;       /* always 4:3 box */
  margin: 0 auto;
  border-radius: 0.5rem;
  overflow: hidden;
  background-color: hsl(0deg 0% 95%);    /* faint background when no image */
  display: flex;
  align-items: center;
  justify-content: center;
}

/* ---- Main Product Image & Drop Zone ---- */
.image-drop-wrapper-small{
  position: relative;
  width: 10rem !important;              /* consistent width across states */
  margin: 0 auto;
  border-radius: 0.5rem;
  overflow: hidden;
  background-color: hsl(0deg 0% 95%);    /* faint background when no image */
  display: flex;
  align-items: center;
  justify-content: center;
}

/* Always preserve space even without src */
.product-image {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
  border-radius: 0.5rem;
  border: 1px solid var(--brand);
  box-shadow: 0 0.5rem 1rem hsl(0deg 0% 0% / 20%);
  transition: opacity 0.3s ease;
}

/* Fade-in only when actual src exists */
.product-image[src] {
  opacity: 1;
}

.product-image:not([src]) {
  opacity: 0;
}

.scan-action-image-wrapper{
  max-width:100%;
  display:flex;
  justify-content:center;
  align-items:center;
  margin: 0 auto;
}

/* ---- Drop Zone Overlay ---- */
.drop-zone {
  position: absolute;
  inset: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  cursor: pointer;
  background-color: transparent;
  border-radius: 0.5rem;
  transition: background-color 0.2s ease;
}

/* Subtle highlight while dragging */
.drop-zone.dragover {
  background-color: hsl(0deg 0% 100% / 40%);
  backdrop-filter: blur(2px);
}

/* Show only ⬆️ icon when dragging */
.drop-zone-content {
  display: none;          /* hidden by default */
  font-size: 4rem;
  line-height: 1;
  pointer-events: none;   /* never intercept clicks */
}

.drop-zone.dragover .drop-zone-content {
  display: block;
  opacity: 0.9;
}

/* --------------------------------------- Dashboard Menu Header & Items ------------------------- */

/* --- Main header wrapper--- */
.menu-header-wrapper {
    margin: 0;
    margin-right: .25rem;
    margin-left: .25rem;
    
}

/* --- Main header (root menu) --- */
.menu-header-main {
    width: auto;
    height: auto;
    border-bottom: 1px solid #ddd;
    padding: 0.25rem;
    display: flex;
    flex-direction: column;
    align-items: center;
    border-radius: .75rem;
    color: var(--light, #f8f9fa);
    background-color: var(--brand);
    text-align: center;
    transition: background-color 0.2s ease, box-shadow 0.2s ease;
    cursor: auto;
    position: relative;    
}

.menu-header-main .logout-btn {
    position: absolute;
    right: 0.75rem;          /* nudge from right edge */
    top: 1.25rem;            /* align near top */
    font-size: 0.8rem;      /* very small */
    font-weight:600;
    padding-left: .25rem;
    padding-right: .25rem;
    border: var(--brand);
    background: var(--light);
    border-radius: 8%;
    color: var(--brand);
    cursor: pointer;
    text-decoration: none; /* looks like a link */
}

.menu-header-main .logout-btn:hover {
    color: var(--brand); /* subtle hover effect */
    font-weight: 600;
}

.menu-header-title {
    margin-top: .25rem;
    color: var(--light, #f8f9fa);
}

.menu-header-desc {
    margin-top: .75rem;
    line-height: 1.25rem;
    opacity: 0.9;
    color: var(--light, #f8f9fa);
}

/* --- Sub-header (breadcrumbs + title + icon) --- */
.menu-header {
    width: 100%;
    border-bottom: 1px solid #ddd;
    cursor: pointer;
    background-color: var(--brand );
    color: var(--light, #f8f9fa);
    display: flex;
    flex-direction: column;
    border-radius: 0.75rem;
    outline: none !important;
    pointer-events: none;
}


.menu-header > .flex {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.25rem;
}

.menu-header .nav-trail {
    display: flex;
    gap: 0.25rem;
    opacity: 0.85;
}

.menu-header .menu-header-title {
    font-weight: 600;
    text-align: center;
}

.menu-header .menu-header-icon {
    color: var(--light, #f8f9fa);
}

.menu-grid {
    margin-top: .5rem;
    padding-left: .25rem;
    padding-right: .25rem;
    padding-bottom: 1rem;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr)); /* 📱 two columns on phone */
    gap: 1rem;
}

@media (width >= 640px) {
    .menu-grid { grid-template-columns: repeat(3, 1fr); }
}

@media (width >= 1000px) {
    .menu-grid { grid-template-columns: repeat(4, 1fr); }
}

.menu-card {
    text-align: center;
    border: 1px solid #ccc;
    border-radius: 0.5rem;
    padding: 0.5rem;
    background: var(--light);
    box-shadow: 2px 2px 4px var(--brand-rgb);
    cursor: pointer;
    transition: box-shadow 0.2s ease;
    min-height: 3.5rem;
    position: relative;
}

/* === Attention Indicator Icon === */
.indicator-icon {
  position: absolute;
  top: 0.2rem;
  left: 0.3rem;
  font-size: .85rem;
  color: #ffd60a;       /* yellow fill */
  -webkit-text-stroke: 1px #000;  /* thin black outline */
  pointer-events: none;
}

.menu-card:hover .indicator-icon {
  opacity: 1;
}

.menu-card:hover {
    box-shadow: 2px 2px 6px var(--brand-rbg);
}

/* Row for icon + title */
.menu-card-header {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.2rem;
}

/* Icon sizing */
.menu-card-icon {
    font-weight: 800;
    color: var(--brand);
}

/* Title next to icon */
.menu-title {
    font-weight: bold;
    font-size: 1rem;
    color: #333;
}

/* Description below */
.menu-desc {
    font-size: 0.875rem;
    color: #666;
    margin-top: 0.25rem;
}

.navtrail {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.navtrail-item
{
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.5rem;
    font-weight: 800;
}

/* Keyboard focus ring */
.navtrail-item:focus {
    outline: 2px solid var(--light);
    outline-offset: 2px;
    border-radius: 0.25rem;
}


/* index-fragment-wrapper classes */
.index-frag-wrapper{
  display:flex;
  flex-direction: column;
  font-size: 1.25rem;
  align-items: center;
  justify-content: center;
  padding-left: .5rem;
  padding-right: .5rem;
  padding-bottom: 0;
}

.index-frag-header{
  align-items: center;
  justify-content: center;
  font-size: 1rem;
  font-weight: 600;
}

.index-frag-desc{
  align-items: center;
  justify-content: center;
  text-align: center;
  font-size: .85rem;
}

/* -------------------- spotify/youtube/appleMusic classes ------------ */
.video-fullscreen {
  max-width: 1000px;
  margin: 0 auto;
  padding: .125rem;
  width: 100%;
 aspect-ratio: 4 / 3;   
}


.audio-wrapper {
  max-width: 1000px;
  margin: 0 auto;
  padding: .125rem;
  width: 100%;
 aspect-ratio: 4 / 3;   
}
    
.audio-wrapper iframe {
  width: 100%;
  height: 100%;
  border: none;
  border-radius: 8px;
}

.spotify-button {
  display: inline-block;
  margin-top: 1.5rem;
  margin-bottom: 1rem;
  padding: .75rem 1.25rem;
  background: var(--brand);
  color: var(--light);
  border-radius: 8px;
  font-weight: 600;
  text-decoration: none;
  font-size: 1rem;
}

.spotify-button:hover {
text-decoration: none;
  background: var(--brand);
}


.brand-bar {
    display: flex ;
    flex:none;
    width: 100%;
    min-width: 0;
    min-height: 0;
    overflow: auto hidden;
    margin-top: auto; 
    justify-content: center;
    align-items: center;
    gap: 1rem;
    background: var(--light);
      z-index: 10;
    background-color: var(--light);
}

.brand {
  color: var(--brand);
  font-size: .85rem;
}

.brand-desc {
  margin-top: .25rem;
  color: var(--brand);
  font-size: .6rem;
  line-height: 1;
}

.site-link {
  margin-top: .25rem;
  font-size: .85rem;
}

.site-link a {
  color: var(--brand);
  font-weight: 600;
  text-decoration: underline;
}

.site-link a:hover {
  font-weight: bold;
}

.brand,
.brand-desc,
.site-link {
  text-align: center;
}


/* ------------------------------------------- Swiper/Slider styles ------------------------- */
.swiper-fragment {
    overflow: visible;
    display: block;
    text-align:center;
    height: auto;
    border-radius: 1.5rem;
    width: auto !important;
}

/* slide layout */
.swiper-slide {
    display: block;
    flex-shrink: 0;
    height: 25rem;
    min-height: 0;
    text-align: center;
    overflow: visible;
    border-radius: 1.5rem;
}

/* text area: fixed height */
.text-area {
  text-align: center;
    height: 4rem;
    padding: 0 .75rem;
    box-sizing: border-box;
    overflow: visible;
    line-height: 1.2 !important;
    background-color: var(--light);
    
}

.slide-name {
    text-align: center;
    font-size: var(--text-base);
    font-weight: 700;
    padding-top: .5rem;
    padding-bottom: .25rem;
}

.slide-description {
    display: inline;        /* keeps it flowing with text */
    white-space: normal;    /* allows wrapping */
    font-size: 1rem;
    line-height: 1.1;
    max-width: 30rem;
    
}

.product-name {
    font-weight: bold;
    margin-right: .25rem;   /* small gap between name + description */
}

/* image area: fixed height box that always centers */
.image-area {
    display:flex;
    height: 13rem;
    justify-content: center;
    box-sizing: border-box;
    overflow: visible;
    background-color: var(--light);
    padding-top: .25rem;
    padding-bottom: .75rem;
    border-radius: 1.5rem;
}

/* image: shrink large ones, never exceed box, stay centered */
.slide-image {
    overflow: hidden;
    max-width: 100%;
    max-height: 13rem;
    display: block;
    border-radius: 1.5rem;
    border-width: var(--border-w);
    border-style: solid;  
    box-shadow: 4px 4px 10px hsl(var(--dark-h) var(--dark-s) var(--dark-l) / 50%);
}

.swiper-fragment,
.image-area,
.slide-image,
.image-drop-wrapper,
.drop-zone {
  overflow: visible !important;
}

/* Preserve focus outlines for inputs/buttons */
input:focus,
select:focus,
textarea:focus,
button:focus {
  outline-offset: 2px;
  overflow: visible;
}

/* discount code css */
.code-boxes {
  display: flex; gap: 0.5em; line-height: 1; 
}

.code-box {
  width: 1.2em; height: 1.2em;
  display: flex; align-items: center; justify-content: center;
  border: 2px solid var(--brand) !important;
  color: var(--brand);
  border-radius: .35em;
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', monospace;
  letter-spacing: .02em;
font-size: 20px; /* 👈 controls the character and box scaling */
}

/* animated pointer to draw attention to Message From The Owner */

/* === Center + animate Message From Owner === */
.message-heading {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 0.4em;
  line-height: 1.2;
  text-align: center;
} 

.message-body {
  display: block;
  text-align: center;
  margin-top: 0.25rem;
  font-style: italic;
  color: var(--dark);
}

/* ✋ Animated finger emoji */

@keyframes finger-wiggle {
  0% {
    transform: translateX(0)
  }
  
  50% {
    transform: translateX(6px);
  }
  
  100% {
    transform: translateX(0);
  }
}

.finger-emoji {
  display: inline-block;
  animation: finger-wiggle 0.75s ease-in-out infinite;
}

/* style for links for call back info (tel: mailto: links */
.call-back-link {
  color: var(--brand);
  font-weight: 500;
  text-decoration: underline;
  cursor: pointer;
}

.call-back-link:hover {
  color: var(--brand-dark, var(--brand));
  text-decoration: underline;
}

.call-back-div{
  margin-bottom: .5rem;
  
}

/* ============================================
  Debug Sentinel (safe to leave in)
  ============================================ */
.controls-sentinel {
  color: limegreen !important;
}  
 
/* Inlined: ./heading.css */
/* stylelint-disable property-no-vendor-prefix */

/* /css/base/heading.css */
#page {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  min-height: 0;

  /* ✅ Mobile-safe viewport heights */
  height: 100dvh; /* dynamic viewport */
  height: 100svh; /* small viewport (iOS safe) */
  height: 100vh;  /* fallback */
}

#heading-fragment{
  padding-top: var(--space-1); 
  padding-bottom: calc(var(--space-1) * 2); 

  /* Define the text sizes HERE (parent scope) */
  --company-name-size: clamp(1.35rem, 1vw, 1.5rem);
  --tagline-size:      clamp(1.05rem,   1vw, 1.25rem);

  /* Compute row height from those sizes (line-height ≈ 1.1) */
  --heading-h: calc(
    (var(--company-name-size) * 1.2) +
    (var(--tagline-size) * 1.2)
  );
}

#heading-fragment.heading,
#heading-wrapper,
.heading {
  display: flex;
  justify-content: center;
  width: 100%;
  max-width: 100%;
  height: auto !important;
  box-sizing: border-box;
  overflow: hidden;
  user-select: none;          /* Prevent text selection */
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  pointer-events: auto;   
  cursor: default;
}

.heading-row {
  display: flex;
  align-items: center;
  gap: var(--space-3, 0.75rem);
  min-width: 0;
  box-sizing: border-box;
  height: var(--heading-h);
  max-height: var(--heading-h);
  overflow: hidden;
  padding: .25rem;
}

/* Text: consume the vars defined on the row */
.company-name {
  font-size: var(--company-name-size);
  margin: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  color: var(--brand);
  font-weight: 700;      /* bold */
}

.company-tagline {
  margin: 0; 
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  color: var(--brand);
  font-weight: 500;      /* bold */
  font-size: var(--tagline-size);
}

/* Logo: match the row height, never larger */
.heading-logo {
  height: 100%;            /* equals var(--heading-h) */
  display: flex;
  align-items: center;
  flex: none;
  line-height: 0;
  background:transparent;
}

.heading-logo img {
  height: 100%;            /* follow the row’s height */
  width: auto;             /* keep aspect ratio */
  max-height: 100%;
  object-fit: contain;     /* no cropping */
  display: block;
  background: transparent;
  cursor: pointer;
}

/* Keep hidden content hidden */
.heading-hidden, .hidden, [hidden] {
  display: none !important;
}

/* Sentinel marker for heading.css */
.heading-sentinel { color: limegreen !important; }
 
/* Inlined: ./ui.css */
/* stylelint-disable property-no-vendor-prefix */

/* Global label (not inside .field) */
.form-label {
  display: block;
  width: 100%;
  text-align: center;
  user-select: none;          /* Prevent text selection */
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  pointer-events: auto;   
  pointer-events: none;
  cursor: default;
}

/* ==============================================
   FIELDS CONTAINER (the bordered box)
   ============================================== */
.fields {
  display: flex;
  flex-direction: column;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  color: var(--dark);
  background-color: var(--brand-lighter);
  border: var(--border-w) solid var(--brand);
  border-radius: 0.75rem;
  box-shadow: 4px 4px 14px 0 var(--brand-lighter) / 25%;
  gap: 0.5rem;
  padding: var(--space-2) 0.5rem;
  padding-top: 0.5rem;
  user-select: none;
  overflow: visible;
  box-sizing: border-box;
}

/* ==============================================
   FIELD (vertical label + input)
   ============================================== */
.field {
  display: flex;
  flex-direction: column;
  justify-content: center; /* vertical centering for children */
  align-items: flex-start; /* left-align all children */
  gap: 0.25rem;
  width: 100%;
  min-width: 0;
  max-width: 100%;
  background-color: transparent;
  box-sizing: border-box;
  overflow: visible;
  padding: 0;
}

/* Optional fine-tuning if labels need their own alignment */
.field > label,
.field-label {
  align-self: flex-start;
  justify-content: flex-start; 
  display: flex;
  align-items:flex-start;         
  text-align: left;
  user-select: none;          /* Prevent text selection */
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  pointer-events: auto;   
  cursor: default;
}

.field-label,
.checkbox-label {
  font-size: 1.1rem;
  font-weight: 500;
  background-color: transparent;
}

/* Restore textarea behavior */
textarea,
textarea.field-text {
  min-height: 6rem;
  height: auto;
  line-height: 1.2;
  padding: 0.5rem 0.375rem;
  resize: vertical; /* allow resizing on desktop */
  overflow: auto;   /* show scrollbar only if needed */
  font-family: inherit;
  -webkit-appearance: none; /* fix iOS shrinking bug */
}

    
    
/* Generic styling for all text-like fields */
.field-text,
input[type="text"],
input[type="tel"],
input[type="email"],
input[type="password"],
textarea,
select {
  box-sizing: border-box;
  width: 100%;
  height: 2rem;
  line-height: 1.2rem;
  padding: 0 0.25rem;
  border: 1px solid var(--brand);
  border-radius: 0.375rem;
  background-color: var(--light);
  color: var(--dark);
  font-size: 1rem;
  font-family: inherit;
  outline: none;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

/* ✅ Strong, consistent focus state for all inputs, buttons, and interactive elements */
input.field-text:focus,
textarea.field-text:focus,
select.field-text:focus,
button:focus,
input[type='checkbox']:focus,
.menu-card:focus,
.field-text:focus {
  outline: 2px solid var(--brand) !important;
  outline-offset: 0;
  border-color: var(--brand-darker);
  box-shadow: 0 0 6px hsl(var(--brand-h) var(--brand-s) var(--brand-l) / 50%) !important;
  transition: box-shadow 0.1s ease, border-color 0.1s ease;
}

/* Prevent outer menu headers from showing focus rings */
.menu-header:focus {
  outline: none !important;
  box-shadow: none !important;
}

/* Read-only / disabled appearance */
.field-text[readonly],
textarea[readonly],
input[readonly] {
  background-color: var(--gray-lighter);
  color: var(--gray-medium);
  border-color: var(--gray-dark);
  cursor: not-allowed;
  pointer-events: none;
}

/* Style checkboxes when readonly */
input[type="checkbox"].readonly {
    accent-color: var(--gray-medium);
    pointer-events: none;
}

/* Number inputs — remove spin buttons but keep styling consistent */
input[type="number"] {
  -moz-appearance: textfield;
  -webkit-appearance: none; /* fix Chrome/Edge spin buttons */
  appearance: textfield;
}

input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
  -webkit-appearance: none;
  margin: 0;
}



/* ==============================================
   FIELD ROW (horizontal layout)
   ============================================== */
.field-row {
  display: flex;
  flex-flow: row nowrap;
  align-items: flex-start;
  justify-content: flex-start;
  gap: 0.75rem;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  box-sizing: border-box;
  overflow: visible;
} 

/* Direct children of .field-row */
.field-row > * {
  flex: 1 1 0;
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
}




/* ==============================================
   LABEL ALIGNMENT IN HORIZONTAL ROWS
   ============================================== */
.field-row .field-label,
.field-row > label {
  align-self: center;          /* center vertically with input */
  justify-content: flex-start; /* left-align text */
  text-align: left;
  display: flex;
  align-items: center;         /* center label text vertically within itself */
}

/* Vertical column group */
.field-col {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.5rem;
  width: 100%;
}

/*  CHECKBOX (Final unified version - label untouched)
   ============================================== */
.checkbox-wrapper {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  border-radius: 0.25rem;
  cursor: pointer;
  user-select: none;
  padding: .25rem 0;
}

/* Native checkbox (slightly enlarged and branded) */
.checkbox-wrapper input[type="checkbox"] {
  transform: scale(1.25);            /* ✅ enlarge without breaking layout */
  transform-origin: center;
  appearance: auto;
  -webkit-appearance: checkbox;
  -moz-appearance: checkbox;
  accent-color: var(--brand);
  box-sizing: border-box;
  vertical-align: middle;
  cursor: pointer;
  margin-left: .5rem;
}

/* Suppress native focus ring so only wrapper outline appears */
.checkbox-wrapper input[type="checkbox"]:focus {
  outline: none !important;
  box-shadow: none !important;

}

/* Also show focus ring when clicked (not just tabbed) */
.checkbox-wrapper:has(input[type="chckbox"]:focus-visible),
.checkbox-wrapper:has(input[type="checkbox"]:focus) {
  outline: 2px solid var(--brand);
  outline-offset: 2px;
  box-shadow: 0 0 6px hsl(var(--brand-h) var(--brand-s) var(--brand-l) / 50%);
}

/* ==============================================
   SELECT (Dropdown) — unified with .field-text
   ============================================== */
.select-wrapper {
  position: relative;
  display: flex;
  align-items: center;
  width: 100%;
  max-width: 100%;
 cursor: pointer;
}

.select-wrapper select {
  appearance: none;
  -moz-appearance: none;
  -webkit-appearance: none;
  width: 100%;
  height: 2rem;
  line-height: 2rem;
  padding: 0 1.5rem 0 0.25rem; /* left padding matches inputs, right leaves space for arrow */
  border: 1px solid var(--brand);
  border-radius: 0.375rem;
  background-color: var(--light);
  color: var(--dark);
  font-size: 1rem;
  font-family: inherit;
  box-sizing: border-box;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
  cursor: pointer;
}


/* Custom dropdown arrow */
.select-wrapper::after {
  content: "";
  position: absolute;
  right: 0.125rem;
  top: 50%;
  transform: translateY(-50%);
  width: 1.75rem;
  height: 1.75rem;
  background-image: url("/images/system/select-arrow-20418ba65496fa08a7bd5edf5d6cbb14.svg");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
  pointer-events: none; /* keep this */
}

/* ==============================================
   SIZE & ALIGNMENT HELPERS
   ============================================== */
[class*="size-"] {
  flex-shrink: 0;
  min-width: 0;
  box-sizing: border-box;
}

.shrink {
  flex: 0 0 auto !important;
  width: auto !important;
  max-width: none !important;
}

.text-center {
  text-align: center !important;
}

.text-right {
  text-align: right !important;
}

.text-left {
  text-align: left !important;
}

/*  DEBUG OUTLINES (optional) ======= */

/*
.content    { outline: 2px solid red !important; }
.fields     { outline: 2px solid orange !important; }
.field-row  { outline: 2px solid blue !important; }
.field      { outline: 1px dashed purple !important; }
.field-text { outline: 1px dotted green !important; }
*/
 
/* Inlined: ./utilities.css */
/* stylelint-disable property-no-vendor-prefix */

/* some other stuff css/base/utilities.css */
.no-sel{
	user-select: none;          /* Prevent text selection */
	-webkit-user-select: none;
	-moz-user-select: none;
	-ms-user-select: none;
	pointer-events: auto;       
}

.sel {
	user-select: text;          /* Allow normal text selection */
	-webkit-user-select: text;
	-moz-user-select: text;
	-ms-user-select: text;
}


/* prevents default auto-fill color (yellow on ios) */
.input:-webkit-autofill {
	-webkit-box-shadow: 0 0 0 1000px #f9f9f9 inset !important; /* your background */
	-webkit-text-fill-color: #000 !important;                  /* readable text */
	transition: background-color 5000s ease-in-out 0s;         /* prevent flash */
}




input:disabled {
	background-color: var(--gray-light);
	color: var(--gray-dark);
	cursor: not-allowed;
}


/* The next two, gets rid of the spinner */
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
	-webkit-appearance: none;
	margin: 0;
}

/* Firefox */
input[type="number"] {
	-moz-appearance: textfield;
}


/* Sentinel marker for utilities.css */
.utilities-sentinel { color: limegreen !important; }
	
 
/* Inlined: ./enums/enum-layout.css */
/* ======================================
   S2 Container Layouts (flex + overflow rules  css/base/enum/enums/enum-layout.css)
   ====================================== */

/* ======================================
   Flex child safety: prevent accidental overflow
   ====================================== */
.lo-fp > *, .lo-cg > *, .lo-cgs > *, .lo-cf > *, .lo-cfs > *,
.lo-rg > *, .lo-rgs > *, .lo-rf > *, .lo-rfs > * {
  min-width: 0;        /* 🔑 let children shrink inside flex */
  max-width: 100%;
  box-sizing: border-box;
} 

.lo-fp {
  display: flex;
  flex-direction: column;
  width: 100%;
  height: 100%;
  min-width: 0;
  min-height: 0;
  flex: 1 1 auto;
  overflow: hidden;
}


/* Column grow (fills parent, no scroll) */
.lo-cg {
  display: flex;
  flex-direction: column;
  width: 100%;
  height: 100%;
  min-width: 0;
  min-height: 0;
  flex: 1 1 0%;
  overflow: hidden;
}

/* Column fixed (size is intrinsic, no scroll) */
.lo-cf {
  display: flex;
  flex-direction: column;
  width: 100%;
  min-width: 0;
  min-height: 0;
  flex: none;
  overflow: hidden;
}

/* Column grow + scroll (vertical only) */
.lo-cgs {
  display: flex;
  flex-direction: column;
  width: 100%;
  height: 100%;
  min-width: 0;
  min-height: 0;
  flex: 1 1 0%;
  overflow: hidden auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
}

/* Column fixed + scroll (vertical only) */
.lo-cfs {
  display: flex;
  flex-direction: column;
  width: 100%;
  min-width: 0;
  min-height: 0;
  flex: none;
  overflow: hidden auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
}

/* Row grow (fills horizontally, no scroll) */
.lo-rg {
  display: flex;
  flex-direction: row;
  width: 100%;
  min-width: 0;
  min-height: 0;
  flex: 1 1 0%;
  overflow: hidden;
}

/* Row fixed (intrinsic size, no scroll) */
.lo-rf {
  display: flex;
  flex-direction: row;
  width: 100%;
  min-width: 0;
  min-height: 0;
  flex: none;
  gap: .375rem;
  overflow: hidden;
}

/* Row grow + scroll (horizontal only) */
.lo-rgs {
  display: flex;
  flex-direction: row;
  width: 100%;
  min-width: 0;
  min-height: 0;
  flex: 1 1 0%;
  overflow: auto hidden;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
}

/* Row fixed + scroll (horizontal only) */
.lo-rfs {
  display: flex;
  flex-direction: row;
  width: 100%;
  min-width: 0;
  min-height: 0;
  flex: none;
  gap: .5rem;
  overflow: auto hidden;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
}

/* Sentinel marker for enum-layout.css */
.enum-layout-sentinel { color: limegreen !important; }

 
/* Inlined: ./enums/enum-alignment.css */
/* Classes returned from the AlignmemtResolver css/base/enums/enum-alignment.css */


/* =========================
   Item (child) self-alignment
   ========================= */
.al-item-start {
  align-self: flex-start;
  text-align: left;
  
}

.al-item-center {
  align-self: center;
  text-align: center;
}

.al-item-end {
  align-self: flex-end;
  text-align: right;
  
}

/* =========================
   Container: COLUMN (vertical stack)
   Includes display + direction for predictability
   ========================= */
.al-tl {
  display: flex;
  flex-direction: column;
  align-items: flex-start;   /* horizontal */
  justify-content: flex-start; /* vertical */

}

.al-tc {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;

}

.al-tr {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  justify-content: flex-start;

}


.al-cl {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;

}

.al-cc {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  

}

.al-cr {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  justify-content: center;

}

.al-bl {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: flex-end;

}

.al-bc {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-end;

}

.al-br {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  justify-content: flex-end;

}

/* =========================
   Container: ROW (horizontal row)
   Includes display + direction for predictability
   ========================= */
.al-row-tl {
  display: flex;
  flex-direction: row;
  justify-content: flex-start; /* horizontal */
  align-items: flex-start;     /* vertical */
  margin-top: .5rem;
}

.al-row-tc {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: flex-start;
  margin-top: .5rem;
}

.al-row-tr {
  display: flex;
  flex-direction: row;
  justify-content: flex-end;
  align-items: flex-start;
  margin-top: .5rem;  
}

.al-row-cl {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  margin-top: .5rem;

}

.al-row-cc {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  margin-top: .5rem;
}

.al-row-cr {
  display: flex;
  flex-direction: row;
  justify-content: flex-end;
  align-items: center;
  margin-top: .5rem;
}

.al-row-bl {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: flex-end;
  margin-top: .5rem;
}

.al-row-bc {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: flex-end;
  margin-top: .5rem;
}

.al-row-br {
  display: flex;
  flex-direction: row;
  justify-content: flex-end;
  align-items: flex-end;
  margin-top: .5rem;
}


/* Sentinel marker for enum-alignment.css */
.enum-alignment-sentinel { color: limegreen !important; }


/* Inlined: ./enums/enum-border-style.css */
/* ================ css/base/enums/enum-border-style.css ====================================== */
.bs-border {
  border-width: var(--border-w);
  border-style: solid;
}

.bs-thin {
  border-width: calc(var(--border-w) * 1);
  border-style: solid;
}

.bs-thick {
  border-width: calc(var(--border-w) * 2);
  border-style: solid;
}

/* ======================================
   Rounded: include border, NO overflow clipping
   ====================================== */
    
/* All corners */
.bs-rsm {
  border-radius: 0.125rem;
  border-width: var(--border-w);
  border-style: solid;
}

.bs-rmd {
  border-radius: 0.375rem;
  border-width: var(--border-w);
  border-style: solid;
}

.bs-rlg {
  border-radius: 0.5rem;
  border-width: var(--border-w);
  border-style: solid;
}

.bs-rxl {
  border-radius: 0.75rem;
  border-width: var(--border-w);
  border-style: solid;
}

.bs-r2xl {
  border-radius: 1rem;
  border-width: var(--border-w);
  border-style: solid;
}

.bs-r3xl {
  border-radius: 1.5rem;
  border-width: var(--border-w);
  border-style: solid;
}

.bs-rf {
  border-radius: 9999px;
  border-width: var(--border-w);
  border-style: solid;
}

/* Top corners */
.bs-tr-sm {
  border-top-left-radius: 0.125rem;
  border-top-right-radius: 0.125rem;
  border-width: var(--border-w);
  border-style: solid;
}

.bs-tr-md {
  border-top-left-radius: 0.375rem;
  border-top-right-radius: 0.375rem;
  border-width: var(--border-w);
  border-style: solid;
}

.bs-tr-lg {
  border-top-left-radius: 0.5rem;
  border-top-right-radius: 0.5rem;
  border-width: var(--border-w);
  border-style: solid;
}

.bs-tr-xl {
  border-top-left-radius: 0.75rem;
  border-top-right-radius: 0.75rem;
  border-width: var(--border-w);
  border-style: solid;
}

.bs-tr-2xl {
  border-top-left-radius: 1rem;
  border-top-right-radius: 1rem;
  border-width: var(--border-w);
  border-style: solid;
}

.bs-tr-3xl {
  border-top-left-radius: 1.5rem;
  border-top-right-radius: 1.5rem;
  border-width: var(--border-w);
  border-style: solid;
}

/* Bottom corners */
.bs-br-sm {
  border-bottom-left-radius: 0.125rem;
  border-bottom-right-radius: 0.125rem;
  border-width: var(--border-w);
  border-style: solid;
}

.bs-br-md {
  border-bottom-left-radius: 0.375rem;
  border-bottom-right-radius: 0.375rem;
  border-width: var(--border-w);
  border-style: solid;
}

.bs-br-lg {
  border-bottom-left-radius: 0.5rem;
  border-bottom-right-radius: 0.5rem;
  border-width: var(--border-w);
  border-style: solid;
}

.bs-br-xl {
  border-bottom-left-radius: 0.75rem;
  border-bottom-right-radius: 0.75rem;
  border-width: var(--border-w);
  border-style: solid;
}

.bs-br-2xl {
  border-bottom-left-radius: 1rem;
  border-bottom-right-radius: 1rem;
  border-width: var(--border-w);
  border-style: solid;
}

.bs-br-3xl {
  border-bottom-left-radius: 1.5rem;
  border-bottom-right-radius: 1.5rem;
  border-width: var(--border-w);
  border-style: solid;
}

/* Left side corners */
.bs-lr-sm {
  border-top-left-radius: 0.125rem;
  border-bottom-left-radius: 0.125rem;
  border-width: var(--border-w);
  border-style: solid;
}

.bs-lr-md {
  border-top-left-radius: 0.375rem;
  border-bottom-left-radius: 0.375rem;
  border-width: var(--border-w);
  border-style: solid;
}

.bs-lr-lg {
  border-top-left-radius: 0.5rem;
  border-bottom-left-radius: 0.5rem;
  border-width: var(--border-w);
  border-style: solid;
}

.bs-lr-xl {
  border-top-left-radius: 0.75rem;
  border-bottom-left-radius: 0.75rem;
  border-width: var(--border-w);
  border-style: solid;
}

.bs-lr-2xl {
  border-top-left-radius: 1rem;
  border-bottom-left-radius: 1rem;
  border-width: var(--border-w);
  border-style: solid;
}

.bs-lr-3xl {
  border-top-left-radius: 1.5rem;
  border-bottom-left-radius: 1.5rem;
  border-width: var(--border-w);
  border-style: solid;
}

/* Right side corners */
.bs-rr-sm {
  border-top-right-radius: 0.125rem;
  border-bottom-right-radius: 0.125rem;
  border-width: var(--border-w);
  border-style: solid;
}

.bs-rr-md {
  border-top-right-radius: 0.375rem;
  border-bottom-right-radius: 0.375rem;
  border-width: var(--border-w);
  border-style: solid;
}

.bs-rr-lg {
  border-top-right-radius: 0.5rem;
  border-bottom-right-radius: 0.5rem;
  border-width: var(--border-w);
  border-style: solid;
}

.bs-rr-xl {
  border-top-right-radius: 0.75rem;
  border-bottom-right-radius: 0.75rem;
  border-width: var(--border-w);
  border-style: solid;
}

.bs-rr-2xl {
  border-top-right-radius: 1rem;
  border-bottom-right-radius: 1rem;
  border-width: var(--border-w);
  border-style: solid;
}

.bs-rr-3xl {
  border-top-right-radius: 1.5rem;
  border-bottom-right-radius: 1.5rem;
  border-width: var(--border-w);
  border-style: solid;
}

/* Optional helper when you *do* want clipping */
.clip {
  overflow: hidden;
}

/* Sentinel marker for enum-border-style.css */
.enum-border-style-sentinel {
  color: limegreen !important;
}
 
/* Inlined: ./enums/enum-size.css */
.size-1of20 {
  flex: 0 0 5%;
  max-width: 5%;
}

.size-2of20 {
  flex: 0 0 10%;
  max-width: 10%;
}

.size-3of20 {
  flex: 0 0 15%;
  max-width: 15%;
}

.size-4of20 {
  flex: 0 0 20%;
  max-width: 20%;
}

.size-5of20 {
  flex: 0 0 25%;
  max-width: 25%;
}

.size-6of20 {
  flex: 0 0 30%;
  max-width: 30%;
}

.size-7of20 {
  flex: 0 0 35%;
  max-width: 35%;
}

.size-8of20 {
  flex: 0 0 40%;
  max-width: 40%;
}

.size-9of20 {
  flex: 0 0 45%;
  max-width: 45%;
}

.size-10of20 {
  flex: 0 0 50%;
  max-width: 50%;
}

.size-11of20 {
  flex: 0 0 55%;
  max-width: 55%;
}

.size-12of20 {
  flex: 0 0 60%;
  max-width: 60%;
}

.size-13of20 {
  flex: 0 0 65%;
  max-width: 65%;
}

.size-14of20 {
  flex: 0 0 70%;
  max-width: 70%;
}

.size-15of20 {
  flex: 0 0 75%;
  max-width: 75%;
}

.size-16of20 {
  flex: 0 0 80%;
  max-width: 80%;
}

.size-17of20 {
  flex: 0 0 85%;
  max-width: 85%;
}

.size-18of20 {
  flex: 0 0 90%;
  max-width: 90%;
}

.size-19of20 {
  flex: 0 0 95%;
  max-width: 95%;
}

.size-20of20 {
  flex: 0 0 100%;
  max-width: 100%;
}

/* ================================================
   GRID20 FIELD ROW (Fix for overflow and sizing)
   ================================================ */
    
.field-row.grid20 {
  display: grid;
  grid-template-columns: repeat(20, minmax(0, 1fr));
  column-gap: 0.5rem;
  align-items: start;
  width: 100%;
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
}

/* Prevent child overflow inside grid */
.field-row.grid20 > * {
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
}

/* Reuse size-?of20 classes as grid spans */
.field-row.grid20 > .size-1of20 {
  grid-column: span 1;
}

.field-row.grid20 > .size-2of20 {
  grid-column: span 2;
}

.field-row.grid20 > .size-3of20 {
  grid-column: span 3;
}

.field-row.grid20 > .size-4of20 {
  grid-column: span 4;
}

.field-row.grid20 > .size-5of20 {
  grid-column: span 5;
}

.field-row.grid20 > .size-6of20 {
  grid-column: span 6;
}

.field-row.grid20 > .size-7of20 {
  grid-column: span 7;
}

.field-row.grid20 > .size-8of20 {
  grid-column: span 8;
}

.field-row.grid20 > .size-9of20 {
  grid-column: span 9;
}

.field-row.grid20 > .size-10of20 {
  grid-column: span 10;
}

.field-row.grid20 > .size-11of20 {
  grid-column: span 11;
}

.field-row.grid20 > .size-12of20 {
  grid-column: span 12;
}

.field-row.grid20 > .size-13of20 {
  grid-column: span 13;
}

.field-row.grid20 > .size-14of20 {
  grid-column: span 14;
}

.field-row.grid20 > .size-15of20 {
  grid-column: span 15;
}

.field-row.grid20 > .size-16of20 {
  grid-column: span 16;
}

.field-row.grid20 > .size-17of20 {
  grid-column: span 17;
}

.field-row.grid20 > .size-18of20 {
  grid-column: span 18;
}

.field-row.grid20 > .size-19of20 {
  grid-column: span 19;
}

.field-row.grid20 > .size-20of20 {
  grid-column: span 20;
}
 
/* Inlined: ./enums/enum-font-weight.css */
/* css/base/enums/enum-font-weight.css FontWeight Enumeration */

/* FontWeight Black */
.fw-black {
  font-weight: 900;
}

/* FontWeight Bold */
.fw-bold {
  font-weight: 700;
}

/* FontWeight ExtraBold */
.fw-extrabold {
  font-weight: 800;
}

/* FontWeight ExtraLight */
.fw-extralight {
  font-weight: 200;
}

/* FontWeight Light */
.fw-light {
  font-weight: 300;
}

/* FontWeight Normal */
.fw-normal {
  font-weight: 400;
}

/* FontWeight Medium */
.fw-medium {
  font-weight: 500;
}

/* FontWeight SemiBold */
.fw-semibold {
  font-weight: 600;
}

/* FontWeight Thin */
.fw-thin {
  font-weight: 100;
}


/* Sentinel marker for enum-font-weight.css */
.enum-font-weight-sentinel { color: limegreen !important; }

 
/* Inlined: ./enums/enum-label-placement.css */
/* css/base/enums/enum-label-placement.css */


.lp-top {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}

.lp-bottom {
  display: flex;
  flex-direction: column-reverse;
  gap: 0.25rem;
}

.lp-left {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 0.5rem;
}

.lp-right {
  display: flex;
  flex-direction: row-reverse;
  align-items: center;
  gap: 0.5rem;
}


/* Sentinel marker for enum-label-placement.css */
.enum-label-placement-sentinel { color: limegreen !important; }

 
/* Inlined: ./enums/enum-shadow.css */

/* S2 Shadow Enumeration css/base/enums/enum-shadow.css */
.sh-none {
  box-shadow: none !important;
}

/* Shadow None/Default */
.sh-box-brand {
  box-shadow: 0 0 12px 2px hsl(var(--brand-h) var(--brand-s) var(--brand-l) / 30%);
}

/* Shadow BrandBox */
.sh-box-brand-light {
  box-shadow: 0 0 12px 2px hsl(var(--brand-h) 45% 55% / 30%);
}

/* Shadow BrandLightBox */
.sh-box-brand-lighter {
  box-shadow: 0 0 12px 2px hsl(var(--brand-h) 30% 90% / 30%);
}

/* Shadow BrandLighterBox */
.sh-box-brand-dark {
  box-shadow: 0 0 12px 2px hsl(var(--brand-h) 70% 25% / 30%);
}

/* Shadow BrandDarkBox */
.sh-box-brand-darker {
  box-shadow: 0 0 12px 2px hsl(var(--brand-h) 75% 15% / 30%);
}

/* Shadow BrandDarkerBox */
.sh-box-dark {
  box-shadow: 0 0 12px 2px hsl(0deg 0% 0% / 35%);
}

/* Shadow DarkBox */
.sh-box-error {
  box-shadow: 0 0 12px 2px hsl(0deg 85% 45% / 30%);
}

/* Shadow ErrorBox */
.sh-box-info {
  box-shadow: 0 0 12px 2px hsl(210deg 90% 45% / 30%);
}

/* Shadow InfoBox */
.sh-box-light {
  box-shadow: 0 0 12px 2px hsl(0deg 0% 100% / 30%);
}

/* Shadow LightBox */
.sh-box-question {
  box-shadow: 0 0 12px 2px hsl(210deg 90% 45% / 30%);
}

/* Shadow QuestionBox */
.sh-box-warn {
  box-shadow: 0 0 12px 2px hsl(38deg 95% 50% / 30%);
}

/* Shadow WarnBox */
.sh-br-brand {
  box-shadow: 4px 4px 14px 0 hsl(var(--brand-h) var(--brand-s) var(--brand-l) / 25%);
}

/* Shadow BrandBottomRight */
.sh-br-brand-light {
  box-shadow: 6px 6px 14px 0 hsl(var(--brand-h) 45% 55% / 45%);
}

/* Shadow BrandLightBottomRight */
.sh-br-brand-lighter {
  box-shadow: 6px 6px 14px 0 hsl(var(--brand-h) 30% 90% / 45%);
}

/* Shadow BrandLighterBottomRight */
.sh-br-brand-dark {
  box-shadow: 4px 4px 14px 0 hsl(var(--brand-h) 70% 25% / 25%);
}

/* Shadow BrandDarkBottomRight */
.sh-br-brand-darker {
  box-shadow: 4px 4px 14px 0 hsl(var(--brand-h) 75% 15% / 45%);
}

/* Shadow BrandDarkerBottomRight */
.sh-br-dark {
  box-shadow: 4px 4px 14px 0 hsl(0deg 0% 0% / 25%);
}

/* Shadow DarkBottomRight */
.sh-br-error {
  box-shadow: 6px 6px 14px 0 hsl(0deg 85% 45% / 45%);
}

/* Shadow ErrorBottomRight */
.sh-br-info {
  box-shadow: 6px 6px 14px 0 hsl(210deg 90% 45% / 45%);
}

/* Shadow InfoBottomRight */
.sh-br-light {
  box-shadow: 6px 6px 14px 0 hsl(0deg 0% 100% / 45%);
}

/* Shadow LightBottomRight */
.sh-br-question {
  box-shadow: 6px 6px 14px 0 hsl(210deg 90% 45% / 45%);
}

/* Shadow QuestionBottomRight */
.sh-br-warn {
  box-shadow: 6px 6px 14px 0 hsl(38deg 95% 50% / 45%);
}

/* Sentinel marker for enum-shadow.css */
.enum-shadow-sentinel { color: limegreen !important; }
 
/* Inlined: ./enums/enum-flex.css */
/* enum-flex.css */


/* ****************************************
 * Seed sizes for demo / prototypes
 **************************************** */



/****************************************
 * Display
 ****************************************/
.flex {
    display: flex;
}

.inline-flex {
    display: inline-flex;
}

.display-block {
    display: block;
}

.display-none {
    display: none;
}


/****************************************
 * Flex Direction
 ****************************************/
.flex-row {
    display: flex;
    flex-direction: row;
}

.flex-row-reverse {
    display: flex;
    flex-direction: row-reverse;
}

.flex-col {
    display: flex;
    flex-direction: column;
}

.flex-col-reverse {
    display: flex;
    flex-direction: column-reverse;
}


/****************************************
 * Flex Wrap
 ****************************************/
.flex-wrap {
    flex-wrap: wrap;
}

.flex-nowrap {
    flex-wrap: nowrap;
}

.flex-wrap-reverse {
    flex-wrap: wrap-reverse;
}


/****************************************
 * Justify Content (main axis)
 ****************************************/
.justify-start {
    justify-content: flex-start;
}

.justify-end {
    justify-content: flex-end;
}

.justify-center {
    justify-content: center;
}

.justify-between {
    justify-content: space-between;
}

.justify-around {
    justify-content: space-around;
}

.justify-evenly {
    justify-content: space-evenly;
}

label.justify {
    display: block;         /* ensure it's a block-level element */
    width: 100%;            /* stretch across its container */
    text-align: justify;    /* justify the text inside */
    padding-right: 0.5rem;  /* add breathing room on the right */
    box-sizing: border-box; /* padding counts inside width */
}

/****************************************
 * Align Items (cross axis)
 ****************************************/
.items-start {
    align-items: flex-start;
}

.items-end {
    align-items: flex-end;
}

.items-center {
    align-items: center;
}

.items-baseline {
    align-items: baseline;
}

.items-stretch {
    align-items: stretch;
}


/****************************************
 * Align Content (multi-line cross axis)
 ****************************************/
.content-start {
    align-content: flex-start;
}

.content-end {
    align-content: flex-end;
}

.content-center {
    align-content: center;
}

.content-between {
    align-content: space-between;
}

.content-around {
    align-content: space-around;
}

.content-evenly {
    align-content: space-evenly;
}


/****************************************
 * Align Self (individual item)
 ****************************************/
.self-auto {
    align-self: auto;
}

.self-start {
    align-self: flex-start;
}

.self-end {
    align-self: flex-end;
}

.self-center {
    align-self: center;
}

.self-stretch {
    align-self: stretch;
}

.self-baseline {
    align-self: baseline;
}


/****************************************
 * Flex Grow
 ****************************************/
.flex-grow-0 {
    flex-grow: 0;
}

.flex-grow {
    flex-grow: 1;
}

.flex-grow-2 {
    flex-grow: 2;
}

.flex-grow-3 {
    flex-grow: 3;
}

.flex-grow-4 {
    flex-grow: 4;
}

.flex-grow-5 {
    flex-grow: 5;
}


/****************************************
 * Flex Shrink
 ****************************************/
.flex-shrink-0 {
    flex-shrink: 0;
}

.flex-shrink {
    flex-shrink: 1;
}

.flex-shrink-2 {
    flex-shrink: 2;
}

.flex-shrink-3 {
    flex-shrink: 3;
}

.flex-shrink-4 {
    flex-shrink: 4;
}

.flex-shrink-5 {
    flex-shrink: 5;
}



/****************************************
 * Flex Basis Presets
 ****************************************/
.basis-auto {
    flex-basis: auto;
}

.basis-0 {
    flex-basis: 0;
}

.basis-full {
    flex-basis: 100%;
}

.basis-1of2 {
    flex-basis: 50%;
}

.basis-1of3 {
    flex-basis: 33.3333%;
}

.basis-2of3 {
    flex-basis: 66.6667%;
}

.basis-1of4 {
    flex-basis: 25%;
}

.basis-3of4 {
    flex-basis: 75%;
}

/* Sentinel marker for enum-flex.css */
.enum-flex-sentinel { color: limegreen !important; }

 
/* Inlined: ./enums/enum-line-height.css */
/* ============================
   Line Height One-off Utilities
   ============================ */

/* percentages as multipliers */
.lh-90 {
    line-height: 0.90;
}

.lh-95 {
    line-height: 0.95;
}

.lh-100 {
    line-height: 1.00;
}

.lh-105 {
    line-height: 1.05;
}

.lh-110 {
    line-height: 1.10;
}

.lh-120 {
    line-height: 1.20;
}

.lh-125 {
    line-height: 1.25;
}

.lh-150 {
    line-height: 1.50;
}


/* semantic aliases (optional, same as Tailwind style) */
.leading-none {
    line-height: 1;
}

.leading-tight {
    line-height: 1.1rem;
}

.leading-snug {
    line-height: 1.20;
}

.leading-normal {
    line-height: 1.3;
}

.leading-relaxed {
    line-height: 1.4;
}

.leading-loose {
    line-height: 1.7;
}

/* Sentinel marker for enum-line-height.css */
.enum-line-height-sentinel { color: limegreen !important; }

 
/* Inlined: ./notification.css */

/* ======= css/base/notification.css  ==== */
.slideout-panel {
  position: absolute;
  top: 25%;
  right: 0;
  width: 90%;
  max-width: 600px;
  z-index: 70;
  transform: translateX(calc(100% + 16px)); 
  border-top-left-radius: 0.75rem;
  border-bottom-left-radius: 0.75rem;
  background: var(--light);
  box-shadow: -4px 0 12px hsl(var(--gray-dark-h) var(--gray-dark-s) var(--gray-dark-l) / 25%);
  transition: none; 
}

.slideout-panel.ready {
  transition: transform 0.6s ease-in-out;
}

.slideout-panel.is-visible {
  transform: translateX(0);
}

.slideout-overlay {
  position: fixed;
  inset: 0;
  background-color: hsl(var(--gray-dark-h) var(--gray-dark-s) var(--gray-dark-l) / 30%);
  z-index: 60;
  opacity: 0;
  pointer-events: none;
  transition: none;
}

.slideout-overlay.ready {
  transition: opacity 0.4s ease-in-out;
}

.slideout-inner {
  display: flex;
  flex-direction: row;
  align-items: stretch;
}

.slideout-overlay.is-visible {
  opacity: 1;
  pointer-events: auto;
}
 
.slideout-bar {
  width: 1.5rem; /* wider for visibility */
  flex-shrink: 0;
  align-self: stretch;
  border-top-left-radius: 0.75rem;
  border-bottom-left-radius: 0.75rem;
  background-color: var(--gray-light); /* neutral fallback */
  transition: background-color 0.3s ease;
}

.slideout-content {
  flex: 1;
  display: flex;
  flex-direction: row;
  align-items: stretch;
  padding: 0.75rem;
  gap: 0.75rem;
}

.slideout-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
  font-size: 2rem;
  color: currentcolor !important;
}

.slideout-left {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  flex-shrink: 0;
}

.slideout-right {
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}

.slideout-title {
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--dark);
  margin-bottom: 0.25rem;
}

.slideout-message {
  flex: 1;
  font-size: 0.95rem;
  line-height: 1.4;
  margin: 0;
  color: var(--dark);
}

.slideout-footer {
  font-size: 0.75rem;
  font-weight: bold !important;
  color: var(--dark);
  text-align: right;
  cursor: pointer;
  margin-top: .25rem;
}

.slideout-footer:hover {
  text-decoration: underline;
}

.slideout-panel.no-animate,
.slideout-overlay.no-animate {
  transition: none !important;
}

/* =========================================
   Dialog Card
   ========================================= */
    
/* Overlay (backdrop) */ 
.dialog-overlay {
  position: fixed;
  inset: 0;
  z-index: 50;
  display: none;
  background-color: hsl(var(--gray-dark-h) var(--gray-dark-s) var(--gray-dark-l) / 40%);
}

/* ✅ Show overlay when toggled */
.dialog-overlay.is-visible {
  display: block;
}

.dialog-card {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background: var(--light);
  border: 1px solid var(--dark);
  border-radius: 0.5rem;
  box-shadow: 0 4px 12px rgb(0 0 0 / 25%);
  width: 84%;
  max-width: 420px;
  z-index: 60;
  display: none;           /* 🔒 hidden by default */
  flex-direction: column;
}

.dialog-card.is-visible {
  display: flex;           /* 🔓 only show when toggled */
}

/* Header bar */
.dialog-header {
  display: flex;
  flex-direction: column;
  align-items: center;
  background-color: var(--brand);
  color: var(--light);
  padding: 0.375rem 0.75rem;
  border-top-left-radius: 0.5rem;
  border-top-right-radius: 0.5rem;
}

.dialog-body{
  display:flex;
  flex-direction: row;
  padding: .75rem;
}

.dialog-icon {
  margin-right: 0.5rem;
  font-size: 2rem;
}

.dialog-title {
  padding: 0;
  margin: 0;
  font-size: 1.25rem;
  line-height: 1.25rem;
  font-weight: bold;
}


.dialog-message {
  font-size: 0.95rem;
  line-height: 1.4;
  margin: 0;
}

/* Footer */
.dialog-actions {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 0.5rem;
  padding: 0.75rem;
  width: auto;     /* shrink/grow exactly to fit contents */
  height: auto;    /* expand naturally based on content */
  flex-wrap: nowrap; /* prevent wrapping */
  align-self: center; /* centers horizontally, overrides stretch */
}

.dialog-extra {
  text-align: center;
  margin-top: 0;
}

.dialog-extra img {
  max-height: 5rem;
  height: 5rem;
  border: 1px solid var(--dark);
  border-radius: 6px;
}


/* ==================Image Popup From dataTable ============== */

/* Fullscreen popup container */
.image-popup {
  position: fixed;
  inset: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  visibility: hidden;
  opacity: 0;
  transition: opacity 0.3s ease;
  z-index: 1000;
  padding: 2rem;
}

.active {
  visibility: visible;
  opacity: 1;
}

.image-overlay {
  position: fixed;
  inset: 0;
  background-color: hsl(var(--gray-dark-h) var(--gray-dark-s) var(--gray-dark-l) / 20%);
  display: none;
  z-index: 999;
}

.image-clone {
  position: fixed;
  transition: all 0.4s ease;
  border-radius: 8px;
  border: 1px solid var(--dark);
  background-color: #fff;        /* 🔥 fills behind the image */
  box-shadow: 4px 4px 12px hsl(var(--gray-dark-h) var(--gray-dark-s) var(--gray-dark-l) / 25%);
  z-index: 1001;
}

/* stylelint-disable selector-id-pattern */
#dataTable tr:active,
#dataTable td:active,
#dataTable img:active {
  transform: none !important;
  outline: none !important;
}

/* stylelint-enable selector-id-pattern */
 
/* Inlined: ./qrcode-scanner.css */
.qr-scanner-container {
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
  max-width: 15rem;
  aspect-ratio: 3 / 4;
  margin: 0 auto;
  border-radius: 12px;
  overflow: hidden;
  background-color: #000;
  box-shadow: 0 0 8px rgb(0 0 0 / 30%);
}

.qr-video,
#qr-canvas {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 12px;
}

.qr-reticle {
  position: absolute;
  inset: 0;
  border: 2px solid rgb(255 255 255 / 40%);
  border-radius: 8px;
  pointer-events: none;
  box-shadow: 0 0 10px rgb(255 255 255 / 30%);
  transition:
    border-color 0.4s ease,
    box-shadow 0.4s ease;
}


/* Overlay stays inside the box */
.camera-overlay {
  position: absolute;
  inset: 0;
  background-color: rgb(0 0 0 / 85%);
  display: flex;
  justify-content: center;
  align-items: center;
  color: #fff;
  font-size: 1.25rem;
  font-weight: 500;
  text-align: center;
  transition: opacity 0.3s ease;
  opacity: 1;
  z-index: 20;
  border-radius: inherit;
}

.camera-overlay.hidden {
  opacity: 0;
  pointer-events: none;
}

/* Fullscreen dark overlay for the dialog */
.camera-dialog {
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  background: rgb(0 0 0 / 60%);
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 9999; /* ⬆️ ensure above camera-overlay */
}

/* Hidden state toggle */
.camera-dialog.hidden {
  display: none;
}


/* Modal content box */
.camera-dialog-content {
  background: #fff;
  border-radius: 12px;
  width: 80vw;
  max-width: 25rem;
  padding: 1.25rem;
  box-shadow: 0 6px 16px rgb(0 0 0 / 25%);
  border: 2px solid var(--brand);
  display: flex;
  flex-direction: column;
}

.camera-select-icon {
  color: var(--brand-color) !important;
  font-size: 1.75rem !important;
  margin-right: .125rem !important;
  cursor: pointer;
}

/* Header */
.camera-dialog-header {
  font-size: 1.3rem;
  font-weight: 600;
  color: var(--brand);
  text-align: center;
  margin-bottom: 1rem;
}

/* Options container */
.camera-options {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  margin-bottom: 1rem;
}

/* Option button */
.camera-options button {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.6rem 0.75rem;
  font-size: 1rem;
  background: transparent;
  color: #222;
  border: none;
  border-radius: 8px;
  cursor: pointer;
  text-align: left;
  transition:
    background 0.2s,
    color 0.2s;
}

/* Circle indicator */
.camera-options button::before {
  content: "";
  display: inline-block;
  width: 1rem;
  height: 1rem;
  border-radius: 50%;
  border: 2px solid var(--brand, #0078d4);
  background-color: #fff; /* make visible against white background */
  flex-shrink: 0;
  box-shadow: 0 0 0 2px #fff; /* ensures contrast against light backgrounds */
  transition:
    background-color 0.2s,
    border-color 0.2s;
}

/* Selected state */
.camera-options button.selected {
  background: rgb(var(--brand-rgb) / 10%);
  color: var(--brand) !important;
}

.camera-options button.selected::before {
  background-color: var(--brand);
  border-color: var(--brand);
  box-shadow: 0 0 0 2px #fff;
}

/* Footer button bar */
.camera-button-bar {
  display: flex;
  justify-content: center;
  margin-top: 0.5rem;
}

.camera-row {
  display: flex;
  flex-flow: row nowrap; /* shorthand: direction + wrap */
  align-items: center;
  justify-content: flex-start;
  gap: 0.75rem;
  color: var(--brand); /* ensure both icon and text inherit this color */
}

.camera-icon-col {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--brand); /* ensures consistency if icon overrides color */
}

.camera-text-col {
  flex: 1 1 auto;
  text-align: center;
  line-height: 1.3;
  color: var(--brand); /* inherit or reassert brand color */
}

/* Inlined: ./charities.css */
.mission-wrapper {
  display: flex;
  flex-direction: column;
  align-items:center;
  width: 100%;
  max-width: 40rem;            /* optional cap for readability */
  margin: 2rem auto;              /* centers wrapper in page */
  margin-bottom: .25rem;
  gap: .25rem;
  padding-top: .5rem;
  padding-bottom: 0;
}

.mission-text {
  flex: 0 0 90%;               /* takes remaining 70% */
  max-width: 90%;
  font-size: 0.7rem;
  line-height: 1.1;
  color: var(--dark);
  margin: 0;
  text-align: center;
  padding-bottom: .25rem;
}

/* Inlined: ./scanoptions.css */
/* css/base/controls.css */

.scan-option-div {
  border-radius: 1rem;                  /* more rounded */
  border: 1px solid var(--brand);
  cursor: pointer;                      /* look clickable */
  transition: background 0.25s ease,
              box-shadow 0.25s ease,
              transform 0.15s ease;
}

/* hover effect */
.scan-option-div:hover {
  background: var(--brand-lighter);     /* gentle tint on hover */
  box-shadow: 0 2px 8px hsl(var(--brand-h) var(--brand-s) var(--brand-l) / 35%);
  transform: translateY(2px);          /* slight lift */
}

/* scanner contact options */
.scan-option {
  width: 48px;
  height: 48px;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  border-radius: 10px;
  flex: 0 0 48px;
}


/* Enforce proper image scaling inside the scan-option container */
.scan-option-image {
  width: 100%;
  height: 100%;
  object-fit: cover;   /* fill the box, crop if needed */
  border-radius: 8px;  /* match container rounding */
  display: block;      /* remove inline gaps */
}

/* Align items nicely in two-column scan row */
.field-row.align-center {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: var(--space-3);
}

/* Label beside scan image — behaves like normal form-label */
.scan-label {
  display: block;
  text-align: left;
  font-weight: 500;
  font-size: 1.05rem;
  line-height: 1.25rem;
  color: var(--dark);
  pointer-events: none; /* optional, same as your global form-label */
}



/* Inlined: ./chat.css */
/* base/chat.css */


/* ================================ CHAT CLASSES ======================== */

/* Page layout for chat */
.page-chat {
	display: flex;
	flex-direction: column;
	height: 100%;
	min-height: 0; 
}

/* Middle area between header and button bars */
.content-chat {
	flex: 1 1 auto;
	min-height: 0;
	background: var(--light);        
	padding: .25rem;
	overflow: hidden;     
	display: flex;
	flex-direction: column;
}

/* Make fields fill the content-chat area and be scrollable */
.content-chat .fields {
	flex: 1 1 auto;
	min-height: 0;
	overflow-y: auto;       /* scroll inside fields */
	display: flex;
	flex-direction: column;
}

/* ================ chat bubbles ============== */


/* ======================= Chat Message Container ========== */
#chat-messages {
	display: flex;
	flex-direction: column;
	align-items: flex-start;   /* left bubbles hug content width */
	gap: .25rem !important;
	padding-left: 0.25rem;
	padding-right: .25rem;
	background-color: var(--light) !important;
}


/* ====================== Base Bubble Style ========================================== */
.chat-bubble {
	padding: 0.5rem 0.75rem !important;
	font-size: 0.85rem;
	line-height: 1.1;
	box-sizing: border-box;
}

/* ======================= System Messages ========================================== */
.chat-system {
	width: 100%;
	text-align: center;
	color: #666;
  background: rgb(0 0 0 / 5%);
	border-radius: 0.75rem;
}

/* ============================ Left (Receiver) Bubble ============================= */


.chat-left {
	background: linear-gradient(
		135deg,
		var(--chat-receiver-bg-1),
		var(--chat-receiver-bg-2)
	);
	color: #000;
	border-radius: 1rem 1rem 1rem 0; /* square bottom-left OK as-is */
}

.chat-right {
	margin-left: auto;
	background: linear-gradient(
		135deg,
		var(--chat-sender-bg-1),
		var(--chat-sender-bg-2)
	);
	color: #fff;
	border-radius: 1rem 1rem 0;   /* shortened per lint rule */
}

/* Shared bubble constraints */
.chat-left,
.chat-right {
	display: inline-block;        /* shrink to content */
	max-width: 75%;               /* never grow beyond 75% of container */
	box-sizing: border-box;
	overflow-wrap: anywhere;
}

/* =========================== Input Box =================================== */
.chat-input {
	resize: none;          /* user cannot drag-handle resize */
	overflow-y: auto;      /* show scrollbar when taller than max-height */
	line-height: 1.1;
	min-height: 2.4rem;    /* ~1 line */
	max-height: 5.6rem;    /* ~4 lines (1.4 * 4 = 5.6) */
}

/* Chat input: single line initially, grows to ~4 lines */
.field-text.chat-input {
	height: auto !important;      /* JS controls height */
	min-height: 2rem;          /* one line */
	max-height: 6rem;             /* ~3–4 lines */
	resize: none;
	overflow-y: hidden;
	line-height: 1.1;
}

/* ======================= Apple (and fallback) Theme Variables ================================= */
.device-apple,
.device-other {
	--chat-sender-bg-1:   var(--device-apple-chat-sender-1);
	--chat-sender-bg-2:   var(--device-apple-chat-sender-2);
	--chat-receiver-bg-1: var(--device-apple-chat-receiver-1);
	--chat-receiver-bg-2: var(--device-apple-chat-receiver-2);
}

/* ===========================
	Android Theme Variables
	============================================ */
.device-android {
	--chat-sender-bg-1:   var(--device-android-chat-sender-1);
	--chat-sender-bg-2:   var(--device-android-chat-sender-2);
	--chat-receiver-bg-1: var(--device-android-chat-receiver-1);
	--chat-receiver-bg-2: var(--device-android-chat-receiver-2);
}



/* === Chat input overrides === */

/* Chat input bar container */
.chat-bar {
	display: flex;
	flex: none;
	width: 100%;
	min-width: 0;
	min-height: 0;
	overflow: visible;           /* let the textarea grow */
	margin-top: auto;
	justify-content: center;
	align-items: center;
	gap: 0.5rem;
	background: var(--light);
	padding-top: calc(var(--space-1) * 1.5);
	padding-bottom: calc(var(--space-1) * 1.5);
}

/* Row holding textarea + button */
.chat-bar .field-row {
	display: flex;
	align-items: flex-end;
	width: 100%;
	gap: 0.5rem;
}

/* Make the chat textarea actually grow with the JS height */
.chat-bar .field-text.chat-input {
	box-sizing: border-box;
	width: 100%;
	height: auto !important;      /* allow inline style to control it */
	min-height: 2.25rem;          /* 1 line */
	max-height: 6rem;             /* ~4 lines */
	resize: none;                 /* user can’t drag handle */
	overflow-y: auto;             /* scroll once > 4 lines */
	line-height: 1.3;
}


.message-link {
	font-size: 1rem;
	color: var(--brand);
	text-decoration: underline;
	cursor: pointer;
	font-weight: 600;
}

.message-link:hover {
	color: var(--brand);
	text-decoration: underline;
font-weight: 800;
}


.form-label-block {
	display: block;
}


.relative {
	position: relative;
}


/* Sentinel marker for base.css */
.base-sentinel { color: limegreen !important; }




/* sentinel for globals.css */

/* Sentinel marker for styles.css */
.styles-sentinel { color: limegreen !important; }
