/* ─── RESET & BASE ELEMENTS (Global) ─── */
:where(*, *::before, *::after) {
     box-sizing: border-box;
}

html,
body {
     height: 100%;
}

html {
     scroll-behavior: smooth;
}

body {
     margin: 0;
     min-height: 100vh;
     line-height: 1.5;
     background: var(--bg);
     color: var(--text);
     font-family: var(--font-family);
     font-size: var(--font-size);
     padding-top: var(--topbar-h);
     padding-bottom: calc(var(--footer-space, var(--footer-bar-h)) + env(safe-area-inset-bottom));
}

img,
svg,
video {
     max-width: 100%;
     display: block;
     height: auto;
}

/* Accessible focus */
:focus-visible {
     outline: 2px solid color-mix(in srgb, var(--accent) 70%, white 0%);
     outline-offset: 2px;
     box-shadow: var(--ring);
}

/* Placeholders (fallback + color-mix) */
::placeholder {
     color: #9aa0a6;
}

::placeholder {
     color: color-mix(in srgb, var(--muted) 70%, transparent);
}

/* ─── END RESET & BASE ELEMENTS (Global) ─── */

/* ─── TYPOGRAPHY (Global) ─── */
h1,
h2,
h3,
h4,
h5,
h6 {
     font-weight: 200;
     line-height: 1.2;
     color: var(--text-1);
     margin: 0 0 .4em;
}

p {
     margin: .6em 0;
}

a {
     color: var(--accent);
     text-decoration: none;
     transition: color .2s ease, border-bottom-color .2s ease;
}

a:hover,
a:focus {
     color: color-mix(in srgb, var(--accent) 80%, var(--black) 10%);
}

/* ─── END TYPOGRAPHY (Global) ─── */

/* ─── UTILITIES (Global) ─── */
.hidden {
     display: none !important
}

.invisible {
     visibility: hidden !important
}

.inline {
     display: inline
}

.flex {
     display: flex
}

.row {
     display: flex;
     flex-wrap: wrap;
     align-items: center;
     gap: .625rem;
}

/* unified */
.flex-wrap {
     flex-wrap: wrap
}

.items-center {
     align-items: center
}

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

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

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

.gap-1 {
     gap: var(--sp-1)
}

.gap-2 {
     gap: var(--sp-2)
}

.gap-3 {
     gap: var(--sp-3)
}

.gap-4 {
     gap: var(--sp-4)
}

.gap-5 {
     gap: var(--sp-5)
}

.gap-6 {
     gap: var(--sp-6)
}

.mt-0 {
     margin-top: 0
}

.mt-1 {
     margin-top: var(--sp-1)
}

.mt-2 {
     margin-top: var(--sp-2)
}

.mt-3 {
     margin-top: var(--sp-3)
}

.mt-4 {
     margin-top: var(--sp-4)
}

.mt-5 {
     margin-top: var(--sp-5)
}

.mt-6 {
     margin-top: var(--sp-6)
}

.mb-0 {
     margin-bottom: 0
}

.mb-10 {
     margin-bottom: 10px
}

.ml-8 {
     margin-left: 8px
}

.ml-10 {
     margin-left: 10px
}

.ml-auto {
     margin-left: auto
}

.p-0 {
     padding: 0
}

.text-center {
     text-align: center
}

.w-100 {
     width: 100%
}

.h-100 {
     height: 100%
}

.h-400 {
     height: 400px
}

.fs-14 {
     font-size: 14px
}

.minw-33 {
     min-width: 33%
}

.minw-50 {
     min-width: 240px
}

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

.list-unstyled {
     list-style: none
}

.text-red {
     color: var(--primary)
}

.m-0 {
     margin: 0
}

.h-7rem {
     height: 7rem
}

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

.todo {
     color: blue
}

.status.ok {
     background: #ecfdf5;
     color: #065f46;
     border: 1px solid #a7f3d0;
     padding: .6rem .8rem;
     border-radius: 10px;
     margin-bottom: 1rem;
}

.status.warn {
     background: #fff3cd;
     color: #856404;
     border: 1px solid #fecaca;
     padding: .6rem .8rem;
     border-radius: 10px;
     margin-bottom: 1rem;
}

.status.err {
     background: #fef2f2;
     color: #991b1b;
     border: 1px solid #fecaca;
     padding: .6rem .8rem;
     border-radius: 10px;
     margin-bottom: 1rem;
}

.row-spread {
     display: flex;
     justify-content: space-evenly;
}

.mt-neg {
     margin-top: -.25rem;
}

/* ─── END UTILITIES (Global) ─── */

/* ─── ANIMATIONS (Global) ─── */
@keyframes fadeIn {
     0% {
          opacity: 0;
          transform: translateY(10px);
     }

     100% {
          opacity: 1;
          transform: translateY(0);
     }
}

/* ─── END ANIMATIONS (Global) ─── */

/* ─── MOTION REDUCTION (Global) ─── */
@media (prefers-reduced-motion: reduce) {
     * {
          animation-duration: .001ms !important;
          animation-iteration-count: 1 !important;
          transition-duration: .001ms !important;
          scroll-behavior: auto !important;
     }
}

/* ─── END MOTION REDUCTION (Global) ─── */

/* ─── GRADIENT TEXT (Global) ─── */
.gradient-text {
     background: linear-gradient(90deg, var(--gradient-start), var(--gradient-end));
     background-clip: text;
     -webkit-background-clip: text;
     -webkit-text-fill-color: transparent;
     font-family: Arial, sans-serif;
}

/* ─── END GRADIENT TEXT (Global) ─── */

/* ─── TABLE ─── (Specific) */
.gradient-table {
     width: 100%;
     border-collapse: collapse;
     font-family: Arial, sans-serif;
     margin-top: 1.25rem;
     display: table;
     /* mobile turns to block in media query */
}

.gradient-table th,
.gradient-table td {
     padding: 12px 15px;
     border: 1px solid #ddd;
     text-align: left;
}

.gradient-table thead {
     background: linear-gradient(90deg, var(--gradient-start), var(--gradient-end));
     color: white;
}

.gradient-table tbody tr:nth-child(even) {
     background-color: var(--surface-1);
}

.gradient-table tbody tr:hover {
     background-color: var(--surface-2);
}

/* ─── END TABLE (Specific) ─── */

/* ─── BUTTONS (Global) ─── */

.textButton {
     padding: 0;
     /* remove default padding */
     margin: 0;
     border: none;
     background: none;

     font: inherit;
     /* inherit font size & family */
     line-height: 1;
     /* avoid extra vertical space */

     display: inline-block;
     /* size to content */
     width: fit-content;
     height: fit-content;
}

