/* Bridges Spatial Light v1
   Foundation-only visual system for the Hybrid Navigator and future Home/World shells.
   Scoped under .bridges-spatial-* so loading this file has no effect until a consumer mounts it. */
:root{
  --bs-page:#f7f8fa;
  --bs-surface:#ffffff;
  --bs-surface-soft:#f3f5f9;
  --bs-text:#0f172a;
  --bs-text-2:#475569;
  --bs-muted:#64748b;
  --bs-border:#e2e8f0;
  --bs-border-strong:#cbd5e1;
  --bs-brand:#4f46e5;
  --bs-brand-2:#7c3aed;
  --bs-focus:#4338ca;
  --bs-shadow-1:0 1px 2px rgba(15,23,42,.04);
  --bs-shadow-2:0 8px 24px rgba(15,23,42,.08);
  --bs-shadow-3:0 18px 54px rgba(15,23,42,.12);
  --bs-radius-sm:12px;
  --bs-radius-md:18px;
  --bs-radius-lg:26px;
  --bs-radius-xl:32px;
  --bs-rail-wide:188px;
  --bs-rail-compact:72px;
  --bs-touch:44px;
}
.bridges-spatial-nav{
  --door-accent:#4f46e5;
  --door-soft:#eef2ff;
  color:var(--bs-text);
  font:inherit;
}
.bridges-spatial-nav *{box-sizing:border-box}
.bridges-spatial-nav button{font:inherit}
.bridges-spatial-nav :where(button,[tabindex]):focus-visible{
  outline:3px solid color-mix(in srgb,var(--door-accent) 34%,#fff 66%);
  outline-offset:3px;
}
.bridges-spatial-nav[data-accent="amber"]{--door-accent:#d97706;--door-soft:#fff7ed}
.bridges-spatial-nav[data-accent="terracotta"]{--door-accent:#c65d3a;--door-soft:#fff1ec}
.bridges-spatial-nav[data-accent="emerald"]{--door-accent:#059669;--door-soft:#ecfdf5}
.bridges-spatial-nav[data-accent="indigo"]{--door-accent:#4f46e5;--door-soft:#eef2ff}
.bridges-spatial-nav[data-accent="violet"]{--door-accent:#7c3aed;--door-soft:#f5f3ff}
.bridges-spatial-nav[data-accent="blue"]{--door-accent:#2563eb;--door-soft:#eff6ff}

.bridges-spatial-nav--rail{
  width:var(--bs-rail-wide);
  min-width:var(--bs-rail-wide);
  display:flex;
  flex-direction:column;
  gap:12px;
  padding:12px;
  border:1px solid var(--bs-border);
  border-radius:24px;
  background:rgba(255,255,255,.94);
  box-shadow:var(--bs-shadow-2);
  backdrop-filter:blur(16px);
  -webkit-backdrop-filter:blur(16px);
  transition:width .18s ease,min-width .18s ease;
}
.bridges-spatial-nav--rail[data-collapsed="true"]{
  width:var(--bs-rail-compact);
  min-width:var(--bs-rail-compact);
}
.bridges-spatial-nav__brand{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  min-height:44px;
  padding:4px 2px 8px;
  border-bottom:1px solid var(--bs-border);
}
.bridges-spatial-nav__brand strong{
  font-size:14px;
  letter-spacing:-.01em;
  white-space:nowrap;
}
.bridges-spatial-nav__collapse{
  width:40px;height:40px;
  border:1px solid var(--bs-border);
  border-radius:12px;
  background:#fff;
  color:var(--bs-text-2);
  display:grid;
  place-items:center;
  cursor:pointer;
}
.bridges-spatial-nav__collapse:hover{background:var(--bs-surface-soft);color:var(--bs-brand)}
.bridges-spatial-nav__list{display:grid;gap:6px}
.bridges-spatial-nav__door{
  position:relative;
  width:100%;
  min-height:48px;
  border:1px solid transparent;
  border-radius:15px;
  padding:8px 10px;
  background:transparent;
  color:var(--bs-text-2);
  display:flex;
  align-items:center;
  gap:10px;
  text-align:start;
  cursor:pointer;
  transition:background .14s ease,border-color .14s ease,color .14s ease,transform .14s ease;
}
.bridges-spatial-nav__door:hover{background:#f8fafc;border-color:var(--bs-border);color:var(--bs-text)}
.bridges-spatial-nav__door:active{transform:scale(.985)}
.bridges-spatial-nav__door[aria-current="page"]{
  background:var(--door-soft);
  border-color:color-mix(in srgb,var(--door-accent) 28%,#fff 72%);
  color:color-mix(in srgb,var(--door-accent) 78%,#0f172a 22%);
  box-shadow:inset 3px 0 0 var(--door-accent);
}
[dir="rtl"] .bridges-spatial-nav__door[aria-current="page"]{box-shadow:inset -3px 0 0 var(--door-accent)}
.bridges-spatial-nav__icon{
  width:34px;height:34px;flex:0 0 34px;
  border-radius:11px;
  display:grid;place-items:center;
  color:var(--door-accent);
  background:color-mix(in srgb,var(--door-soft) 86%,#fff 14%);
}
.bridges-spatial-nav__icon svg{width:19px;height:19px;display:block}
.bridges-spatial-nav__label{
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:13px;
  font-weight:760;
}
.bridges-spatial-nav--rail[data-collapsed="true"] .bridges-spatial-nav__brand strong,
.bridges-spatial-nav--rail[data-collapsed="true"] .bridges-spatial-nav__label{display:none}
.bridges-spatial-nav--rail[data-collapsed="true"] .bridges-spatial-nav__door{justify-content:center;padding-inline:7px}
.bridges-spatial-nav--rail[data-collapsed="true"] .bridges-spatial-nav__collapse{transform:rotate(180deg)}
[dir="rtl"] .bridges-spatial-nav--rail[data-collapsed="true"] .bridges-spatial-nav__collapse{transform:rotate(0deg)}

.bridges-spatial-nav__branches{
  display:grid;
  gap:5px;
  margin:1px 0 4px;
  padding-inline-start:44px;
}
[dir="rtl"] .bridges-spatial-nav__branches{padding-inline-start:0;padding-inline-end:44px}
.bridges-spatial-nav__branch{
  min-height:36px;
  border:0;
  border-radius:10px;
  padding:7px 9px;
  background:transparent;
  color:var(--bs-muted);
  text-align:start;
  font-size:12px;
  font-weight:700;
  cursor:pointer;
}
.bridges-spatial-nav__branch:hover,
.bridges-spatial-nav__branch[aria-current="page"]{background:var(--door-soft);color:var(--door-accent)}
.bridges-spatial-nav--rail[data-collapsed="true"] .bridges-spatial-nav__branches{display:none}

/* Full visual Navigator */
.bridges-spatial-nav--full{
  width:100%;
  max-width:1180px;
  margin-inline:auto;
  padding:clamp(18px,3vw,38px);
  border:1px solid var(--bs-border);
  border-radius:var(--bs-radius-xl);
  background:
    radial-gradient(circle at 10% 0%,rgba(79,70,229,.08),transparent 28%),
    radial-gradient(circle at 100% 10%,rgba(124,58,237,.06),transparent 26%),
    #fff;
  box-shadow:var(--bs-shadow-3);
}
.bridges-spatial-nav__header{max-width:760px;margin-bottom:24px}
.bridges-spatial-nav__eyebrow{
  display:inline-flex;
  align-items:center;
  gap:8px;
  margin-bottom:8px;
  color:var(--bs-brand);
  font-size:11px;
  font-weight:850;
  letter-spacing:.12em;
  text-transform:uppercase;
}
.bridges-spatial-nav__title{margin:0;font-size:clamp(30px,4vw,48px);line-height:1.05;letter-spacing:-.035em}
.bridges-spatial-nav__sub{margin:10px 0 0;color:var(--bs-muted);line-height:1.6}
.bridges-spatial-nav__grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:14px;
}
.bridges-spatial-nav__card{
  --door-accent:#4f46e5;
  --door-soft:#eef2ff;
  position:relative;
  overflow:hidden;
  min-height:180px;
  border:1px solid var(--bs-border);
  border-radius:24px;
  padding:18px;
  background:linear-gradient(180deg,#fff 0%,color-mix(in srgb,var(--door-soft) 48%,#fff 52%) 100%);
  color:var(--bs-text);
  text-align:start;
  cursor:pointer;
  box-shadow:var(--bs-shadow-1);
  transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease;
}
.bridges-spatial-nav__card:hover{
  transform:translateY(-2px);
  border-color:color-mix(in srgb,var(--door-accent) 28%,#fff 72%);
  box-shadow:var(--bs-shadow-2);
}
.bridges-spatial-nav__card:before{
  content:"";
  position:absolute;
  width:120px;height:120px;
  inset:auto -34px -40px auto;
  border-radius:50%;
  background:var(--door-accent);
  opacity:.10;
  filter:blur(3px);
}
[dir="rtl"] .bridges-spatial-nav__card:before{inset:auto auto -40px -34px}
.bridges-spatial-nav__card .bridges-spatial-nav__icon{width:48px;height:48px;border-radius:16px}
.bridges-spatial-nav__card .bridges-spatial-nav__icon svg{width:24px;height:24px}
.bridges-spatial-nav__card-copy{position:relative;z-index:1;margin-top:20px}
.bridges-spatial-nav__card-copy strong{display:block;font-size:18px;line-height:1.2}
.bridges-spatial-nav__card-copy small{display:block;margin-top:7px;color:var(--bs-muted);line-height:1.45}
.bridges-spatial-nav__card-arrow{position:absolute;z-index:1;inset-inline-end:16px;bottom:14px;color:var(--door-accent);font-size:22px}

/* Sheet for mobile */
.bridges-spatial-nav-sheet{position:fixed;inset:0;z-index:11000;display:grid;align-items:end}
.bridges-spatial-nav-sheet[hidden]{display:none!important}
.bridges-spatial-nav-sheet__backdrop{position:absolute;inset:0;background:rgba(15,23,42,.34);backdrop-filter:blur(5px)}
.bridges-spatial-nav-sheet__panel{
  position:relative;
  max-height:min(78vh,760px);
  overflow:auto;
  border:1px solid var(--bs-border);
  border-radius:26px 26px 0 0;
  padding:12px 14px calc(18px + env(safe-area-inset-bottom));
  background:#fff;
  box-shadow:0 -18px 54px rgba(15,23,42,.18);
}
.bridges-spatial-nav-sheet__handle{width:42px;height:4px;border-radius:99px;background:#cbd5e1;margin:2px auto 12px}
.bridges-spatial-nav-sheet__top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
.bridges-spatial-nav-sheet__top h2{margin:0;font-size:19px}
.bridges-spatial-nav-sheet__close{width:42px;height:42px;border:1px solid var(--bs-border);border-radius:13px;background:#fff;color:var(--bs-text);cursor:pointer}
.bridges-spatial-nav-sheet__doors{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.bridges-spatial-nav-sheet .bridges-spatial-nav__door{min-height:58px;border-color:var(--bs-border);background:#fff}
.bridges-spatial-nav-sheet .bridges-spatial-nav__branches{
  grid-column:1/-1;
  padding:8px;
  margin:0 0 4px;
  border:1px solid var(--bs-border);
  border-radius:14px;
  background:var(--bs-surface-soft);
  grid-template-columns:repeat(2,minmax(0,1fr));
}

@media(max-width:1080px){
  .bridges-spatial-nav__grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .bridges-spatial-nav--rail{width:var(--bs-rail-compact);min-width:var(--bs-rail-compact)}
  .bridges-spatial-nav--rail .bridges-spatial-nav__brand strong,
  .bridges-spatial-nav--rail .bridges-spatial-nav__label,
  .bridges-spatial-nav--rail .bridges-spatial-nav__branches{display:none}
  .bridges-spatial-nav--rail .bridges-spatial-nav__door{justify-content:center;padding-inline:7px}
}
@media(max-width:760px){
  .bridges-spatial-nav--full{padding:18px;border-radius:24px}
  .bridges-spatial-nav__grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
  .bridges-spatial-nav__card{min-height:150px;padding:14px;border-radius:20px}
  .bridges-spatial-nav__card-copy{margin-top:14px}
}
@media(max-width:420px){
  .bridges-spatial-nav__grid{grid-template-columns:1fr}
  .bridges-spatial-nav-sheet__doors{grid-template-columns:1fr}
  .bridges-spatial-nav-sheet .bridges-spatial-nav__branches{grid-template-columns:1fr}
}
@media(prefers-reduced-motion:reduce){
  .bridges-spatial-nav--rail,
  .bridges-spatial-nav__door,
  .bridges-spatial-nav__card{transition:none}
}
