/* ─────────────────────────────────────────────────────────────────────────
   GLOBAL LEGAL INTELLIGENCE GLOBE  —  "Intelligence Terminal" feature
   ConsumerSuit static site. Self-contained; class prefix `gt-`.
   Aesthetic bridge: dark-navy intel terminal (the globe shell) + the
   site-wide warm "case-file" paper for the declassified document cards.
   Palette anchored to premium-dark.css:
     navy   #1a2332   ink   #242a31   paper #faf7f0 / #fffdf7
     brick  #c1502e   line  #e3dccb   terminal-green #5fe3a1
   Serif headlines (Playfair / Source Serif), monospace for the terminal HUD.
   No drop shadows on paper cards; hairline borders; corners ≤4px.
   ───────────────────────────────────────────────────────────────────────── */

@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@600;700;800&family=Source+Serif+4:ital@0;1&family=IBM+Plex+Mono:wght@400;500;600&display=swap');

:root{
  --gt-navy:#1a2332;
  --gt-navy-2:#141b28;
  --gt-navy-3:#0f1622;
  --gt-ink:#242a31;
  --gt-paper:#faf7f0;
  --gt-paper-2:#fffdf7;
  --gt-paper-aged:#f3ead7;
  --gt-line:#e3dccb;
  --gt-line2:#d6ccb6;
  --gt-muted:#6b6859;
  --gt-brick:#c1502e;
  --gt-brick-d:#a8401f;
  --gt-term:#5fe3a1;        /* terminal teal-green */
  --gt-term-dim:#3aa877;
  --gt-term-glow:rgba(95,227,161,.45);
  --gt-mono:'IBM Plex Mono','SFMono-Regular',Consolas,'Liberation Mono',Menlo,monospace;
  --gt-serif:'Playfair Display',Georgia,serif;
  --gt-serif-body:'Source Serif 4',Georgia,serif;
}

/* ───────────────────────────── OVERLAY SHELL ───────────────────────────── */
#globe-terminal{
  position:fixed; inset:0; z-index:9000;
  background:var(--gt-navy);
  background:
    radial-gradient(1200px 800px at 50% 38%, #243049 0%, var(--gt-navy) 55%, var(--gt-navy-3) 100%);
  color:#e7ecf3;
  font-family:var(--gt-mono);
  overflow:hidden;
  display:none;                 /* toggled to flex/ block by JS when opened */
  flex-direction:column;
  -webkit-font-smoothing:antialiased;
}
#globe-terminal.gt-open{ display:flex; }

/* faint technical grid + scanline texture over the navy */
#globe-terminal::before{
  content:""; position:absolute; inset:0; pointer-events:none; z-index:0;
  background-image:
    linear-gradient(rgba(95,227,161,.045) 1px, transparent 1px),
    linear-gradient(90deg, rgba(95,227,161,.045) 1px, transparent 1px);
  background-size:46px 46px;
  mask-image:radial-gradient(closest-side at 50% 45%, #000 60%, transparent 100%);
  -webkit-mask-image:radial-gradient(closest-side at 50% 45%, #000 60%, transparent 100%);
}
#globe-terminal::after{
  content:""; position:absolute; inset:0; pointer-events:none; z-index:1;
  background:repeating-linear-gradient(
    to bottom, transparent 0, transparent 2px, rgba(0,0,0,.035) 3px, transparent 4px);
  opacity:.5;
}

/* corner registration ticks — intel HUD framing */
.gt-frame{ position:absolute; inset:18px; pointer-events:none; z-index:2;
  border:1px solid rgba(95,227,161,.12); }
.gt-frame::before,.gt-frame::after{
  content:""; position:absolute; width:18px; height:18px;
  border:2px solid var(--gt-term-dim); opacity:.6;
}
.gt-frame::before{ top:-1px; left:-1px; border-right:0; border-bottom:0; }
.gt-frame::after{ bottom:-1px; right:-1px; border-left:0; border-top:0; }

/* ───────────────────────────── GLOBE MOUNT ───────────────────────────── */
#gt-globe{
  position:absolute; inset:0; z-index:3;
  display:flex; align-items:center; justify-content:center;
  touch-action:none;
}
#gt-globe canvas{ display:block; max-width:100%; max-height:100%; }

/* subtle vignette so the globe reads against the chrome */
.gt-vignette{ position:absolute; inset:0; z-index:4; pointer-events:none;
  background:radial-gradient(closest-side at 50% 48%, transparent 60%, rgba(8,12,20,.55) 100%); }