.btn {
     --btn-bg: var(--btn-bg-main, color-mix(in srgb, var(--text) 92%, white 8%));
     --btn-ink: var(--btn-ink, #fff);
     --btn-bd: var(--border);
     --btn-radius: var(--radius, 12px);

     display: inline-flex;
     align-items: center;
     gap: .5rem;
     padding: .6rem .95rem;
     border-radius: var(--btn-radius);
     border: 1px solid var(--btn-bd);
     color: var(--btn-ink);
     background: var(--btn-bg);
     cursor: pointer;
     line-height: 1;
     transition: transform .06s ease, background .15s ease, border-color .15s ease;
     width: fit-content;
     height: fit-content;
}

.btn:hover {
     background: color-mix(in srgb, var(--x-btn-bg) 85%, white 15%);
}

.btn:active {
     transform: translateY(1px);
     transform: scale(.98);
}

.btn svg {
     width: 1em;
     height: 1em;
     stroke: currentColor;
}

.btn.primary {
     --btn-bg: var(--btn-bg-primary, hsl(var(--accent-h) var(--accent-s) var(--accent-l)));
}

.btn.primary:hover {
     background: color-mix(in srgb, var(--btn-bg) 85%, white 15%);
}

.btn.secondary {
     --btn-bg: var(--btn-bg-secondary, #d54444ff);
     color: var(--text-inverse, #fff);
}

.btn.secondary:hover {
     background: color-mix(in srgb, var(--btn-bg) 85%, white 15%);
}

.btn.small {
     padding: .05rem .25rem;
     font-size: .9rem;
}

.btn.large {
     padding: .8rem 1.15rem;
     font-size: 1.05rem;
}

.btn.ghost {
     --x-btn-bg: transparent;
     --x-btn-ink: var(--text);
}

.btn.outline {
     --x-btn-bg: transparent;
     --x-btn-ink: var(--text);
     --x-btn-bd: var(--accent);
}

.btn.accent {
     --x-btn-bg: var(--accent);
     --x-btn-ink: #fff;
     --x-btn-bd: color-mix(in srgb, var(--accent) 70%, black 30%);
}

.btn.success {
     --x-btn-bg: hsl(152 45% 35%);
     --x-btn-ink: #fff;
}

.btn.warn {
     --x-btn-bg: hsl(38 90% 48%);
     --x-btn-ink: #111;
}

.btn.danger {
     --x-btn-bg: hsl(355 78% 44%);
     --x-btn-ink: #fff;
}


/* Icon-only circle */
.x-btn--icon {
     width: 2.25rem;
     height: 2.25rem;
     padding: 0;
     display: inline-grid;
     place-items: center;
     border-radius: 50%;
}

/* ─── END BUTTONS (Global) ─── */

/* ─── FORMS & FIELDS (Global) ─── */
.form-container {
     display: flex;
     flex-direction: column;
     padding: 2rem 1rem;
     margin: 1rem auto;
     width: 100%;
     border-radius: 1rem;
     background-image: linear-gradient(var(--surface-0), var(--surface-0)), linear-gradient(120deg, transparent 25%, hsl(var(--accent-h) var(--accent-s) var(--accent-l)), hsl(var(--accent-h) var(--accent-s) var(--accent-l)));
     background-origin: padding-box, border-box;
     background-clip: padding-box, border-box;
     box-shadow: var(--shadow-s);
     animation: fadeIn .5s ease-in-out;
}

.form-small {
     width: 60%;
}

.form {
     display: grid;
     gap: var(--sp-4);
}

.form-title {
     font-size: 1.25rem;
     font-weight: 700;
     margin-bottom: .5rem;
     text-align: center;
}

.form form {
     display: flex;
     flex-direction: column;
     align-items: center;
     gap: 1.125rem;
}

.form .inputBox {
     position: relative;
     width: 100%;
     max-width: 80%;
     margin: 10px auto;
}

/* Inputs */
input.form,
select.form,
textarea.form {
     width: 100%;
     padding: 10px 12px;
     border-radius: var(--radius-sm);
     border: 1px solid var(--border);
     background: var(--input);
     color: var(--text);
     outline: none;
     transition: border-color .2s, box-shadow .2s, background .2s;
}

input.form:focus,
select.form:focus,
textarea.form:focus {
     border-color: var(--accent);
     box-shadow: var(--ring);
}

input.form[readonly],
textarea.form[readonly] {
     background: color-mix(in srgb, var(--input) 90%, transparent);
}

input.form:disabled,
select.form:disabled,
textarea.form:disabled {
     opacity: .7;
     cursor: not-allowed;
}

textarea.form {
     min-height: 100px;
     resize: vertical;
}

.input-inline {
     display: flex;
     gap: 8px;
     align-items: center;
}

.is-invalid {
     border-color: #d33 !important;
     box-shadow: 0 0 0 3px rgba(211, 51, 51, .18) !important;
}

.help {
     font-size: .8rem;
     color: var(--muted);
}

/* Checkboxes */
.checkbox {
     position: relative;
     padding-left: 30px;
     cursor: pointer;
     user-select: none;
     font-size: .875rem;
     display: inline-flex;
     align-items: center;
}

.checkbox input {
     position: absolute;
     opacity: 0;
     cursor: pointer;
}

.checkbox .checkmark {
     position: absolute;
     top: 0;
     left: 0;
     width: 18px;
     height: 18px;
     background: #ddd;
     border: 1px solid #ccc;
     border-radius: .25rem;
     transition: background var(--timing);
}

.checkbox:hover input~.checkmark {
     background: #ccc;
}

.checkbox input:checked~.checkmark {
     background: var(--checkbox-checked-color);
     border-color: var(--checkbox-border-color);
}

.checkbox .checkmark::after {
     content: "";
     position: absolute;
     display: none;
     left: 6px;
     top: 2px;
     width: 3px;
     height: 8px;
     border: solid #fff;
     border-width: 0 2px 2px 0;
     transform: rotate(45deg);
}

.checkbox input:checked~.checkmark::after {
     display: block;
}

/* NOTE: Removed invalid ".form select .dropdown ..." descendants */

/* Accessible custom select recommendation (optional)
     See ".select" in your components if you replace <select> with <details>. */
/* ─── END FORMS & FIELDS (Global) ─── */

/* ─── FLOATING LABEL INPUTS (Specific) ─── */
.inputBox {
     position: relative;
     display: grid;
     margin-bottom: var(--sp-3);
}

/* Core input styles */
.inputBox input,
.inputBox textarea {
     width: 100%;
     padding: 12px 10px;
     border: 1px solid var(--border);
     border-radius: 10px;
     background: var(--input);
     color: var(--text);
     font: inherit;
     line-height: 1.4;
     transition: border-color 0.2s ease, background 0.2s ease;
}

select {
     width: 100%;
     padding: 12px 10px;
     margin-bottom: 3px;
     border: 1px solid var(--border);
     border-radius: 10px;
     background: var(--input);
     color: var(--text);
     font: inherit;
     line-height: 1.4;
     transition: border-color 0.2s ease, background 0.2s ease;
}

.inputBox .selectLabel {
     position: absolute;
     left: 12px;
     top: 12px;
     font-size: 0.9rem;
     color: var(--muted);
     pointer-events: none;
     background: var(--input);
     /* prevents overlap when moved */
     padding: 0 4px;
     transform-origin: left top;
     transition:
          transform 0.18s ease,
          font-size 0.18s ease,
          color 0.18s ease,
          opacity 0.18s ease;
}


/* Radio button styles */
.inputBox input[type="radio"] {
     width: 2rem;
     height: 2rem;
     border-radius: 50%;
     border: 1px solid var(--border);
     background: var(--input);
     color: var(--text);
     font: inherit;
     line-height: 1.4;
     transition: border-color 0.2s ease, background 0.2s ease;
}

/* Radio button label styles */
.inputBox label {
     cursor: pointer;
}

/* Radio button focus styles */
.inputBox input[type="radio"]:focus {
     outline: none;
     border-color: var(--accent);
     box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 40%, transparent);
}



/* Focus ring and state feedback */
.inputBox input:focus,
.inputBox textarea:focus {
     outline: none;
     border-color: var(--accent);
     box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 40%, transparent);
}

/* Floating label behavior */
.inputBox label {
     position: absolute;
     left: 12px;
     top: 12px;
     font-size: 0.9rem;
     color: var(--muted);
     pointer-events: none;
     background: var(--input);
     /* prevents overlap when moved */
     padding: 0 4px;
     transform-origin: left top;
     transition:
          transform 0.18s ease,
          font-size 0.18s ease,
          color 0.18s ease,
          opacity 0.18s ease;
}

/* When focused or filled */
.inputBox input:focus+label,
.inputBox textarea:focus+label,
.inputBox input:not(:placeholder-shown)+label,
.inputBox textarea:not(:placeholder-shown)+label {
     transform: translateY(-1.3rem) scale(0.9);
     font-size: 0.8rem;
     color: var(--accent);
     opacity: 0.95;
}

/* Ensure placeholder trick works in all browsers */
.inputBox input::placeholder,
.inputBox textarea::placeholder {
     opacity: 0;
     /* hide but keep behavior */
}

/* Disabled or readonly */
.inputBox input:disabled,
.inputBox textarea:disabled {
     opacity: 0.6;
     cursor: not-allowed;
}

.inputBox--textarea {
     position: relative;
     display: grid;
     margin-bottom: var(--sp-3);
}

/* Base textarea */
.inputBox--textarea textarea {
     width: 100%;
     min-height: 7.5rem;
     /* sensible default for 3–5 lines */
     max-height: 60vh;
     /* prevent runaway growth */
     padding: 12px 10px;
     /* keep same feel as inputs */
     border: 1px solid var(--border);
     border-radius: 10px;
     background: var(--input);
     color: var(--text);
     font: inherit;
     line-height: 1.5;
     resize: vertical;
     /* users can stretch vertically */
     overflow: auto;
     /* show scrollbar only when needed */
     transition: border-color 0.2s ease, background 0.2s ease;
}

/* Focus ring */
.inputBox--textarea textarea:focus {
     outline: none;
     border-color: var(--accent);
     box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 40%, transparent);
}

/* Floating label */
.inputBox--textarea label {
     position: absolute;
     left: 12px;
     top: 12px;
     /* anchored to initial padding */
     font-size: 0.9rem;
     color: var(--muted);
     pointer-events: none;
     background: var(--input);
     padding: 0 4px;
     transform-origin: left top;
     transition:
          transform 0.18s ease,
          font-size 0.18s ease,
          color 0.18s ease,
          opacity 0.18s ease,
          background 0.18s ease;
}

/* Float when focused or when content exists */
.inputBox--textarea textarea:focus+label,
.inputBox--textarea textarea:not(:placeholder-shown)+label {
     transform: translateY(-1.3rem) scale(0.9);
     font-size: 0.8rem;
     color: var(--accent);
     opacity: 0.95;
}

/* Hide placeholder text but keep :placeholder-shown working */
.inputBox--textarea textarea::placeholder {
     opacity: 0;
}

/* Disabled/readonly */
.inputBox--textarea textarea:disabled {
     opacity: 0.6;
     cursor: not-allowed;
}

/* Optional: compact variant (use when space is tight) */
.inputBox--textarea.is-compact textarea {
     min-height: 5.5rem;
}

/* ─── END FLOATING LABEL: TEXTAREA (Robust) ─── */

/* ─── FLOATING LABEL: SELECT (Fixed & Fully Working) ─── */
.selectBox {
     position: relative;
     display: grid;
     margin-bottom: var(--sp-3);
}

/* Base select */
.selectBox select {
     width: 100%;
     padding: 12px 36px 12px 10px;
     border: 1px solid var(--border);
     border-radius: 10px;
     background: var(--input);
     color: var(--text);
     font: inherit;
     line-height: 1.4;
     transition: border-color .2s ease, background .2s ease, color .2s ease;
     appearance: none;
     -webkit-appearance: none;
     -moz-appearance: none;

     /* Chevron icon, correctly URL-encoded */
     background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill='currentColor' d='M5.3 7.3a1 1 0 0 1 1.4 0L10 10.6l3.3-3.3a1 1 0 1 1 1.4 1.4l-4 4a1 1 0 0 1-1.4 0l-4-4a1 1 0 0 1 0-1.4z'/%3E%3C/svg%3E");
     background-repeat: no-repeat;
     background-position: right 10px center;
     background-size: 18px 18px;
}

/* Focus ring */
.selectBox select:focus {
     outline: none;
     border-color: var(--accent);
     box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 40%, transparent);
}

/* Floating label */
.selectBox label {
     position: absolute;
     left: 12px;
     top: 12px;
     font-size: .9rem;
     color: var(--muted);
     pointer-events: none;
     background: var(--input);
     padding: 0 4px;
     transform-origin: left top;
     transition:
          transform .18s ease,
          font-size .18s ease,
          color .18s ease,
          opacity .18s ease,
          background .18s ease;
}

/* Float label when focused or valid (placeholder trick) */
.selectBox select:focus+label,
.selectBox select:valid+label {
     transform: translateY(-1.3rem) scale(.9);
     font-size: .8rem;
     color: var(--accent);
     opacity: .95;
}

/* Disabled */
.selectBox select:disabled {
     opacity: .6;
     cursor: not-allowed;
}

/* Multiple select variant */
.selectBox select[multiple] {
     min-height: 7.5rem;
     padding-right: 10px;
     background-image: none;
     overflow: auto;
}

