/* Cambot design system: tokens, shell and shared components.
   Page-specific rules live in portal.css. Brand tones are overridden per
   establishment by /branding/{slug}.css, which loads after this file. */
@font-face{font-family:"Nunito";font-style:normal;font-weight:200 1000;font-display:swap;src:url("fonts/nunito-latin-wght-normal.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

:root{
  --brand-primary:#214d66;--brand-primary-hover:#1a3f54;--brand-primary-active:#153344;
  --brand-primary-soft:#e9edf0;--brand-primary-border:#a6b8c2;--brand-on-primary:#ffffff;--brand-bg:#f8f4eb;
  --accent:#b79353;
  --surface:#fffdf8;--surface-2:#f3efe6;--ink:#243744;--ink-2:#526471;--ink-3:#76828b;--line:#e5e1d7;
  --ok:#2e7d4f;--ok-soft:#e3f3e9;--warn:#a86b12;--warn-soft:#fff1d6;--danger:#b02a37;--danger-soft:#fbe4e6;--info:#1f5f8b;--info-soft:#e2eef7;
  --space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:64px;
  --radius-sm:8px;--radius:12px;--radius-lg:16px;--radius-pill:999px;
  --shadow-1:0 1px 2px rgba(20,30,40,.05),0 4px 14px rgba(20,30,40,.06);--shadow-2:0 12px 40px rgba(20,30,40,.18);
  --font:"Nunito",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --topbar-h:60px;--nav-h:64px;--safe-b:env(safe-area-inset-bottom,0px);--motion:1;
  --nido-blue:var(--brand-primary);--nido-cream:var(--brand-bg);--nido-gold:var(--accent);--nido-ink:var(--ink);
  --bs-primary:#214d66;--bs-primary-rgb:33,77,102;--bs-body-bg:var(--brand-bg);--bs-body-color:var(--ink);
  --bs-body-font-family:var(--font);--bs-border-color:var(--line);--bs-link-color:var(--brand-primary);--bs-link-hover-color:var(--brand-primary-hover);
  --bs-secondary-color:var(--ink-3);--bs-heading-color:var(--brand-primary);
  color-scheme:light;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --brand-primary:#7fb0cf;--brand-primary-hover:#93bdd8;--brand-primary-active:#a6cae1;--brand-primary-soft:#1c2b35;--brand-primary-border:#3c5566;--brand-on-primary:#0e1418;
    --brand-bg:#0e1418;--surface:#121a20;--surface-2:#1a242c;--ink:#e8edf0;--ink-2:#b4c0c8;--ink-3:#8797a2;--line:#27343d;--accent:#d3b26f;
    --ok:#7fd3a0;--ok-soft:#173225;--warn:#f0bd6a;--warn-soft:#3a2b12;--danger:#f08a94;--danger-soft:#42191e;--info:#8cc0e8;--info-soft:#16283a;
    --shadow-1:0 1px 2px rgba(0,0,0,.3),0 4px 14px rgba(0,0,0,.3);color-scheme:dark;
  }
}
:root[data-theme="dark"]{
  --brand-primary:#7fb0cf;--brand-primary-hover:#93bdd8;--brand-primary-active:#a6cae1;--brand-primary-soft:#1c2b35;--brand-primary-border:#3c5566;--brand-on-primary:#0e1418;
  --brand-bg:#0e1418;--surface:#121a20;--surface-2:#1a242c;--ink:#e8edf0;--ink-2:#b4c0c8;--ink-3:#8797a2;--line:#27343d;--accent:#d3b26f;
  --ok:#7fd3a0;--ok-soft:#173225;--warn:#f0bd6a;--warn-soft:#3a2b12;--danger:#f08a94;--danger-soft:#42191e;--info:#8cc0e8;--info-soft:#16283a;
  --shadow-1:0 1px 2px rgba(0,0,0,.3),0 4px 14px rgba(0,0,0,.3);color-scheme:dark;
}
@media (prefers-reduced-motion: reduce){:root{--motion:0}*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* Base */
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--brand-bg);color:var(--ink);font-family:var(--font);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}
h1,h2,h3,h4{font-family:var(--font);font-weight:800;color:var(--brand-primary);letter-spacing:-.01em;line-height:1.2}
h1{font-size:30px;margin-bottom:8px}h2{font-size:22px}h3{font-size:18px}
a{color:var(--brand-primary)}
.eyebrow{font-size:11px;letter-spacing:.16em;color:var(--accent);font-weight:800;margin-bottom:10px;text-transform:uppercase}
.text-muted{color:var(--ink-3)!important}
summary{cursor:pointer;font-weight:700;color:var(--brand-primary)}
:focus-visible{outline:3px solid var(--brand-primary);outline-offset:2px}
.i{width:1.15em;height:1.15em;flex-shrink:0;vertical-align:-.22em;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* Bootstrap components, tinted by the brand */
.btn{--bs-btn-border-radius:var(--radius);--bs-btn-font-weight:700;--bs-btn-padding-y:.5rem;--bs-btn-padding-x:1rem;--bs-btn-focus-shadow-rgb:var(--bs-primary-rgb)}
.btn-sm{--bs-btn-border-radius:var(--radius-sm)}
.btn-primary{--bs-btn-bg:var(--brand-primary);--bs-btn-border-color:var(--brand-primary);--bs-btn-color:var(--brand-on-primary);--bs-btn-hover-bg:var(--brand-primary-hover);--bs-btn-hover-border-color:var(--brand-primary-hover);--bs-btn-hover-color:var(--brand-on-primary);--bs-btn-active-bg:var(--brand-primary-active);--bs-btn-active-border-color:var(--brand-primary-active);--bs-btn-active-color:var(--brand-on-primary);--bs-btn-disabled-bg:var(--brand-primary);--bs-btn-disabled-border-color:var(--brand-primary);--bs-btn-disabled-color:var(--brand-on-primary)}
.btn-outline-primary{--bs-btn-color:var(--brand-primary);--bs-btn-border-color:var(--brand-primary-border);--bs-btn-hover-bg:var(--brand-primary-soft);--bs-btn-hover-border-color:var(--brand-primary);--bs-btn-hover-color:var(--brand-primary);--bs-btn-active-bg:var(--brand-primary);--bs-btn-active-border-color:var(--brand-primary);--bs-btn-active-color:var(--brand-on-primary);--bs-btn-disabled-color:var(--brand-primary);--bs-btn-disabled-border-color:var(--brand-primary-border)}
.btn-outline-secondary{--bs-btn-color:var(--ink-2);--bs-btn-border-color:var(--line);--bs-btn-hover-bg:var(--surface-2);--bs-btn-hover-color:var(--ink);--bs-btn-hover-border-color:var(--line);--bs-btn-active-bg:var(--surface-2);--bs-btn-active-color:var(--ink);--bs-btn-active-border-color:var(--line)}
.btn-outline-danger{--bs-btn-color:var(--danger);--bs-btn-border-color:var(--danger);--bs-btn-hover-bg:var(--danger-soft);--bs-btn-hover-color:var(--danger);--bs-btn-hover-border-color:var(--danger)}
.btn-outline-success{--bs-btn-color:var(--ok);--bs-btn-border-color:var(--ok);--bs-btn-hover-bg:var(--ok-soft);--bs-btn-hover-color:var(--ok);--bs-btn-hover-border-color:var(--ok)}
.btn-danger{--bs-btn-bg:var(--danger);--bs-btn-border-color:var(--danger);--bs-btn-hover-bg:#8f1f2b;--bs-btn-hover-border-color:#8f1f2b}
.btn-light,.btn-outline-light{--bs-btn-color:var(--ink);--bs-btn-bg:var(--surface);--bs-btn-border-color:var(--line);--bs-btn-hover-bg:var(--surface-2);--bs-btn-hover-color:var(--ink);--bs-btn-hover-border-color:var(--line)}
.form-control,.form-select{background-color:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:10px;padding:.5rem .75rem}
.form-control:focus,.form-select:focus{background-color:var(--surface);color:var(--ink);border-color:var(--brand-primary);box-shadow:0 0 0 3px var(--brand-primary-soft)}
.form-control::placeholder{color:var(--ink-3)}
.form-select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%2376828b' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}
.form-check-input{border-color:var(--brand-primary-border);background-color:var(--surface)}
.form-check-input:checked{background-color:var(--brand-primary);border-color:var(--brand-primary)}
.form-label,label{font-weight:700;color:var(--ink-2);font-size:14px}
.form-text{color:var(--ink-3)}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:24px;box-shadow:var(--shadow-1);color:var(--ink)}
.card>.btn,.card>a.btn{align-self:flex-start}
.table{--bs-table-bg:transparent;--bs-table-color:var(--ink);--bs-table-border-color:var(--line);--bs-table-striped-bg:var(--surface-2)}
.table th{background:var(--surface-2);color:var(--ink-2);font-size:12px;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}
.table td{font-size:14px;max-width:300px;overflow-wrap:anywhere}
code{color:var(--info)}

/* Shell */
.topbar{position:sticky;top:0;z-index:40;min-height:var(--topbar-h);background:var(--brand-primary);color:var(--brand-on-primary);display:flex;align-items:center;gap:10px;padding:0 20px;box-shadow:0 1px 0 rgba(0,0,0,.08)}
.brand{display:flex;align-items:center;gap:10px;color:inherit;text-decoration:none;font-weight:800;font-size:20px;letter-spacing:.01em;margin-right:auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.brand:hover{color:inherit;opacity:.9}
.brand-logo{height:36px;max-width:90px;object-fit:contain;border-radius:8px;background:#fff;padding:2px}
.topbar-actions{display:flex;align-items:center;gap:6px}
.topbar-name{font-weight:700;font-size:14px;margin:0 6px;opacity:.9}
.icon-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;border:0;background:transparent;color:inherit;text-decoration:none;cursor:pointer}
.icon-btn:hover{background:rgba(0,0,0,.12);color:inherit}
.icon-btn .i{width:22px;height:22px}
.badge-dot{position:absolute;top:4px;right:2px;min-width:18px;height:18px;padding:0 5px;border-radius:var(--radius-pill);background:var(--danger);color:#fff;font-size:11px;font-weight:800;line-height:18px;text-align:center}
.btn-topbar{color:var(--brand-on-primary);border:1px solid currentColor;background:transparent;border-radius:var(--radius-pill);padding:4px 14px;font-weight:700;font-size:13px;line-height:1.5}
.btn-topbar:hover{background:var(--brand-primary-hover);color:var(--brand-on-primary)}
.nav-toggle{display:none}
.support-banner{background:var(--warn-soft);color:var(--warn);padding:10px 20px;font-weight:700;display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.shell{display:flex;min-height:calc(100vh - var(--topbar-h))}
.sidebar{width:248px;flex-shrink:0;background:var(--surface);border-right:1px solid var(--line);padding:16px 12px;position:sticky;top:var(--topbar-h);height:calc(100vh - var(--topbar-h));overflow-y:auto;display:flex;flex-direction:column;gap:2px}
.sidebar a{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;color:var(--ink-2);text-decoration:none;font-weight:700;font-size:14px}
.sidebar a .i{width:20px;height:20px;color:var(--ink-3)}
.sidebar a[aria-current],.sidebar a:hover{background:var(--brand-primary-soft);color:var(--brand-primary)}
.sidebar a[aria-current] .i,.sidebar a:hover .i{color:var(--brand-primary)}
.nav-group{font-size:11px;letter-spacing:.14em;color:var(--ink-3);text-transform:uppercase;font-weight:800;margin:14px 12px 4px}
.nav-group:first-child{margin-top:0}
.sidebar-backdrop{display:none}
.content{padding:32px;max-width:1400px;width:100%;min-width:0}
.breadcrumbs{font-size:13px;color:var(--ink-3);margin-bottom:12px;display:flex;flex-wrap:wrap;gap:6px}
.breadcrumbs a{color:var(--ink-2);text-decoration:none}
.tabbar{display:none}
.sheet-body{padding:8px 8px calc(8px + var(--safe-b))}
.sheet-link{display:flex;align-items:center;gap:12px;width:100%;padding:14px 16px;border:0;background:none;border-radius:10px;color:var(--ink);text-decoration:none;font-weight:700;font-size:15px;text-align:left}
.sheet-link .i{width:22px;height:22px;color:var(--brand-primary)}
.sheet-link:hover{background:var(--surface-2);color:var(--ink)}
.auth-container{max-width:480px;margin:40px auto;padding:0 16px}
@media (max-width: 899px){
  .topbar{padding:0 12px 0 8px}
  .topbar-name{display:none}
  .nav-toggle{display:inline-flex}
  .content{padding:20px 16px 32px}
  .sidebar{position:fixed;top:0;left:0;bottom:0;width:min(300px,85vw);height:auto;z-index:70;transform:translateX(-100%);transition:transform .2s ease;box-shadow:none;padding-top:20px}
  .sidebar.open{transform:none;box-shadow:var(--shadow-2)}
  .sidebar-backdrop{display:block;position:fixed;inset:0;z-index:65;background:rgba(10,20,30,.45)}
  .sidebar-backdrop[hidden]{display:none}
  body.has-tabbar .sidebar,body.has-tabbar .nav-toggle{display:none}
  body.has-tabbar .content{padding-bottom:calc(var(--nav-h) + var(--safe-b) + 24px)}
  .tabbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:50;height:calc(var(--nav-h) + var(--safe-b));padding-bottom:var(--safe-b);background:var(--surface);border-top:1px solid var(--line)}
  .tabbar a,.tabbar button{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:11px;font-weight:700;color:var(--ink-3);text-decoration:none;background:none;border:0;padding:6px 2px}
  .tabbar .i{width:22px;height:22px}
  .tabbar [aria-current],.tabbar .active{color:var(--brand-primary)}
  h1{font-size:26px}
  .card{padding:18px}
  .brand{font-size:18px}
  .brand-logo{height:30px}
  .toasts{bottom:calc(var(--nav-h) + var(--safe-b) + 12px)}
}

/* Toasts */
.toasts{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:1000;display:flex;flex-direction:column;gap:8px;width:min(480px,calc(100vw - 32px));pointer-events:none}
.ui-toast{display:flex;align-items:flex-start;gap:10px;background:var(--ink);color:var(--brand-bg);padding:12px 14px;border-radius:var(--radius);box-shadow:var(--shadow-2);font-weight:600;pointer-events:auto;animation:toast-in .2s ease}
.ui-toast .i{width:20px;height:20px;margin-top:2px}
.ui-toast.success .i{color:var(--ok)}.ui-toast.error{background:var(--danger);color:#fff}.ui-toast.info .i{color:var(--info)}
.ui-toast-text{flex:1;white-space:pre-line;overflow-wrap:anywhere}
.ui-toast-action{background:transparent;border:1px solid currentColor;color:inherit;border-radius:var(--radius-sm);padding:2px 10px;font-weight:800;font-size:13px}
.ui-toast-close{background:transparent;border:0;color:inherit;padding:0;opacity:.8;display:inline-flex}
.ui-toast-close .i{width:18px;height:18px}
@keyframes toast-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* Dialogs */
dialog.ui-dialog{border:0;border-radius:var(--radius-lg);padding:0;width:min(520px,calc(100vw - 32px));background:var(--surface);color:var(--ink);box-shadow:var(--shadow-2)}
dialog.ui-dialog::backdrop{background:rgba(10,20,30,.55)}
.ui-dialog form,.ui-dialog-body{padding:24px}
.ui-dialog h2{font-size:20px;margin-bottom:8px}
.ui-dialog-text{color:var(--ink-2)}
.ui-dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px;flex-wrap:wrap}
.ui-dialog-error{margin:12px 0 0;font-weight:700}
dialog.sheet{width:100%;max-width:100%;margin:auto auto 0;border-radius:20px 20px 0 0;animation:sheet-in .2s ease}
@keyframes sheet-in{from{transform:translateY(20px);opacity:0}to{transform:none;opacity:1}}
@media (min-width: 900px){dialog.sheet{width:min(420px,calc(100vw - 32px));margin:auto;border-radius:var(--radius-lg)}}

/* Chips, skeletons, empty states, tabs */
.chip{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:var(--radius-pill);font-size:12px;font-weight:800;background:var(--surface-2);color:var(--ink-2);white-space:nowrap}
.chip .i{width:14px;height:14px}
.btn-close-chip{border:0;background:transparent;color:inherit;font-weight:800;line-height:1;padding:0 0 0 6px;cursor:pointer}
.chip.ok{background:var(--ok-soft);color:var(--ok)}.chip.warn{background:var(--warn-soft);color:var(--warn)}.chip.danger{background:var(--danger-soft);color:var(--danger)}.chip.info{background:var(--info-soft);color:var(--info)}.chip.brand{background:var(--brand-primary-soft);color:var(--brand-primary)}
.skeleton{background:linear-gradient(90deg,var(--surface-2) 25%,var(--line) 50%,var(--surface-2) 75%);background-size:200% 100%;animation:shimmer 1.2s infinite;border-radius:8px;height:14px;margin:10px 0}
.skeleton.title{height:22px;width:50%}.skeleton.card{height:110px;border-radius:var(--radius-lg)}
@keyframes shimmer{from{background-position:200% 0}to{background-position:-200% 0}}
.empty{text-align:center;padding:32px 16px;color:var(--ink-2)}
.empty svg{width:150px;height:112px;margin-bottom:12px}
.empty h3{font-size:18px;color:var(--ink)}
.empty p{max-width:420px;margin:0 auto 14px}
[role="tablist"]{display:flex;gap:4px;border-bottom:1px solid var(--line);overflow-x:auto;margin:16px 0}
[role="tab"]{background:none;border:0;border-bottom:2px solid transparent;margin-bottom:-1px;padding:10px 14px;font-weight:700;color:var(--ink-2);white-space:nowrap}
[role="tab"][aria-selected="true"]{color:var(--brand-primary);border-bottom-color:var(--brand-primary)}
[role="tabpanel"][hidden]{display:none}
.field-error{font-size:14px;font-weight:700;color:var(--danger);margin:4px 0 0}
.form-control[aria-invalid="true"],.form-select[aria-invalid="true"]{border-color:var(--danger)}

/* Lightbox and filter chips */
dialog.ui-dialog.lightbox{width:min(960px,calc(100vw - 32px))}
.ui-lightbox{padding:12px}
.ui-lightbox-image{display:block;width:100%;max-height:75vh;object-fit:contain;border-radius:8px;background:#000}
.ui-lightbox-caption{margin:10px 4px 0;color:var(--ink-2)}
.chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.chip-toggle{border:1px solid var(--line);background:var(--surface);color:var(--ink-2);border-radius:var(--radius-pill);padding:5px 14px;font-weight:700;font-size:13px}
.chip-toggle[aria-pressed="true"]{background:var(--brand-primary);border-color:var(--brand-primary);color:var(--brand-on-primary)}