/* ───────────────────────────── SEARCH BAR ───────────────────────────── */
.gt-search{
  position:absolute; top:30px; left:50%; transform:translateX(-50%);
  z-index:20; width:min(620px,86vw);
  display:flex; align-items:center; gap:.6ch;
  padding:12px 16px;
  background:rgba(10,15,24,.86);
  border:1px solid var(--gt-term-dim);
  border-radius:3px;
  box-shadow:0 0 0 1px rgba(95,227,161,.12), 0 0 22px -6px var(--gt-term-glow);
  backdrop-filter:blur(4px);
}
.gt-search .gt-prompt{
  font-family:var(--gt-mono); font-weight:600; font-size:15px;
  color:var(--gt-term); letter-spacing:.04em; user-select:none;
  text-shadow:0 0 8px var(--gt-term-glow);
}
.gt-search input{
  flex:1; min-width:0;
  background:transparent; border:0; outline:0;
  font-family:var(--gt-mono); font-size:15px; letter-spacing:.02em;
  color:var(--gt-term); caret-color:transparent;
}
.gt-search input::placeholder{ color:rgba(95,227,161,.4); }
.gt-search .gt-cursor{
  width:9px; height:1.15em; flex:0 0 auto;
  background:var(--gt-term);
  box-shadow:0 0 8px var(--gt-term-glow);
  animation:gt-blink 1.05s steps(1) infinite;
}
@keyframes gt-blink{ 0%,49%{opacity:1} 50%,100%{opacity:0} }

/* autocomplete / results dropdown under the search */
.gt-results{
  position:absolute; top:calc(100% + 6px); left:0; right:0;
  background:rgba(10,15,24,.95);
  border:1px solid var(--gt-term-dim); border-radius:3px;
  max-height:46vh; overflow:auto; z-index:21;
  font-family:var(--gt-mono); font-size:13px;
}
.gt-results:empty{ display:none; }
.gt-results .gt-res{
  padding:9px 16px; color:#cfe9dc; cursor:pointer;
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  border-bottom:1px solid rgba(95,227,161,.08);
}
.gt-results .gt-res:last-child{ border-bottom:0; }
.gt-results .gt-res:hover,.gt-results .gt-res[aria-selected="true"]{
  background:rgba(95,227,161,.1); color:var(--gt-term); }
.gt-results .gt-res .gt-tag{
  font-size:10px; letter-spacing:.12em; padding:1px 6px; border-radius:2px;
  border:1px solid currentColor; opacity:.7; text-transform:uppercase; }
.gt-res.is-live .gt-tag{ color:var(--gt-term); }
.gt-res.is-soon .gt-tag{ color:var(--gt-brick); }

/* ───────────────────────────── CLOSE / BACK ───────────────────────────── */
.gt-close{
  position:absolute; top:28px; right:28px; z-index:30;
  width:40px; height:40px;
  display:flex; align-items:center; justify-content:center;
  font-family:var(--gt-mono); font-size:20px; line-height:1;
  color:var(--gt-term); cursor:pointer;
  background:rgba(10,15,24,.8);
  border:1px solid var(--gt-term-dim); border-radius:3px;
  transition:background .15s ease, color .15s ease, transform .15s ease;
}
.gt-close:hover{ background:var(--gt-term); color:var(--gt-navy); transform:rotate(90deg); }
.gt-close:focus-visible{ outline:2px solid var(--gt-term); outline-offset:2px; }

.gt-back{
  position:absolute; left:28px; bottom:28px; z-index:30;
  display:inline-flex; align-items:center; gap:8px;
  padding:9px 15px;
  font-family:var(--gt-mono); font-size:12px; letter-spacing:.1em; text-transform:uppercase;
  color:var(--gt-term); cursor:pointer;
  background:rgba(10,15,24,.8);
  border:1px solid var(--gt-term-dim); border-radius:3px;
  transition:background .15s ease, color .15s ease;
}
.gt-back::before{ content:"←"; font-size:14px; }
.gt-back:hover{ background:rgba(95,227,161,.12); }
.gt-back:focus-visible{ outline:2px solid var(--gt-term); outline-offset:2px; }