.selectBox select[multiple]+label {
     transform: translateY(-1.3rem) scale(.9);
     font-size: .8rem;
     opacity: .95;
}

/* ─── END FLOATING LABEL: SELECT (Fixed & Fully Working) ─── */

/* ─── TILES ─── */
.tiles {
     --cols: 3;
     display: grid;
     gap: 1rem;
     padding: 3rem 1rem;
     grid-template-columns: repeat(var(--cols), minmax(0, 1fr));
}

.tile {
     position: relative;
     border-radius: var(--radius);
     overflow: hidden;
     cursor: pointer;
}

.tile img {
     width: 100%;
     height: 100%;
     object-fit: cover;
     transition: transform 700ms cubic-bezier(.2, .65, .3, 1);
}

.tile:hover img {
     transform: scale(1.1);
}

.tile::after {
     content: "";
     position: absolute;
     inset: 0;
     background: linear-gradient(180deg, transparent 55%, hsl(0 0% 0%/.65));
     opacity: .9;
     transition: opacity var(--timing);
}

.tile:hover::after {
     opacity: .5;
}

.tile a {
     position: absolute;
     inset: 0;
     display: flex;
     flex-direction: column;
     justify-content: flex-end;
     padding: 1rem;
     color: #fff;
     text-decoration: none;
     z-index: 1;
     opacity: 0;
     transform: translateY(12%);
     transition: opacity var(--timing), transform var(--timing);
}

.tile:hover a {
     opacity: 1;
     transform: translateY(0);
}

@media (max-width:980px) {
     .tiles {
          --cols: 2;
     }
}

@media (max-width:640px) {
     .tiles {
          --cols: 1;
     }
}

/* END TILES */

/* ─── MENUS ───
     We preserve your existing .dropdown for menus by SCOPING under nav containers.
     This avoids conflict with any form selects.
     */
.nav .dropdown,
.account-menu .dropdown,
#menuNav .dropdown,
.menu-panel {
     /* shared panel styles */
     position: absolute;
     top: calc(100% + 8px);
     left: 0;
     background: var(--card);
     color: var(--text);
     border: 1px solid var(--border);
     border-radius: 12px;
     width: max-content;
     min-width: var(--dropdown-min-w);
     max-width: var(--dropdown-max-w);
     max-height: var(--dropdown-max-h);
     overflow: auto;
     box-shadow: var(--shadow-2);
     padding: 6px;
     display: none;
     z-index: 410;
     font-size: var(--menu-font);
     line-height: 1.3;
}

.nav .dropdown.is-open,
.account-menu .dropdown.is-open,
#menuNav .dropdown.is-open,
.menu-panel.is-open {
     display: block;
}

/* Shared menu items */
.menu-list a,
.menu-list button,
.nav .dropdown a,
.nav .dropdown button,
.menu-panel a,
.menu-panel button,
#menuNav a,
#menuNav button {
     display: block;
     width: 100%;
     text-align: left;
     padding: 10px 12px;
     border-radius: 10px;
     text-decoration: none;
     color: inherit;
     background: transparent;
     border: none;
     cursor: pointer;
     font: inherit;
}

.menu-list a:hover,
.menu-list a:focus,
.nav .dropdown a:hover,
.nav .dropdown a:focus,
.menu-panel a:hover,
.menu-panel a:focus,
#menuNav a:hover,
#menuNav a:focus,
.menu-list button:hover,
.menu-list button:focus,
.nav .dropdown button:hover,
.nav .dropdown button:focus,
.menu-panel button:hover,
.menu-panel button:focus,
#menuNav button:hover,
#menuNav button:focus {
     background: color-mix(in srgb, var(--accent) 10%, transparent);
     outline: none;
}

.menu-list .label,
.nav .dropdown .label,
.menu-panel .label {
     display: block;
     padding: 8px 12px;
     margin: 6px 0 2px;
     font-size: .9rem;
     color: var(--muted);
}

/* END MENUS */

/* ─── HAMBURGER ─── */
.hamburger {
     width: 30px;
     height: 22px;
     display: flex;
     flex-direction: column;
     justify-content: space-between;
     cursor: pointer;
     margin: 1.25rem 0;
     transition: transform .6s ease;
}

.hamburger div {
     width: 100%;
     height: 3px;
     background: var(--text-1);
     border-radius: 2px;
     transition: transform .4s ease, opacity .4s ease;
}

.hamburger.active div:nth-child(1) {
     transform: translateY(9px) rotate(45deg);
}

.hamburger.active div:nth-child(2) {
     opacity: 0;
}

.hamburger.active div:nth-child(3) {
     transform: translateY(-9px) rotate(-45deg);
}

.hamburger:hover {
     transform: scale(1.1);
}

/* END HAMBURGER */

/* ─── TOGGLE SWITCH ─── */
.toggle {
     position: relative;
     width: 50px;
     height: 24px;
     margin: 1.25rem 0;
}

.toggle input {
     opacity: 0;
     width: 0;
     height: 0;
}

.toggle label {
     position: absolute;
     inset: 0;
     background: #ccc;
     border-radius: 24px;
     cursor: pointer;
     transition: background var(--timing);
}

.toggle label::before {
     content: "";
     position: absolute;
     height: 18px;
     width: 18px;
     left: 3px;
     bottom: 3px;
     background: #fff;
     border-radius: 50%;
     transition: transform var(--timing);
}

.toggle input:checked+label {
     background: hsl(var(--brand-h) var(--brand-s) var(--brand-l));
}

.toggle input:checked+label::before {
     transform: translateX(26px);
}

/* END TOGGLE SWITCH */

/* ─── Account pill ─── */
.account-menu {
     position: relative;
     display: flex;
     align-items: center;
}

.account-trigger {
     display: flex;
     align-items: center;
     gap: 10px;
     background: var(--card);
     color: var(--text);
     border: 1px solid var(--border);
     border-radius: 999px;
     padding: 6px 12px;
     cursor: pointer;
     box-shadow: var(--shadow-1);
     transition: transform .15s var(--easing), box-shadow .2s var(--easing);
}

.account-trigger:hover {
     transform: translateY(-1px);
}

.account-trigger:focus {
     outline: 2px solid var(--accent);
     outline-offset: 2px;
}

.account-trigger:focus-visible {
     outline: 2px solid var(--accent);
     outline-offset: 2px;
}

.avatar {
     width: 28px;
     height: 28px;
     border-radius: 50%;
     object-fit: cover;
     background: var(--surface-0);
     flex: 0 0 28px;
}

.avatar-initials {
     width: 28px;
     height: 28px;
     border-radius: 50%;
     background: var(--surface-1);
     color: var(--text-inverse);
     display: flex;
     align-items: center;
     justify-content: center;
     font-weight: 700;
     font-size: 12px;
}

.first-name {
     font-weight: 600;
     white-space: nowrap;
}

.chevron {
     width: 8px;
     height: 8px;
     border-right: 2px solid currentColor;
     border-bottom: 2px solid currentColor;
     transform: rotate(45deg);
     margin-left: 2px;
}

.dropdown {
     position: absolute;
     top: calc(100% + 8px);
     left: 0;
     background: var(--card);
     color: var(--text);
     border: 1px solid var(--border);
     border-radius: 12px;
     width: max-content;
     min-width: var(--dropdown-min-w);
     max-width: var(--dropdown-max-w);
     max-height: var(--dropdown-max-h);
     overflow: auto;
     box-shadow: var(--shadow-2);
     padding: 6px;
     display: none;
     z-index: 3100;
}

.dropdown.is-open {
     display: block;
}

.dropdown a,
.dropdown button {
     display: block;
     width: 100%;
     text-align: left;
     padding: 10px 12px;
     border-radius: 10px;
     text-decoration: none;
     color: inherit;
     background: transparent;
     border: none;
     cursor: pointer;
     font: inherit;
}

.dropdown a:hover,
.dropdown a:focus,
.dropdown button:hover,
.dropdown button:focus {
     background: var(--bg-dropdown);
     outline: none;
}

.dropdown .label {
     display: block;
     padding: 8px 12px;
     margin: 6px 0 2px;
     font-size: .9rem;
     color: var(--muted);
}

@media (max-width:520px) {
     .first-name {
          display: none;
     }
}

/* ─── END ACCOUNT PILLS ─── */

/* ─── AGENDA ─── */
.agenda {
     width: 100%;
     max-width: 300px;
     padding: 1.25rem;
     margin: 1.25rem auto;
     background-image: linear-gradient(var(--surface-0), var(--surface-0)),
          linear-gradient(120deg, transparent 25%, hsl(var(--accent-h) var(--accent-s) var(--accent-l)), hsl(var(--brand-h) var(--brand-s) var(--brand-l)));
     background-origin: padding-box, border-box;
     background-clip: padding-box, border-box;
     border-radius: 1rem;
     box-shadow: var(--shadow-s);
     animation: fadeIn .5s ease-in-out;
}

.agenda h3 {
     font-size: 1rem;
     margin-bottom: .625rem;
     text-align: center;
}

.agenda ul {
     list-style: none;
     padding-left: 0;
     margin: 0;
}

.agenda li {
     display: flex;
     gap: .625rem;
     margin-bottom: .5rem;
     font-size: .875rem;
}

.agenda li span {
     font-weight: 600;
}

/* ─── END AGENDA ─── */

/* ─── CARDS GRID ─── */
/* https://getcssscan.com/css-box-shadow-examples 10 en 14 */
.cards {
     display: grid;
     gap: 1.5rem;
     grid-template-columns: repeat(auto-fit, minmax(min(22rem, 100%), 1fr));
     padding: 2rem 1rem;
     overflow: visible;
}


.card {
     position: relative;
     display: flex;
     flex-direction: column;
     background: var(--surface-1);
     border-radius: var(--radius);
     overflow: hidden;
     /* keep this to clip child images to the radius */
     box-shadow: rgba(17, 12, 46, 0.15) 0px 48px 100px 0px;
     transition: transform 220ms, box-shadow 220ms, background 220ms;
     outline: 1px solid transparent;
     /* Safari compositing nudge */

}

/* lift the individual card, not the container */
.card:is(:hover, :focus-within) {
     box-shadow: rgba(50, 50, 93, 0.25) 0px 50px 100px -20px, rgba(0, 0, 0, 0.3) 0px 30px 60px -30px, rgba(10, 37, 64, 0.35) 0px -2px 6px 0px inset;
}



/* ─── MEDIA AREA ───
     No inner radius math. Parent’s overflow + clip-path does the rounding.
     */
.card-media {
     position: relative;
     isolation: isolate;
     /* its own stacking context */
     overflow: hidden;
     /* clip zoomed pixels inside media area */
     aspect-ratio: 4 / 3;
     /* fixed visual area; change if needed */
}



/* The image is absolutely positioned to fill the media box */
.card-media>img {
     position: absolute;
     inset: 0;
     width: 100%;
     height: 100%;
     object-fit: cover;
     transform-origin: center center;
     transition: transform 700ms cubic-bezier(.2, .65, .3, 1);
     backface-visibility: hidden;
     /* reduce shimmer on scale */
     will-change: transform;
}

.card-media>img.small {
     width: 50%;
     height: 50%;
}

/* Cinematic veil */
.card-media::after {
     content: "";
     position: absolute;
     inset: 0;
     pointer-events: none;
     background: linear-gradient(180deg, transparent 55%, hsl(0 0% 0% / 0.60));
     opacity: 0.9;
     transition: opacity var(--timing);
     z-index: 1;
}

/* Zoom happens on the IMG only; footprint stays fixed by aspect-ratio */
.card:is(:hover, :focus-within) .card-media>img {
     transform: scale(1.06);
}

.card:is(:hover, :focus-within) .card-media::after {
     opacity: 0.5;
}

/* ─── BODY ─── */
.card-body {
     position: relative;
     display: grid;
     gap: .5rem;
     padding: 1rem 1.25rem 1.25rem;
     z-index: 0;
}

.card-title {
     margin: 0;
     font-weight: 600;
     line-height: 1.25;
     color: var(--text);
}

.card-meta {
     font-size: .9rem;
     color: var(--muted);
}

.card-actions {
     display: flex;
     gap: .5rem;
     margin-top: .5rem;
     align-items: center;
     flex-wrap: wrap;
}

/* Whole-card tap target */
.card a.stretched {
     position: absolute;
     inset: 0;
     z-index: 2;
     color: inherit;
     text-decoration: none;
}

/* Badges */
.card-badge {
     position: absolute;
     z-index: 3;
     top: .75rem;
     left: .75rem;
     padding: .25rem .5rem;
     border-radius: 999px;
     background: color-mix(in srgb, var(--accent) 16%, black 0%);
     backdrop-filter: blur(4px);
     color: #fff;
     font-size: .75rem;
}

/* Focus parity */
.card :where(a, button, .stretched):focus-visible {
     outline: 0;
     box-shadow: var(--ring);
     border-radius: 8px;
}

/* Respect user motion preference */
@media (prefers-reduced-motion: reduce) {

     .card,
     .card-media::after,
     .card-media>img {
          transition: none !important;
     }
}

/* END CARDS */

/* ─── MODAL ─── */
.modal {
     position: fixed;
     inset: 0;
     z-index: 999;
     display: grid;
     place-items: center;
     visibility: hidden;
     opacity: 0;
     pointer-events: none;
     transition: opacity var(--timing, 220ms) ease, visibility 0s linear 220ms;
}

.modal.is-open {
     visibility: visible;
     opacity: 1;
     pointer-events: auto;
     transition: opacity var(--timing, 220ms) ease;
}

/* Keep overlay behind the panel */
.modal__overlay {
     z-index: 0;
     background: rgba(0, 0, 0, .45);
     backdrop-filter: blur(3px);
}

/* Make sure the panel is above the overlay and never blurred */
.modal .modal__panel {
     z-index: 1;
     isolation: isolate;
     /* prevent overlay blur leaking in */
     filter: none !important;
     /* nuke any legacy filter */
     -webkit-filter: none !important;
     backdrop-filter: none !important;
     -webkit-backdrop-filter: none !important;
     transform: translateY(0);
     /* no scaling = crisp text */
}

/* Belt-and-suspenders: ensure body text inside is never filtered */
.modal .modal__panel .card-body {
     filter: none !important;
     -webkit-filter: none !important;
}

.modal .modal__panel {
     transform: translateY(8px);
     transition: transform 220ms cubic-bezier(.2, .65, .3, 1), opacity 220ms ease;
     opacity: 0;
}

.modal.is-open .modal__panel {
     transform: translateY(0);
     opacity: 1;
}


/* Ensure overlay actually covers the viewport (needed for outside-click) */
.modal__overlay {
     position: absolute;
     inset: 0;
}

/* Make the panel scroll internally when content is long */
.modal .modal__panel {
     position: relative;
     width: min(92vw, 800px);
     max-height: 92vh;
     overflow: auto;
     /* panel scroll */
     background: var(--surface-1);
     border-radius: var(--radius);
     box-shadow: rgba(17, 12, 46, 0.15) 0px 48px 100px 0px;
}

/* Top-right "X" that remains reachable while the panel scrolls */
.modal__close-topright {
     position: sticky;
     /* sticks to panel top while it scrolls */
     top: 1rem;
     margin-left: auto;
     display: inline-flex;
     align-items: center;
     justify-content: center;
     width: 2rem;
     height: 2rem;
     border: 0;
     border-radius: 999px;
     background: rgba(0, 0, 0, .6);
     color: #fff;
     font-size: 1.125rem;
     line-height: 1;
     cursor: pointer;
     z-index: 5;
     /* above card-media veil and content */
     transform: translate(8px, -8px);
}

/* Optional: hover affordance */
.modal__close-topright:hover {
     background: rgba(0, 0, 0, .75);
}

/* Ensure the media veil never covers the close button */
.card-media::after {
     z-index: 1;
}

.modal__close-topright {
     z-index: 5;
}

/* Panel should be above overlay (belt-and-suspenders) */
.modal .modal__panel {
     z-index: 2;
}

/* ─── END MODAL ─── */

/* ─── CONTAINER ─── */
.container {
     display: flex;
     /* flex-wrap: wrap; tijdelijk uitgeschakeld voor testdoeleinden */
     flex-direction: column;
     /* zet alles onder elkaar voor tekst */
     padding: 1rem;
     margin: 1rem auto;
     width: 100%;
     background-image: linear-gradient(var(--surface-0), var(--surface-0)),
          linear-gradient(120deg, transparent 25%, hsl(var(--accent-h) var(--accent-s) var(--accent-l)), hsl(var(--brand-h) var(--brand-s) var(--brand-l)));
     background-origin: padding-box, border-box;
     background-clip: padding-box, border-box;
     border-radius: 1rem;
     box-shadow: var(--shadow-s);
     animation: fadeIn .5s ease-in-out;
}

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

/* ─── END CONTAINER ─── */

/* ─── PRODUCT CARDS ─── */
.product-container {
     display: flex;
     flex-wrap: wrap;
     justify-content: center;
}

.article {
     flex: 1;
     max-width: 300px;
     margin: 1rem;
     display: flex;
     flex-direction: column;
     align-items: center;
     padding: .625rem;
     background-image: linear-gradient(var(--surface-0), var(--surface-0)),
          linear-gradient(120deg, transparent 25%, hsl(var(--brand-h) var(--brand-s) var(--brand-l)), hsl(var(--accent-h) var(--accent-s) var(--accent-l)));
     background-origin: padding-box, border-box;
     background-clip: padding-box, border-box;
     border-radius: 1rem;
     box-shadow: var(--shadow-s);
     transition: transform .3s ease;
}

.article:hover {
     transform: translateY(-1.5rem);
}

.article canvas {
     width: 100%;
     padding: .625rem;
}

@media (max-width:768px) {
     .article {
          max-width: 100%;
          margin: 1rem 0;
     }
}

/* ─── END PRODUCT CARDS ─── */

/* ─── GRID HELPERS ─── */
.grid-1211 {
     display: grid;
     grid-template-columns: 1fr 2fr 1fr 1fr;
     gap: 12px;
}

.grid-4 {
     display: grid;
     grid-template-columns: repeat(4, 1fr);
     gap: 12px;
}

.grid-3 {
     display: grid;
     grid-template-columns: repeat(3, 1fr);
     gap: 12px;
}

.grid-2 {
     display: grid;
     grid-template-columns: 1fr 1.9fr;
     gap: 12px;
}

.grid-auto {
     display: grid;
     grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
     gap: 12px;
}

/* ─── END GRID HELPERS ─── */

/* ─── UPLOADER ─── */
.uploader {
     border: 1px dashed var(--border);
     border-radius: 12px;
     padding: 18px;
     background: var(--bg);
     text-align: center;
     transition: background .2s, border-color .2s;
}

.uploader.dragover {
     background: rgba(13, 110, 253, .08);
     border-color: var(--accent);
}

/* ─── END UPLOADER ─── */

/* ─── THUMBS ─── */
.thumbs {
     display: grid;
     grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
     gap: 10px;
     margin-top: 10px;
}

.thumb {
     border: 1px solid var(--border);
     border-radius: 10px;
     overflow: hidden;
     background: var(--card);
     display: flex;
     flex-direction: column;
}

.thumb img {
     width: 100%;
     height: 120px;
     object-fit: cover;
     display: block;
}

.thumb .cap {
     padding: 6px 8px;
     display: flex;
     align-items: center;
     justify-content: space-between;
     gap: 8px;
}

.progress {
     height: 6px;
     background: var(--bg);
     border: 1px solid var(--border);
     border-radius: 999px;
     overflow: hidden;
     margin-top: 6px;
}

.progress>div {
     height: 100%;
     width: 0;
     background: var(--accent);
     transition: width .2s ease;
}

/* ─── END THUMBS ─── */

/* ─── PROFILE UPLOADER ─── */
.profile-uploader {
     border: 1px dashed var(--border);
     border-radius: 12px;
     padding: 14px;
     text-align: center;
     background: var(--bg);
     transition: background .2s;
}

.profile-uploader.dragover {
     background: rgba(13, 110, 253, .08);
     border-color: var(--accent);
}