/* ────────────────────── DECLASSIFIED FILE CARD ────────────────────────── */
.gt-card{
  position:absolute; top:0; right:0; bottom:0; z-index:25;
  width:min(440px,92vw);
  display:flex; flex-direction:column;
  background:var(--gt-paper);
  background-image:
    radial-gradient(120% 80% at 100% 0%, rgba(193,80,46,.05), transparent 60%),
    radial-gradient(100% 60% at 0% 100%, rgba(36,42,49,.05), transparent 60%);
  color:var(--gt-ink);
  border-left:1px solid var(--gt-line2);
  box-shadow:-18px 0 40px -28px rgba(0,0,0,.55);
  font-family:var(--gt-serif-body);
  overflow:hidden;
  /* slide-in driven by .gt-show toggle */
  transform:translateX(102%);
  transition:transform .42s cubic-bezier(.22,.61,.36,1);
}
.gt-card.gt-show{ transform:translateX(0); }

/* aged-paper fibre + faint coffee-ring texture */
.gt-card::before{
  content:""; position:absolute; inset:0; pointer-events:none; opacity:.5;
  background-image:
    radial-gradient(circle at 18% 12%, rgba(160,120,60,.06) 0 2px, transparent 3px),
    radial-gradient(circle at 78% 64%, rgba(160,120,60,.05) 0 2px, transparent 3px),
    radial-gradient(closest-side at 88% 22%, rgba(140,90,40,.07), transparent 70%);
  background-size:140px 140px, 200px 200px, 100% 100%;
}

.gt-card-scroll{ position:relative; z-index:1; overflow:auto; padding:34px 30px 40px; }

/* file header — manila tab + reference line */
.gt-card-head{
  display:flex; align-items:flex-start; justify-content:space-between; gap:16px;
  padding-bottom:14px; margin-bottom:18px;
  border-bottom:2px solid var(--gt-ink);
}
.gt-card-ref{
  font-family:var(--gt-mono); font-size:11px; letter-spacing:.16em;
  text-transform:uppercase; color:var(--gt-muted);
}
.gt-card-flag{ width:34px; height:22px; flex:0 0 auto; border:1px solid var(--gt-line2);
  background:var(--gt-paper-2); object-fit:cover; }
.gt-card h2{
  font-family:var(--gt-serif); font-weight:800; font-size:27px; line-height:1.08;
  letter-spacing:-.01em; color:var(--gt-ink); margin:4px 0 2px;
}
.gt-card .gt-sub{
  font-family:var(--gt-mono); font-size:11px; letter-spacing:.14em;
  text-transform:uppercase; color:var(--gt-muted);
}