.profile-picture {
     width: 100px;
     height: 100px;
     border-radius: 50%;
     overflow: hidden;
     border: 2px solid var(--border);
     margin: 10px auto 0;
}

.profile-picture img {
     width: 100%;
     height: 100%;
     object-fit: cover;
}

/* ─── END PROFILE UPLOADER ─── */

/* ─── LIST ─── */
.list {
     display: grid;
     gap: 10px;
}

.list .item {
     border: 1px solid var(--border);
     border-radius: 10px;
     padding: 10px;
     margin-bottom: 5px;
     background: var(--bg);
}

.list .item .row {
     align-items: center;
}

.list .actions {
     display: flex;
     gap: 8px;
}

/* ─── END LIST ─── */

/* ─── MAP ─── */
#map {
     height: 280px;
     width: 100%;
     margin-top: 8px;
     border: 1px solid var(--border);
     border-radius: 10px;
}

/* ─── END MAP ─── */

/* ─── TOPBAR ─── */
.topbar {
     position: fixed;
     inset: 0 0 auto 0;
     height: var(--topbar-h);
     display: flex;
     align-items: center;
     justify-content: space-between;
     gap: 12px;
     padding: 8px 12px;
     background: var(--bg);
     border-bottom: 1px solid var(--border);
     z-index: 3000;
}

/* ─── END TOPBAR ─── */

/* ─── ACCOUNT PILLS ─── */
.account-menu {
     position: relative;
     display: flex;
     align-items: center;
}

.account-trigger {
     display: flex;
     align-items: center;
     gap: 10px;
     background: var(--card);
     color: var(--text);
     border: 1px solid var(--border);
     border-radius: 999px;
     padding: 6px 12px;
     cursor: pointer;
     box-shadow: var(--shadow-1);
     transition: transform .15s var(--easing), box-shadow .2s var(--easing);
}

.account-trigger:hover {
     transform: translateY(-1px);
}

.account-trigger:focus,
.account-trigger:focus-visible {
     outline: 2px solid var(--accent);
     outline-offset: 2px;
}

.avatar {
     width: 28px;
     height: 28px;
     border-radius: 50%;
     object-fit: cover;
     background: var(--surface-0);
     flex: 0 0 28px;
}

.avatar-initials {
     width: 28px;
     height: 28px;
     border-radius: 50%;
     background: var(--surface-1);
     color: var(--text-inverse, #fff);
     display: flex;
     align-items: center;
     justify-content: center;
     font-weight: 700;
     font-size: 12px;
}

.first-name {
     font-weight: 600;
     white-space: nowrap;
}

.chevron {
     width: 8px;
     height: 8px;
     border-right: 2px solid currentColor;
     border-bottom: 2px solid currentColor;
     transform: rotate(45deg);
     margin-left: 2px;
}

@media (max-width:520px) {
     .first-name {
          display: none;
     }
}

/* ─── END ACCOUNT PILLS ─── */

/* ─── RIGHT-SIDE MENU TRIGGER ─── */
#menuNav-toggle {
     position: fixed;
     left: -10000px;
     top: auto;
     width: 1px;
     height: 1px;
     opacity: 0;
}

.menu-icon-nav {
     display: inline-flex;
     flex-direction: column;
     justify-content: center;
     gap: 5px;
     width: 44px;
     height: 36px;
     cursor: pointer;
     padding: 6px 8px;
     border-radius: 10px;
     border: 1px solid var(--border);
     background: var(--card);
}

.menu-icon-nav:hover {
     transform: translateY(-1px);
}

.menu-icon-nav:focus,
.menu-icon-nav:focus-visible {
     outline: 2px solid var(--accent);
     outline-offset: 2px;
}

.menu-icon-nav .bars {
     display: flex;
     flex-direction: column;
     gap: 4px;
}

.menu-icon-nav span {
     display: block;
     width: 20px;
     height: 2px;
     background: currentColor;
     border-radius: 2px;
}

.menu-icon-nav .label {
     font-weight: 600;
}

/* ─── END RIGHT-SIDE MENU TRIGGER ─── */

/* ─── RIGHT-SIDE DRAWER ─── */
#menuNav {
     position: fixed;
     inset: var(--topbar-h) 0 0 auto;
     right: 0;
     left: auto;
     transform: translateX(102%);
     transition: transform .22s var(--easing);
     width: max-content;
     max-width: var(--menu-max-w);
     height: max-content;
     max-height: var(--menu-max-h);
     background: var(--card);
     color: var(--text);
     border-left: 1px solid var(--border);
     border-radius: 12px;
     box-shadow: var(--shadow-2);
     z-index: 3050;
     overflow: auto;
     font-size: var(--menu-font);
     line-height: 1.3;
}

#menuNav ul {
     list-style: none;
     padding: 14px;
     margin: 0;
}

#menuNav li {
     margin: 8px 0;
}

#menuNav a,
#menuNav button {
     display: block;
     text-align: left;
     padding: 4px 4px;
     border-radius: 10px;
     text-decoration: none;
     color: inherit;
     background: transparent;
     border: none;
     cursor: pointer;
     font: inherit;
}

#menuNav a:hover,
#menuNav a:focus,
#menuNav button:hover,
#menuNav button:focus {
     background: var(--bg-dropdown);
     outline: none;
}

#menuNav .label {
     display: block;
     padding: 8px 12px;
     margin: 6px 0 2px;
     font-size: .9rem;
     color: var(--muted);
}

.menu-backdrop-nav {
     position: fixed;
     inset: var(--topbar-h) 0 0 0;
     opacity: 0;
     pointer-events: none;
     transition: opacity .2s var(--easing);
     z-index: 2990;
}

#menuNav-toggle:checked~.menu-backdrop-nav {
     pointer-events: auto;
     opacity: 1;
}

#menuNav-toggle:checked~#menuNav {
     transform: translateX(0);
}

/* Keep scrolling allowed while open */
body.menu-open-nav {
     overflow: auto;
}

/* ─── END RIGHT-SIDE DRAWER ─── */

/* ─── FEEDBACK MODAL ─── */
.modalFeedback {
     position: fixed;
     inset: 0;
     z-index: 7000;
     display: none;
     place-items: center;
}

.modalFeedback.is-open {
     display: grid;
}

.modalFeedback__overlay {
     position: absolute;
     inset: 0;
     background: var(--modalFeedback-bg, rgba(0, 0, 0, .4));
     backdrop-filter: saturate(130%) blur(2px);
}

.modalFeedback__content {
     position: relative;
     width: min(92vw, var(--modalFeedback-max-width, 720px));
     max-height: 86vh;
     overflow: auto;
     background: var(--card);
     color: var(--text);
     border: 1px solid var(--border);
     border-radius: var(--modalFeedback-radius, 12px);
     box-shadow: var(--shadow-2);
     padding: 18px 18px 16px 18px;
}

.modalFeedback__title {
     margin: 0 0 .5rem 0;
     font-size: 1.125rem;
}

.modalFeedback__close {
     position: absolute;
     top: 8px;
     right: 8px;
     border: 0;
     background: transparent;
     font-size: 1.5rem;
     line-height: 1;
     cursor: pointer;
}

.modalFeedback__form label {
     display: block;
     font-weight: 600;
     margin: .5rem 0 .25rem;
}

.modalFeedback__form textarea {
     width: 100%;
     min-height: 140px;
     resize: vertical;
     border: 1px solid var(--border);
     border-radius: 10px;
     padding: 10px;
}

/* ─── END FEEDBACK MODAL ─── */

/* ─── A11Y UTILITY ─── */
.visually-hidden {
     position: fixed;
     left: -10000px;
     top: auto;
     width: 1px;
     height: 1px;
     overflow: hidden;
}

.sr-only {
     position: absolute;
     width: 1px;
     height: 1px;
     padding: 0;
     margin: -1px;
     overflow: hidden;
     clip: rect(0, 0, 0, 0);
     white-space: nowrap;
     border: 0;
}

/* ─── END A11Y UTILITY ─── */

/* ─── HEADER ─── */
header {
     flex: 0 0 auto;
     color: #fff;
}

/* ─── END HEADER ─── */

/* ─── MAIN ─── */
main {
     display: flex;
     flex-direction: column;
     min-height: 100vh;
     width: 60%;
     margin: 0 auto;
     padding: 3rem;
}

@media screen and (max-width: 736px) {
     main {
          width: 100%;
          padding: 0 1.25em;
     }
}

/* END MAIN ─── */

/* ─── FOOTER ─── */

footer {
     position: fixed;
     flex: 0 0 auto;
     inset-inline: 0;
     inset-block-end: 0;
     z-index: 5000;
     color: var(--footer-ink);
     pointer-events: none;
}

footer .footer-bar {
     display: grid;
     grid-template-columns: 1fr auto;
     align-items: center;
     gap: 12px;
     min-height: var(--footer-bar-h);
     padding: 6px 12px calc(6px + env(safe-area-inset-bottom));
     background: linear-gradient(180deg, transparent, var(--bg-dropdown)), var(--footer-bg);
     border-top: 1px solid var(--footer-border);
     backdrop-filter: saturate(120%) blur(8px);
     box-shadow: 0 -8px 24px var(--shadow);
     pointer-events: auto;
}

footer .footer-left {
     display: flex;
     gap: 8px;
     align-items: center;
}

footer .footer-right {
     display: flex;
     gap: 14px;
     align-items: center;
     flex-wrap: wrap;
}

footer .bt--tiny {
     font-size: .875rem;
     line-height: 1;
     padding: .45rem .65rem;
     border-radius: 10px;
     margin: 0 auto;
}

footer .legal {
     margin: 0;
     font-size: .8125rem;
     color: var(--footer-muted);
}

footer .legal a {
     color: inherit;
     text-decoration: underline dotted;
     text-underline-offset: .15em;
}

footer .social-links {
     display: flex;
     gap: 10px;
     align-items: center;
}

footer .social-link {
     display: inline-flex;
     align-items: center;
     justify-content: center;
     width: 28px;
     height: 28px;
     border-radius: 8px;
     color: var(--footer-ink);
     opacity: .9;
}

footer .social-link:hover {
     opacity: 1;
     transform: translateY(-1px);
}

footer .social-link i {
     font-size: 20px;
}

footer .contact-panel {
     position: fixed;
     inset-inline: clamp(10px, 3vw, 24px);
     bottom: calc(var(--footer-bar-h) + 10px + env(safe-area-inset-bottom));
     width: min(640px, 92vw);
     max-height: min(72vh, 640px);
     overflow: auto;
     background: var(--footer-bg);
     border: 1px solid var(--footer-border);
     border-radius: var(--footer-radius);
     box-shadow: var(--footer-shadow);
     padding: 14px;
     pointer-events: auto;
     transition: opacity .18s ease, transform .18s ease, visibility .18s;
     margin: 0 auto;
}

@media (prefers-reduced-motion: reduce) {
     footer .contact-panel {
          transition: none;
     }
}

footer .contact-panel[hidden] {
     opacity: 0;
     transform: translateY(8px);
     visibility: hidden;
}

footer .Black {
     color: var(--black);
}

/* ─── END FOOTER ─── */

/* ─── INPUT BOX (simple variant for footer/contact) ─── */
.form .remember-me {
     display: flex;
     align-items: center;
     gap: .375rem;
}

.form p {
     text-align: center;
     font-size: .875rem;
     color: #666;
}

.form p a {
     color: hsl(var(--brand-h) var(--brand-s) var(--brand-l));
     text-decoration: none;
}

.form p a:hover {
     text-decoration: underline;
}

/* ─── END INPUT BOX ─── */

/* ─── MOBILE-FIRST OVERRIDES ─── */
@media (max-width:480px) {
     body {
          padding: .5rem;
          padding-top: var(--topbar-h);
          padding-bottom: calc(var(--footer-space, var(--footer-bar-h)) + env(safe-area-inset-bottom));
     }

     .btn,
     .input,
     .checkbox,
     .toggle,
     .agenda,
     .form-container,
     .form,
     .container,
     .product-container,
     .row,
     .modal__content {
          width: 100%;
          max-width: none;
          margin: .5rem auto;
     }

     .btn {
          padding: 1rem 1.5rem;
          font-size: 1rem;
     }

     .input,
     .toggle label,
     .checkbox .checkmark {
          min-height: 44px;
          padding: .75rem;
     }

     .row {
          flex-direction: column;
     }

     .row>* {
          width: 100%;
          margin-top: 1rem;
          padding-left: 0;
     }

     .gradient-table {
          display: block;
          overflow-x: auto;
          white-space: nowrap;
     }

     .cards {
          grid-template-columns: 1fr !important;
     }

     .tiles {
          grid-template-columns: 1fr !important;
          padding: 1rem;
     }
}

@media (min-width:481px) and (max-width:800px) {
     .cards {
          grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr));
     }

     .tiles {
          --cols: 2;
     }
}

/* ─── END MOBILE-FIRST OVERRIDES ─── */


/* ─── WRAPPER (FLUID CONTAINER) ─── */
#wrapper>*>.inner {
     width: 60%;
     margin: 0 auto;
     padding: 0.5em;
}

@media screen and (max-width: 736px) {
     #wrapper>*>.inner {
          width: 100%;
          padding: 0 1.25em;
     }
}

/* ─── END WRAPPER ─── */


/* From 3.styleImproved.css */
/* ─────────────────────────────────────────────────────────────────────────────
   3.styleImproved.css
   Extensions that build upon your 1.variables.css and 2.style.css without
   colliding. Everything here is namespaced or uses :where() to stay polite.
   Version: 1.0.0 (2025-11-07)
────────────────────────────────────────────────────────────────────────────── */

/* ─── Demo-only helpers (scoped; safe to remove in prod) ─── */
.demo-container {
     max-width: min(1200px, 100%);
     margin-inline: auto;
     padding: 1rem;
}

.demo-grid {
     display: grid;
     grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
     gap: 1rem;
}

.demo-card {
     background: var(--card);
     border: 1px solid var(--border);
     border-radius: 12px;
     box-shadow: var(--shadow-1, 0 1px 3px rgba(0, 0, 0, .06));
     padding: 1rem;
}

.demo-card>h3 {
     margin: .25rem 0 1rem;
     font-weight: 600;
}

.demo-row {
     display: flex;
     flex-wrap: wrap;
     gap: .75rem;
     align-items: center;
}

.demo-muted {
     color: var(--muted);
     font-size: .9rem;
}

.demo-divider {
     height: 1px;
     background: var(--border);
     margin: 1rem 0;
}

/* ─── END Demo-only helpers ─── */

/* ─── Universal focus ring for any interactive element in this file ─── */
:where(.x-btn, .x-chip, .x-badge, .x-tab, .x-accordion__button, .x-tooltip, .x-toast, .x-pill, .x-pagination a, .x-breadcrumbs a) {
     outline: 0;
     box-shadow: none;
}

:where(.x-btn, .x-chip, .x-badge, .x-tab, .x-accordion__button, .x-pill, .x-pagination a, .x-breadcrumbs a):focus-visible {
     box-shadow: var(--ring);
     border-color: var(--accent);
}

/* ─── END Universal focus ring for any interactive element in this file ─── */

/* ─── Buttons v2 (variants & sizes) ─── */


/* ─── Badges & Chips ─── */
.x-badge {
     display: inline-grid;
     place-items: center;
     padding: .1rem .45rem;
     border-radius: 999px;
     font-size: .8rem;
     background: color-mix(in srgb, var(--accent) 14%, var(--card) 86%);
     color: color-mix(in srgb, var(--accent) 70%, var(--text) 30%);
     border: 1px solid color-mix(in srgb, var(--accent) 40%, var(--border) 60%);
}