/* ── RUBBER STAMPS ─────────────────────────────────────────────────────── */
.gt-stamp{
  display:inline-block; align-self:flex-start;
  font-family:var(--gt-mono); font-weight:700;
  letter-spacing:.18em; text-transform:uppercase;
  color:var(--gt-brick);
  padding:7px 14px;
  border:3px solid var(--gt-brick);
  border-radius:3px;
  /* distressed double-border look */
  box-shadow:0 0 0 1px var(--gt-brick) inset, 1px 1px 0 -.5px var(--gt-brick);
  transform:rotate(-8deg);
  opacity:.86;
  /* ink-bleed / worn edges */
  mix-blend-mode:multiply;
  -webkit-mask-image:
    radial-gradient(circle at 12% 20%, transparent 0 1.5px, #000 2px),
    radial-gradient(circle at 84% 70%, transparent 0 1.5px, #000 2px),
    radial-gradient(circle at 50% 95%, transparent 0 1px, #000 1.5px);
  mask-image:
    radial-gradient(circle at 12% 20%, transparent 0 1.5px, #000 2px),
    radial-gradient(circle at 84% 70%, transparent 0 1.5px, #000 2px),
    radial-gradient(circle at 50% 95%, transparent 0 1px, #000 1.5px);
  -webkit-mask-composite:source-over; mask-composite:add;
}
.gt-stamp--lg{ font-size:18px; padding:9px 18px; }
.gt-stamp--declassified{ color:var(--gt-brick); border-color:var(--gt-brick); }
.gt-stamp--confidential{ transform:rotate(-6deg); }
.gt-stamp--classified{ transform:rotate(-9deg); opacity:.8; }
/* floating stamp variant pinned over the card corner */
.gt-stamp.gt-stamp--pinned{
  position:absolute; top:88px; right:24px; z-index:3; transform:rotate(-12deg);
}

/* ── category / law list inside the file ──────────────────────────────── */
.gt-cat{ margin:22px 0 8px; }
.gt-cat-label{
  font-family:var(--gt-mono); font-size:11px; font-weight:600;
  letter-spacing:.2em; color:var(--gt-brick-d);
  padding-bottom:6px; margin-bottom:10px;
  border-bottom:1px dashed var(--gt-line2);
}
.gt-law{
  border:1px solid var(--gt-line); border-radius:3px;
  background:var(--gt-paper-2);
  padding:13px 15px; margin-bottom:10px;
  cursor:pointer;
  transition:border-color .15s ease, background .15s ease, transform .12s ease;
}
.gt-law:hover{ border-color:var(--gt-brick); background:#fff; transform:translateX(-2px); }
.gt-law:focus-visible{ outline:2px solid var(--gt-brick); outline-offset:2px; }
.gt-law-name{
  font-family:var(--gt-serif); font-weight:700; font-size:17px; line-height:1.2;
  color:var(--gt-ink);
}
.gt-law-meta{
  display:flex; align-items:center; gap:8px; margin-top:5px;
  font-family:var(--gt-mono); font-size:10px; letter-spacing:.1em;
  text-transform:uppercase; color:var(--gt-muted);
}
.gt-law-meta .gt-chev{ margin-left:auto; color:var(--gt-brick); }

/* "coming soon" message body for undeveloped jurisdictions */
.gt-soon-msg{
  margin-top:20px; padding:16px 18px;
  font-family:var(--gt-serif-body); font-size:15px; line-height:1.55;
  color:var(--gt-ink);
  background:var(--gt-brick-soft,#f6e7df);
  border:1px solid #ecc9b9; border-left:3px solid var(--gt-brick);
  border-radius:3px;
}

/* ──────────────────── LAW SUMMARY PANEL (slides in) ──────────────────── */
.gt-summary{
  position:absolute; top:0; right:0; bottom:0; z-index:26;
  width:min(520px,96vw);
  display:flex; flex-direction:column;
  background:var(--gt-paper-2);
  color:var(--gt-ink);
  border-left:1px solid var(--gt-line2);
  box-shadow:-22px 0 50px -30px rgba(0,0,0,.6);
  font-family:var(--gt-serif-body);
  transform:translateX(102%);
  transition:transform .42s cubic-bezier(.22,.61,.36,1);
  overflow:hidden;
}
.gt-summary.gt-show{ transform:translateX(0); }
.gt-summary-scroll{ overflow:auto; padding:34px 32px 44px; }
.gt-summary h3{
  font-family:var(--gt-serif); font-weight:800; font-size:25px; line-height:1.12;
  letter-spacing:-.01em; color:var(--gt-ink);
  padding-bottom:12px; margin:6px 0 20px;
  border-bottom:2px solid var(--gt-ink);
}
.gt-summary .gt-eyebrow{
  font-family:var(--gt-mono); font-size:11px; letter-spacing:.16em;
  text-transform:uppercase; color:var(--gt-brick-d);
}
.gt-objectives{ list-style:none; margin:0; padding:0; counter-reset:gt-obj; }
.gt-objectives li{
  position:relative; counter-increment:gt-obj;
  padding:0 0 16px 42px; margin-bottom:16px;
  font-size:15.5px; line-height:1.6; color:var(--gt-ink);
  border-bottom:1px solid var(--gt-line);
}
.gt-objectives li:last-child{ border-bottom:0; margin-bottom:0; }
.gt-objectives li::before{
  content:counter(gt-obj,decimal-leading-zero);
  position:absolute; left:0; top:1px;
  font-family:var(--gt-mono); font-weight:600; font-size:12px;
  color:#fff; background:var(--gt-brick);
  width:26px; height:26px; border-radius:3px;
  display:flex; align-items:center; justify-content:center;
}
.gt-summary-note{
  margin-top:24px; padding-top:16px; border-top:1px dashed var(--gt-line2);
  font-family:var(--gt-mono); font-size:11px; line-height:1.6;
  letter-spacing:.04em; color:var(--gt-muted);
}

/* ─────────────────── HOMEPAGE ENTRY ELEMENT (.gt-entry) ─────────────────── */
.gt-entry{
  display:inline-flex; flex-direction:column; align-items:center; gap:14px;
  background:none; border:0; cursor:pointer;
  font-family:var(--gt-mono); color:var(--gt-ink);
  padding:6px;
}
.gt-entry-dial{
  position:relative; width:104px; height:104px; border-radius:50%;
  background:
    radial-gradient(circle at 50% 38%, #243049, var(--gt-navy) 70%);
  border:2px solid var(--gt-navy);
  box-shadow:0 0 0 1px var(--gt-line) inset, 0 6px 24px -14px rgba(0,0,0,.5);
  display:flex; align-items:center; justify-content:center;
  transition:transform .3s cubic-bezier(.22,.61,.36,1), box-shadow .3s ease;
}
/* compass tick ring */
.gt-entry-dial::before{
  content:""; position:absolute; inset:9px; border-radius:50%;
  background:
    repeating-conic-gradient(from 0deg,
      var(--gt-term-dim) 0deg 1deg, transparent 1deg 15deg);
  -webkit-mask:radial-gradient(circle, transparent 60%, #000 61% 70%, transparent 71%);
  mask:radial-gradient(circle, transparent 60%, #000 61% 70%, transparent 71%);
  opacity:.55;
}
/* meridian/parallel globe lines */
.gt-entry-dial::after{
  content:""; position:absolute; inset:22px; border-radius:50%;
  border:1px solid var(--gt-term-dim);
  background:
    linear-gradient(var(--gt-term-dim),var(--gt-term-dim)) 50% 0/1px 100% no-repeat,
    linear-gradient(90deg,var(--gt-term-dim),var(--gt-term-dim)) 0 50%/100% 1px no-repeat,
    radial-gradient(circle, transparent 48%, var(--gt-term-dim) 49% 50%, transparent 51%);
  opacity:.5;
}
/* compass needle */
.gt-entry-needle{
  position:relative; z-index:1; width:0; height:0;
  border-left:7px solid transparent; border-right:7px solid transparent;
  border-bottom:30px solid var(--gt-brick);
  filter:drop-shadow(0 0 5px rgba(193,80,46,.5));
  transition:transform .5s cubic-bezier(.22,.61,.36,1);
}
.gt-entry:hover .gt-entry-dial{ transform:scale(1.05); box-shadow:0 0 0 1px var(--gt-term-dim) inset, 0 0 26px -8px var(--gt-term-glow); }
.gt-entry:hover .gt-entry-needle{ transform:rotate(38deg); }
.gt-entry:focus-visible .gt-entry-dial{ outline:2px solid var(--gt-brick); outline-offset:4px; }

.gt-entry-label{
  font-size:11px; font-weight:600; letter-spacing:.22em; text-transform:uppercase;
  color:var(--gt-ink);
  padding:5px 12px;
  border:1px solid var(--gt-line2); border-radius:3px;
  background:var(--gt-paper-2);
  position:relative;
}
/* small technical corner notches on the label, like a stamped plate */
.gt-entry-label::before,.gt-entry-label::after{
  content:""; position:absolute; width:5px; height:5px; border:1px solid var(--gt-brick); }
.gt-entry-label::before{ top:-1px; left:-1px; border-right:0; border-bottom:0; }
.gt-entry-label::after{ bottom:-1px; right:-1px; border-left:0; border-top:0; }

/* ───────────────────── ENTRANCE / EXIT TRANSITIONS ────────────────────── */
/* Opening: whole terminal zooms in; bg → search → globe fade in staggered. */
#globe-terminal.gt-open{ animation:gt-zoom-in .5s cubic-bezier(.22,.61,.36,1) both; }
#globe-terminal.gt-exiting{ animation:gt-zoom-out .38s cubic-bezier(.55,.06,.68,.19) both; }

@keyframes gt-zoom-in{
  from{ opacity:0; transform:scale(1.08); filter:blur(6px); }
  to{ opacity:1; transform:scale(1); filter:blur(0); }
}
@keyframes gt-zoom-out{
  from{ opacity:1; transform:scale(1); filter:blur(0); }
  to{ opacity:0; transform:scale(1.05); filter:blur(6px); }
}

/* staggered children — JS adds .gt-entering on the overlay; pieces ride delays */
#globe-terminal.gt-open .gt-frame{ animation:gt-fade-up .5s ease both; animation-delay:.00s; }
#globe-terminal.gt-open .gt-search{ animation:gt-fade-down .5s ease both; animation-delay:.10s; }
#globe-terminal.gt-open #gt-globe{ animation:gt-fade-in .6s ease both; animation-delay:.20s; }
#globe-terminal.gt-open .gt-close,
#globe-terminal.gt-open .gt-back{ animation:gt-fade-in .5s ease both; animation-delay:.30s; }

@keyframes gt-fade-in{ from{opacity:0} to{opacity:1} }
@keyframes gt-fade-up{ from{opacity:0; transform:translateY(10px)} to{opacity:1; transform:translateY(0)} }
@keyframes gt-fade-down{
  from{opacity:0; transform:translate(-50%,-12px)}
  to{opacity:1; transform:translate(-50%,0)}
}

/* stamp "thunk" — plays when a card is shown */
.gt-card.gt-show .gt-stamp{ animation:gt-stamp-in .32s cubic-bezier(.34,1.56,.64,1) both; animation-delay:.18s; }
@keyframes gt-stamp-in{
  0%{ opacity:0; transform:rotate(-8deg) scale(1.9); }
  60%{ opacity:.95; }
  100%{ opacity:.86; transform:rotate(-8deg) scale(1); }
}
.gt-stamp--confidential{ }
.gt-card.gt-show .gt-stamp--confidential{ animation-name:gt-stamp-in-6; }
@keyframes gt-stamp-in-6{
  0%{ opacity:0; transform:rotate(-6deg) scale(1.9); }
  60%{ opacity:.95; }
  100%{ opacity:.86; transform:rotate(-6deg) scale(1); }
}

/* ───────────────────────── REDUCED MOTION ───────────────────────────── */
@media (prefers-reduced-motion: reduce){
  #globe-terminal,
  #globe-terminal *,
  #globe-terminal::before,
  #globe-terminal::after{
    animation:none !important;
    transition:none !important;
  }
  .gt-card,.gt-summary{ transform:none; }
  .gt-card:not(.gt-show),.gt-summary:not(.gt-show){ display:none; }
  .gt-search .gt-cursor{ opacity:1; animation:none; }
  .gt-stamp{ transform:rotate(-8deg) scale(1); opacity:.86; }
}

/* ───────────────────────────── MOBILE ≤640px ─────────────────────────── */
@media (max-width:640px){
  .gt-frame{ inset:10px; }
  .gt-search{ top:16px; width:calc(100vw - 24px); padding:10px 12px; }
  .gt-search .gt-prompt,.gt-search input{ font-size:13px; }
  .gt-close{ top:16px; right:14px; width:34px; height:34px; font-size:17px; }
  .gt-back{ left:14px; bottom:16px; padding:8px 12px; font-size:11px; }

  /* full-width sliding panels on phones */
  .gt-card,.gt-summary{
    top:auto; bottom:0; height:86vh; width:100vw;
    border-left:0; border-top:1px solid var(--gt-line2);
    transform:translateY(102%);
    box-shadow:0 -18px 40px -28px rgba(0,0,0,.55);
  }
  .gt-card.gt-show,.gt-summary.gt-show{ transform:translateY(0); }
  .gt-card-scroll,.gt-summary-scroll{ padding:24px 18px 32px; }
  .gt-card h2{ font-size:22px; }
  .gt-summary h3{ font-size:21px; }
  .gt-stamp--lg{ font-size:15px; padding:7px 13px; }
  .gt-stamp.gt-stamp--pinned{ top:auto; right:16px; }
  .gt-objectives li{ font-size:14.5px; padding-left:38px; }

  .gt-entry-dial{ width:88px; height:88px; }
  .gt-entry-needle{ border-bottom-width:26px; }
  .gt-entry-label{ font-size:10px; letter-spacing:.18em; }

  /* index rail → horizontal scroll strip under the search bar on phones */
  .gt-index{ left:12px; right:12px; top:62px; bottom:auto; width:auto;
    flex-direction:row; align-items:stretch; max-height:54px; }
  .gt-index-head{ display:none; }
  .gt-index-list{ display:flex; gap:6px; overflow-x:auto; overflow-y:hidden; padding:7px 8px; }
  .gt-index-item{ flex:0 0 auto; margin-bottom:0; white-space:nowrap; }
}

/* very small height — collapse panel to most of the screen */
@media (max-height:520px){
  .gt-card,.gt-summary{ height:100vh; }
}

/* ─────────────────────────────────────────────────────────────────────────
   SHIM — align styling to the class names globe.js actually emits.
   (globe.js and globe.css were authored in parallel and diverged on inner
   class names; this maps the emitted classes onto the intended look.)
   ───────────────────────────────────────────────────────────────────────── */
/* card needs its own padding + scroll (JS does not use .gt-card-scroll) */
#globe-terminal .gt-card{ overflow-y:auto; padding:30px 28px 40px; }
.gt-card-kicker{ font-family:var(--gt-mono); font-size:11px; letter-spacing:.18em;
  text-transform:uppercase; color:var(--gt-muted); display:block; }
.gt-card-title{ font-family:var(--gt-serif); font-weight:800; font-size:26px; line-height:1.1;
  letter-spacing:-.01em; color:var(--gt-ink); margin:4px 0 8px; padding-bottom:12px;
  border-bottom:2px solid var(--gt-ink); }
.gt-card-status{ font-family:var(--gt-mono); font-size:11px; letter-spacing:.14em;
  text-transform:uppercase; color:var(--gt-muted); margin-bottom:6px; }
.gt-card-status-live{ color:var(--gt-term-dim); }
.gt-card-categories{ margin-top:8px; }
.gt-card-cat-label{ font-family:var(--gt-mono); font-size:11px; font-weight:600;
  letter-spacing:.2em; text-transform:uppercase; color:var(--gt-brick-d);
  padding-bottom:6px; margin:22px 0 10px; border-bottom:1px dashed var(--gt-line2); }
.gt-card-laws{ list-style:none; margin:0; padding:0; }
.gt-card-law{ display:block; border:1px solid var(--gt-line); border-radius:3px;
  background:var(--gt-paper-2); padding:12px 14px; margin-bottom:10px; cursor:pointer;
  transition:border-color .15s ease, background .15s ease, transform .12s ease; }
.gt-card-law:hover{ border-color:var(--gt-brick); background:#fff; transform:translateX(-2px); }
.gt-card-law:focus-visible{ outline:2px solid var(--gt-brick); outline-offset:2px; }
.gt-card-law-tag{ display:block; font-family:var(--gt-mono); font-size:9px; font-weight:600;
  letter-spacing:.16em; text-transform:uppercase; color:var(--gt-brick); margin-bottom:4px; }
.gt-card-law-name{ display:block; font-family:var(--gt-serif); font-weight:700; font-size:16px;
  line-height:1.22; color:var(--gt-ink); }
.gt-card-laws-solo{ margin-top:14px; }
/* "Related areas" footer in the law summary — sibling laws to explore next */
.gt-summary-related-head{ margin-top:24px; padding-top:18px; border-top:1px dashed var(--gt-line2); }
.gt-summary-related{ margin-top:10px; }

/* ── Browse-by-area index (left rail) ──────────────────────────────────────
   A persistent terminal-style rail listing every England & Wales area of law,
   so users can jump straight to one without finding the marker on the globe.
   Sits below the search/results layers (z) so it never covers them; the file
   card (z-25) wins where they meet. */
.gt-index{
  position:absolute; left:18px; top:96px; bottom:84px; z-index:19;
  width:212px; display:flex; flex-direction:column;
  background:rgba(20,27,40,.72); -webkit-backdrop-filter:blur(3px); backdrop-filter:blur(3px);
  border:1px solid var(--gt-term-dim); border-radius:4px;
  box-shadow:0 0 0 1px rgba(95,227,161,.1), 0 10px 30px -16px rgba(0,0,0,.6);
  font-family:var(--gt-mono); overflow:hidden;
}
.gt-index-head{ flex:0 0 auto; padding:11px 14px; font-size:10px; letter-spacing:.2em;
  text-transform:uppercase; color:var(--gt-term); text-shadow:0 0 8px var(--gt-term-glow);
  border-bottom:1px solid var(--gt-term-dim); }
.gt-index-list{ flex:1 1 auto; overflow-y:auto; padding:6px; }
.gt-index-loading{ padding:10px 8px; font-size:11px; color:rgba(95,227,161,.55); letter-spacing:.04em; }
.gt-index-item{ display:flex; align-items:center; gap:8px; width:100%;
  background:transparent; border:1px solid transparent; border-radius:3px;
  padding:8px 9px; margin-bottom:2px; cursor:pointer; text-align:left;
  color:#cfe9dd; font-family:var(--gt-mono); font-size:12px; letter-spacing:.02em;
  transition:background .14s ease, border-color .14s ease, color .14s ease; }
.gt-index-item:hover{ background:rgba(95,227,161,.1); border-color:var(--gt-term-dim); color:var(--gt-term); }
.gt-index-item:focus-visible{ outline:2px solid var(--gt-term); outline-offset:1px; }
.gt-index-item-active{ background:rgba(193,80,46,.16); border-color:var(--gt-brick); color:#ffd9cc; }
.gt-index-item-label{ flex:1 1 auto; line-height:1.3; }
.gt-index-item-count{ flex:0 0 auto; font-size:10px; color:var(--gt-muted);
  background:rgba(255,255,255,.06); border-radius:10px; padding:1px 7px; min-width:20px; text-align:center; }
.gt-index-item-active .gt-index-item-count{ color:#ffd9cc; background:rgba(193,80,46,.28); }

/* DECLASSIFIED / CONFIDENTIAL stamp emitted as .gt-card-stamp */
.gt-card-stamp{ display:inline-block; align-self:flex-start; font-family:var(--gt-mono);
  font-weight:700; letter-spacing:.18em; text-transform:uppercase; color:var(--gt-brick);
  padding:7px 14px; border:3px solid var(--gt-brick); border-radius:3px;
  box-shadow:0 0 0 1px var(--gt-brick) inset; transform:rotate(-8deg); opacity:.85;
  margin:6px 0 14px; }
.gt-card-msg{ margin-top:16px; padding:16px 18px; font-family:var(--gt-serif-body);
  font-size:15px; line-height:1.55; color:var(--gt-ink); background:#f6e7df;
  border:1px solid #ecc9b9; border-left:3px solid var(--gt-brick); border-radius:3px; }
/* summary panel inner bits */
#globe-terminal .gt-summary{ overflow-y:auto; padding:30px 28px 40px; }
.gt-summary-subhead{ font-family:var(--gt-mono); font-size:11px; letter-spacing:.18em;
  text-transform:uppercase; color:var(--gt-brick); display:block; margin-bottom:4px; }
.gt-summary-title{ font-family:var(--gt-serif); font-weight:800; font-size:24px; line-height:1.12;
  color:var(--gt-ink); margin:0 0 16px; padding-bottom:12px; border-bottom:2px solid var(--gt-ink); }
.gt-summary-objectives{ list-style:none; margin:0 0 18px; padding:0; }
.gt-summary-objectives li{ position:relative; padding:0 0 12px 22px; font-family:var(--gt-serif-body);
  font-size:15px; line-height:1.55; color:var(--gt-ink); }
.gt-summary-objectives li::before{ content:"›"; position:absolute; left:4px; top:-1px;
  color:var(--gt-brick); font-weight:700; }
.gt-summary-source{ font-family:var(--gt-mono); font-size:10px; letter-spacing:.08em;
  color:var(--gt-muted); margin-bottom:18px; }
.gt-summary-cta{ display:inline-flex; align-items:center; gap:8px; font-family:var(--gt-mono);
  font-weight:600; font-size:13px; letter-spacing:.04em; text-decoration:none;
  background:var(--gt-brick); color:#fff; padding:12px 18px; border-radius:3px;
  border:none; cursor:pointer; transition:background .15s ease; }
.gt-summary-cta:hover{ background:var(--gt-brick-d); }

/* abstract-style summary panel (headline → abstract → key provisions → read full) */
.gt-summary-lede{font-family:var(--gt-serif-body);font-size:1.02rem;line-height:1.5;color:var(--gt-ink);margin:0 0 16px;}
.gt-summary-abstract{font-family:var(--gt-serif-body);font-size:.95rem;line-height:1.6;color:var(--gt-ink);margin:0 0 16px;}
.gt-summary-readfull{display:inline-block;font-family:var(--gt-mono);font-size:.74rem;letter-spacing:.02em;color:var(--gt-brick);text-decoration:none;border-bottom:1px solid rgba(193,80,46,.4);padding-bottom:1px;margin:2px 0 16px;}
.gt-summary-readfull:hover{color:var(--gt-brick-d);border-bottom-color:var(--gt-brick-d);}

/* Tier 2 "pulling a file" live-search scan animation (.gt-scanning on the overlay) */
#globe-terminal.gt-scanning .gt-search{ box-shadow:0 0 0 1px var(--gt-term-dim), 0 0 26px -4px var(--gt-term-glow); }
#globe-terminal.gt-scanning::after{
  content:""; position:absolute; left:0; right:0; top:8%; height:2px; z-index:40; pointer-events:none;
  background:linear-gradient(90deg, transparent, var(--gt-term), transparent);
  box-shadow:0 0 12px var(--gt-term-glow);
  animation:gt-scan 1.1s linear infinite;
}
@keyframes gt-scan{ 0%{ top:8%; opacity:.15 } 50%{ opacity:.9 } 100%{ top:92%; opacity:.15 } }
@media (prefers-reduced-motion: reduce){ #globe-terminal.gt-scanning::after{ animation:none; opacity:.4; } }