.x-badge--success {
     background: color-mix(in srgb, #22c55e 15%, var(--card) 85%);
     color: #176b3a;
     border-color: #a7f3d0;
}

.x-badge--warn {
     background: color-mix(in srgb, #f59e0b 18%, var(--card) 82%);
     color: #7a4c00;
     border-color: #fde68a;
}

.x-badge--danger {
     background: color-mix(in srgb, #ef4444 18%, var(--card) 82%);
     color: #7a1212;
     border-color: #fecaca;
}

.x-chip {
     display: inline-flex;
     align-items: center;
     gap: .4rem;
     padding: .25rem .6rem;
     border: 1px solid var(--border);
     border-radius: 999px;
     background: var(--surface-1, var(--card));
     color: var(--text);
}

.x-chip__close {
     inline-size: 1.1rem;
     block-size: 1.1rem;
     display: inline-grid;
     place-items: center;
     border-radius: 50%;
     cursor: pointer;
}

.x-chip__close:hover {
     background: color-mix(in srgb, var(--card) 70%, var(--text) 30% / 10%);
}

/* ─── END Badges & Chips ─── */

/* ─── Alerts ─── */
.x-alert {
     border: 1px solid var(--border);
     border-radius: 12px;
     padding: 12px 14px;
     display: flex;
     gap: .6rem;
     align-items: flex-start;
     background: var(--surface-1, var(--card));
}

.x-alert--success {
     border-color: #a7f3d0;
     background: linear-gradient(180deg, #ecfdf5, transparent);
}

.x-alert--warn {
     border-color: #fde68a;
     background: linear-gradient(180deg, #fffbeb, transparent);
}

.x-alert--danger {
     border-color: #fecaca;
     background: linear-gradient(180deg, #fef2f2, transparent);
}

.x-alert__icon {
     inline-size: 1.2rem;
     block-size: 1.2rem;
     margin-top: .15rem;
}

.x-alert__title {
     font-weight: 600;
}

.x-alert__body {
     color: var(--muted);
}

/* ─── END Alerts ─── */

/* ─── Tabs (CSS + tiny JS) ─── */
.x-tabs {
     display: grid;
     gap: .75rem;
}

.x-tablist {
     display: flex;
     flex-wrap: wrap;
     gap: .5rem;
}

.x-tab {
     appearance: none;
     border: 1px solid var(--border);
     background: var(--card);
     color: var(--text);
     padding: .5rem .8rem;
     border-radius: 999px;
     cursor: pointer;
}

.x-tab[aria-selected="true"] {
     border-color: var(--accent);
     box-shadow: var(--ring);
}

.x-tabpanel {
     display: none;
     border: 1px dashed var(--border);
     border-radius: 12px;
     padding: 1rem;
     background: var(--surface-1, var(--card));
}

.x-tabpanel[data-active="true"] {
     display: block;
}

/* ─── END Tabs (CSS + tiny JS) ─── */

/* ─── Accordion ─── */
.x-accordion {
     border: 1px solid var(--border);
     border-radius: 12px;
     overflow: hidden;
     background: var(--surface-1, var(--card));
}

.x-accordion__item+.x-accordion__item {
     border-top: 1px solid var(--border);
}

.x-accordion__button {
     width: 100%;
     text-align: left;
     padding: .85rem 1rem;
     background: transparent;
     border: 0;
     display: flex;
     justify-content: space-between;
     align-items: center;
}

.x-accordion__panel {
     display: grid;
     grid-template-rows: 0fr;
     transition: grid-template-rows .2s ease;
}

.x-accordion__panel>div {
     overflow: hidden;
     padding: 0 1rem;
}

.x-accordion__item[open] .x-accordion__panel {
     grid-template-rows: 1fr;
}

.x-accordion__chev {
     transition: transform .2s ease;
}

.x-accordion__item[open] .x-accordion__chev {
     transform: rotate(180deg);
}

/* ─── END Accordion ─── */

/* ─── Tooltip (no JS needed) ─── */
.x-tooltip {
     position: relative;
     border-bottom: 1px dashed var(--border);
     cursor: help;
}

.x-tooltip:hover .x-tooltip__bubble,
.x-tooltip:focus-within .x-tooltip__bubble {
     opacity: 1;
     transform: translateY(-4px);
}

.x-tooltip__bubble {
     position: absolute;
     inset: auto auto 100% 0;
     translate: 0 -6px;
     background: var(--text);
     color: #fff;
     padding: .4rem .6rem;
     border-radius: 8px;
     opacity: 0;
     pointer-events: none;
     transition: opacity .15s ease, transform .15s ease;
     white-space: nowrap;
     z-index: 5;
}

/* ─── END Tooltip (no JS needed) ─── */

/* ─── Toast (snackbar) ─── */
.x-toast {
     position: fixed;
     inset: auto 1rem 1rem auto;
     z-index: 9999;
     background: var(--text);
     color: #fff;
     padding: .65rem .9rem;
     border-radius: 12px;
     box-shadow: var(--shadow-2, 0 10px 30px rgba(0, 0, 0, .2));
     display: none;
}

.x-toast.is-open {
     display: block;
     animation: x-fade-up .2s ease;
}

@keyframes x-fade-up {
     from {
          opacity: 0;
          transform: translateY(8px);
     }

     to {
          opacity: 1;
          transform: none;
     }
}

/* ─── END Toast (snackbar) ─── */

/* ─── Breadcrumbs & Pagination ─── */
.x-breadcrumbs {
     display: flex;
     gap: .5rem;
     flex-wrap: wrap;
     align-items: center;
}

.x-breadcrumbs a {
     color: var(--text);
     text-decoration: none;
     border: 1px solid var(--border);
     padding: .25rem .5rem;
     border-radius: 999px;
}

.x-breadcrumbs .is-current {
     border-color: var(--accent);
     box-shadow: var(--ring);
}

.x-pagination {
     display: flex;
     gap: .4rem;
     align-items: center;
     flex-wrap: wrap;
}

.x-pagination a {
     display: inline-grid;
     place-items: center;
     min-width: 2.1rem;
     height: 2.1rem;
     border: 1px solid var(--border);
     border-radius: 10px;
     text-decoration: none;
     color: var(--text);
     padding: 0 .5rem;
}

.x-pagination .is-active {
     border-color: var(--accent);
     box-shadow: var(--ring);
}

/* ─── END Breadcrumbs & Pagination ─── */

/* ─── Progress, Skeleton & Spinner ─── */
.x-progress {
     height: .6rem;
     border-radius: 999px;
     background: color-mix(in srgb, var(--card) 70%, var(--text) 30% / 10%);
     overflow: hidden;
     border: 1px solid var(--border);
}

.x-progress__bar {
     height: 100%;
     width: var(--value, 40%);
     background: linear-gradient(90deg, var(--accent), color-mix(in srgb, var(--accent) 70%, white 30%));
}

.x-skeleton {
     --shimmer: #f6f7f8;
     --shine: #ededed;
     border-radius: 8px;
     background: linear-gradient(90deg, var(--shimmer), var(--shine), var(--shimmer));
     background-size: 200% 100%;
     animation: x-shimmer 1.4s linear infinite;
}

@keyframes x-shimmer {
     to {
          background-position: -200% 0;
     }
}

.x-spinner {
     inline-size: 22px;
     block-size: 22px;
     border: 3px solid color-mix(in srgb, var(--accent) 20%, transparent);
     border-top-color: var(--accent);
     border-radius: 50%;
     animation: x-rot 600ms linear infinite;
}

@keyframes x-rot {
     to {
          transform: rotate(360deg);
     }
}

/* ─── END Progress, Skeleton & Spinner ─── */

/* ─── Timeline ─── */
.x-timeline {
     position: relative;
     padding-left: 1.25rem;
}

.x-timeline::before {
     content: "";
     position: absolute;
     left: .5rem;
     top: 0;
     bottom: 0;
     width: 2px;
     background: var(--border);
}

.x-timeline__item {
     position: relative;
     margin: 0 0 1rem 0;
     padding-left: 1rem;
}

.x-timeline__item::marker {
     content: "";
}

.x-timeline__dot {
     position: absolute;
     left: -.05rem;
     top: .25rem;
     width: .65rem;
     height: .65rem;
     background: var(--accent);
     border-radius: 999px;
     outline: 2px solid var(--card);
}

/* ─── END Timeline ─── */

/* ─── Stat/KPI cards ─── */
.x-stats {
     display: grid;
     grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
     gap: 1rem;
}

.x-stat {
     background: var(--surface-1, var(--card));
     border: 1px solid var(--border);
     border-radius: 12px;
     padding: 1rem;
     display: grid;
     gap: .25rem;
}

.x-stat__label {
     color: var(--muted);
     font-size: .85rem;
}

.x-stat__value {
     font-size: 1.6rem;
     font-weight: 700;
}

.x-stat__trend.up {
     color: hsl(152 45% 35%);
}

.x-stat__trend.down {
     color: hsl(355 78% 44%);
}

/* ─── END Stat/KPI cards ─── */

/* ─── Avatars ─── */
.x-avatar {
     --size: 36px;
     inline-size: var(--size);
     block-size: var(--size);
     border-radius: 50%;
     overflow: hidden;
     display: inline-grid;
     place-items: center;
     border: 1px solid var(--border);
     background: var(--surface-1, var(--card));
}

.x-avatar img {
     width: 100%;
     height: 100%;
     object-fit: cover;
}

.x-avatar__initials {
     font-weight: 700;
     color: var(--text);
}

/* ─── END Avatars ─── */

/* ─── Breadcrumb-style nav pills (filters) ─── */
.x-pills {
     display: flex;
     flex-wrap: wrap;
     gap: .5rem;
}

.x-pill {
     border: 1px solid var(--border);
     background: var(--surface-1, var(--card));
     color: var(--text);
     padding: .3rem .7rem;
     border-radius: 999px;
     cursor: pointer;
}

.x-pill[aria-pressed="true"] {
     border-color: var(--accent);
     box-shadow: var(--ring);
}

/* ─── END Breadcrumb-style nav pills (filters) ─── */

/* ─── Accessibility motion preferences ─── */
@media (prefers-reduced-motion: reduce) {
     * {
          animation-duration: .001ms !important;
          animation-iteration-count: 1 !important;
          transition-duration: .001ms !important;
          scroll-behavior: auto !important;
     }
}

/* ─── END Accessibility motion preferences ─── */

/* From 4.styleAmazed.css */
/* ─────────────────────────────────────────────────────────────────────────────
   4.styleAmazed.css
   Next-level, namespaced components that still honor your tokens.
   Namespace: .z-*
   Version: 1.0.0 (2025-11-07)
────────────────────────────────────────────────────────────────────────────── */

/* ─── Demo helpers ─── */
.z-demo-grid {
     display: grid;
     grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
     gap: 1rem;
}

.z-card {
     background: var(--card);
     border: 1px solid var(--border);
     border-radius: 12px;
     padding: 1rem;
     box-shadow: var(--shadow-1, 0 1px 3px rgba(0, 0, 0, .06));
}

.z-card>h3 {
     margin: .25rem 0 1rem;
     font-weight: 600;
}

/* ─── END Demo helpers ─── */

/* ─── Stepper ─── */
.z-steps {
     display: flex;
     flex-wrap: wrap;
     gap: .75rem;
     align-items: center;
     counter-reset: step;
}

.z-step {
     display: flex;
     align-items: center;
     gap: .5rem;
}

.z-step__dot {
     width: 28px;
     height: 28px;
     border-radius: 999px;
     display: grid;
     place-items: center;
     font-weight: 700;
     color: #fff;
     background: color-mix(in srgb, var(--accent) 80%, #000 20%);
}

.z-step.is-done .z-step__dot {
     background: hsl(152 45% 35%);
}

.z-step.is-current .z-step__dot {
     box-shadow: var(--ring);
}

.z-step__label {
     font-weight: 600;
}

.z-step__sep {
     width: 32px;
     height: 2px;
     background: var(--border);
}

/* ─── END Stepper ─── */

/* ─── Rating ─── */
.z-rating {
     display: inline-flex;
     gap: .3rem;
}

.z-rating button {
     background: none;
     border: 0;
     cursor: pointer;
     font-size: 1.2rem;
     line-height: 1;
}

.z-rating [aria-checked="true"] {
     color: hsl(38 90% 48%);
     text-shadow: 0 1px 0 rgba(0, 0, 0, .12);
}

/* ─── END Rating ─── */

/* ─── Responsive Table (labels on mobile) ─── */
.z-table {
     width: 100%;
     border-collapse: collapse;
}

.z-table th,
.z-table td {
     border: 1px solid var(--border);
     padding: .6rem .7rem;
}

.z-table th {
     background: var(--surface-1, var(--card));
     text-align: left;
}

@media (max-width: 720px) {
     .z-table thead {
          display: none;
     }

     .z-table,
     .z-table tbody,
     .z-table tr,
     .z-table td {
          display: block;
          width: 100%;
     }

     .z-table tr {
          border: 1px solid var(--border);
          border-radius: 12px;
          overflow: hidden;
          background: var(--surface-1, var(--card));
          margin-bottom: .75rem;
     }

     .z-table td {
          display: grid;
          grid-template-columns: 10ch 1fr;
          gap: .75rem;
          border: 0;
          border-bottom: 1px solid var(--border);
     }

     .z-table td::before {
          content: attr(data-th);
          color: var(--muted);
          font-weight: 600;
     }

     .z-table td:last-child {
          border-bottom: 0;
     }
}

/* ─── END Responsive Table (labels on mobile) ─── */

/* ─── Gallery + Lightbox ─── */
.z-gallery {
     display: grid;
     grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
     gap: .6rem;
}

.z-gallery img {
     width: 100%;
     height: 140px;
     object-fit: cover;
     border-radius: 10px;
     border: 1px solid var(--border);
     cursor: pointer;
}

.z-lightbox {
     position: fixed;
     inset: 0;
     display: none;
     place-items: center;
     background: rgba(0, 0, 0, .72);
     z-index: 9999;
}

.z-lightbox.is-open {
     display: grid;
}

.z-lightbox img {
     max-width: min(92vw, 1600px);
     max-height: 82vh;
     border-radius: 12px;
     box-shadow: var(--shadow-2, 0 20px 50px rgba(0, 0, 0, .4));
}

.z-lightbox__close {
     position: absolute;
     top: 1rem;
     right: 1rem;
     inline-size: 40px;
     block-size: 40px;
     border-radius: 50%;
     border: 0;
     cursor: pointer;
     background: #111;
     color: #fff;
     font-size: 1.2rem;
}

/* ─── END Gallery + Lightbox ─── */

/* ─── Tags input ─── */
.z-tags {
     display: flex;
     align-items: center;
     flex-wrap: wrap;
     gap: .4rem;
     border: 1px solid var(--border);
     background: var(--surface-1, var(--card));
     padding: .4rem;
     border-radius: 12px;
}

.z-tag {
     display: inline-flex;
     gap: .35rem;
     align-items: center;
     padding: .25rem .55rem;
     border-radius: 999px;
     border: 1px solid var(--border);
     background: var(--card);
}

.z-tag__remove {
     border: 0;
     background: none;
     cursor: pointer;
     font-weight: 700;
}

.z-tags input {
     border: 0;
     outline: none;
     padding: .35rem;
     min-width: 10ch;
     background: transparent;
     color: var(--text);
}

/* ─── END Tags input ─── */

/* ─── Toast stack ─── */
.z-toasts {
     position: fixed;
     inset: auto 1rem 1rem auto;
     display: grid;
     gap: .5rem;
     z-index: 9999;
}

.z-toast {
     background: var(--text);
     color: #fff;
     border-radius: 12px;
     padding: .6rem .9rem;
     box-shadow: var(--shadow-2, 0 10px 30px rgba(0, 0, 0, .2));
}

/* ─── END Toast stack ─── */

/* ─── Notification center (panel) ─── */
.z-notify {
     position: relative;
}

.z-notify__panel {
     position: absolute;
     right: 0;
     top: calc(100% + 8px);
     width: min(340px, 96vw);
     background: var(--card);
     border: 1px solid var(--border);
     border-radius: 12px;
     padding: .6rem;
     box-shadow: var(--shadow-2, 0 20px 50px rgba(0, 0, 0, .25));
     display: none;
}

.z-notify.is-open .z-notify__panel {
     display: block;
}

.z-notify__item {
     display: grid;
     grid-template-columns: 32px 1fr;
     gap: .6rem;
     padding: .5rem;
     border-radius: 10px;
}

.z-notify__item:hover {
     background: color-mix(in srgb, var(--card) 70%, var(--text) 30% / 6%);
}

/* ─── END Notification center (panel) ─── */

/* ─── Split view (resizable) ─── */
.z-split {
     display: grid;
     grid-template-columns: 1fr 8px 1fr;
     gap: 0;
     border: 1px solid var(--border);
     border-radius: 12px;
     overflow: hidden;
}

.z-split__pane {
     min-height: 220px;
     background: var(--surface-1, var(--card));
     padding: 1rem;
}

.z-split__gutter {
     background: color-mix(in srgb, var(--card) 60%, var(--text) 40% / 10%);
     cursor: col-resize;
}

.z-split__gutter:hover {
     background: color-mix(in srgb, var(--card) 40%, var(--text) 60% / 18%);
}

/* ─── END Split view (resizable) ─── */

/* ─── Code block with copy ─── */
.z-code {
     position: relative;
     background: #0f172a;
     color: #e2e8f0;
     border-radius: 12px;
     padding: 1rem;
     border: 1px solid #1e293b;
     font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
     font-size: .92rem;
}

.z-code__btn {
     position: absolute;
     top: .5rem;
     right: .5rem;
     border: 1px solid #334155;
     background: #111827;
     color: #e5e7eb;
     border-radius: 8px;
     padding: .25rem .5rem;
     cursor: pointer;
}

/* ─── END Code block with copy ─── */

/* ─── Circular progress (indeterminate or value) ─── */
.z-circular {
     --size: 64px;
     width: var(--size);
     height: var(--size);
     border-radius: 50%;
     border: 6px solid color-mix(in srgb, var(--accent) 20%, transparent);
     border-top-color: var(--accent);
     animation: z-rot 750ms linear infinite;
}

@keyframes z-rot {
     to {
          transform: rotate(360deg);
     }
}

/* ─── END Circular progress (indeterminate or value) ─── */

/* ─── Empty state ─── */
.z-empty {
     display: grid;
     place-items: center;
     text-align: center;
     gap: .5rem;
     padding: 1.5rem;
     border: 1px dashed var(--border);
     border-radius: 12px;
     background: var(--surface-1, var(--card));
}

.z-empty__icon {
     font-size: 2rem;
}

.z-empty__title {
     font-weight: 700;
}

.z-empty__subtitle {
     color: var(--muted);
}

/* ─── END Empty state ─── */

/* ─── Context menu ─── */
.z-ctx {
     position: fixed;
     inset: auto;
     background: var(--card);
     color: var(--text);
     border: 1px solid var(--border);
     border-radius: 10px;
     box-shadow: var(--shadow-2, 0 20px 50px rgba(0, 0, 0, .25));
     min-width: 180px;
     padding: .35rem;
     display: none;
     z-index: 9999;
}

.z-ctx a {
     display: block;
     padding: .45rem .6rem;
     border-radius: 8px;
     color: inherit;
     text-decoration: none;
}

.z-ctx a:hover {
     background: color-mix(in srgb, var(--card) 70%, var(--text) 30% / 8%);
}

/* ─── END Context menu ─── */

/* ─── File tree ─── */
.z-tree {
     list-style: none;
     padding-left: 0;
}

.z-tree li {
     padding: .2rem 0;
}

.z-tree details {
     border-radius: 8px;
     padding: .2rem .25rem;
}

.z-tree summary {
     cursor: pointer;
     border-radius: 8px;
     padding: .2rem .25rem;
}

.z-tree summary:hover {
     background: color-mix(in srgb, var(--card) 70%, var(--text) 30% / 6%);
}

/* ─── END File tree ─── */

/* ─── Mini calendar ─── */
.z-calendar {
     --cell: 38px;
     width: calc(var(--cell)*7 + 4px);
     padding: .5rem;
     border: 1px solid var(--border);
     border-radius: 12px;
     background: var(--surface-1, var(--card));
}

.z-calendar__header {
     display: flex;
     justify-content: space-between;
     align-items: center;
     margin-bottom: .5rem;
}

.z-calendar__grid {
     display: grid;
     grid-template-columns: repeat(7, var(--cell));
     gap: .25rem;
}

.z-calendar__cell {
     display: grid;
     place-items: center;
     width: var(--cell);
     height: var(--cell);
     border-radius: 10px;
}

.z-calendar__cell.is-today {
     outline: 2px solid var(--accent);
}

.z-calendar__cell.is-muted {
     color: var(--muted);
}

.z-calendar__cell.is-picked {
     background: color-mix(in srgb, var(--accent) 22%, transparent);
}

/* ─── END Mini calendar ─── */

/* ─── Swatches (color picker) ─── */
.z-swatches {
     display: flex;
     gap: .5rem;
     flex-wrap: wrap;
}

.z-swatch {
     --size: 28px;
     width: var(--size);
     height: var(--size);
     border-radius: 8px;
     border: 1px solid var(--border);
     cursor: pointer;
     position: relative;
}

.z-swatch[aria-checked="true"]::after {
     content: "";
     position: absolute;
     inset: -4px;
     border: 2px solid var(--accent);
     border-radius: 10px;
     pointer-events: none;
}

/* ─── END Swatches (color picker) ─── */

/* ─── Breadcrumb overflow ─── */
.z-bc {
     display: flex;
     gap: .35rem;
     flex-wrap: wrap;
     align-items: center;
}

.z-bc a {
     text-decoration: none;
     color: var(--text);
     border: 1px solid var(--border);
     border-radius: 999px;
     padding: .25rem .55rem;
}

.z-bc__more {
     border: 1px dashed var(--border);
     border-radius: 999px;
     padding: .25rem .55rem;
     color: var(--muted);
}

/* ─── END Breadcrumb overflow ─── */

/* ─── Layout: topbar + sidebar ─── */
.z-layout {
     display: grid;
     grid-template-rows: 56px 1fr;
     grid-template-columns: 260px 1fr;
     grid-template-areas: "topbar topbar" "sidebar main";
     height: 100vh;
     border: 1px solid var(--border);
     border-radius: 12px;
     overflow: hidden;
}

.z-layout__top {
     grid-area: topbar;
     display: flex;
     align-items: center;
     justify-content: space-between;
     padding: 0 .75rem;
     background: var(--surface-1, var(--card));
     border-bottom: 1px solid var(--border);
}

.z-layout__side {
     grid-area: sidebar;
     border-right: 1px solid var(--border);
     background: var(--surface-1, var(--card));
     padding: .5rem;
}

.z-layout__main {
     grid-area: main;
     padding: 1rem;
     overflow: auto;
}

/* ─── END Layout: topbar + sidebar ─── */

/* ─── Command Palette ─── */
.z-cmd {
     position: fixed;
     inset: 0;
     display: none;
     place-items: start center;
     background: rgba(0, 0, 0, .4);
     z-index: 9999;
     padding-top: 10vh;
}

.z-cmd.is-open {
     display: grid;
}

.z-cmd__panel {
     width: min(720px, 92vw);
     background: var(--card);
     border: 1px solid var(--border);
     border-radius: 12px;
     box-shadow: var(--shadow-2, 0 30px 70px rgba(0, 0, 0, .35));
     overflow: hidden;
}

.z-cmd__head {
     display: flex;
     gap: .5rem;
     align-items: center;
     padding: .6rem;
     border-bottom: 1px dashed var(--border);
}

.z-cmd__input {
     flex: 1;
     border: 0;
     outline: 0;
     background: transparent;
     padding: .5rem;
     color: var(--text);
}

.z-cmd__list {
     max-height: 50vh;
     overflow: auto;
}

.z-cmd__item {
     padding: .55rem .75rem;
     display: flex;
     gap: .6rem;
     align-items: center;
     cursor: pointer;
}

.z-cmd__item:hover,
.z-cmd__item[aria-selected="true"] {
     background: color-mix(in srgb, var(--card) 70%, var(--text) 30% / 8%);
}

/* ─── END Command Palette ─── */