/* ══════════════════════════════════════════════════════════════════
   LIQUA EXCHANGE · THE SITE SHELL
   Loaded LAST, after liqua-v3.css, on every page of /exchange/.

   ── Why this file exists ────────────────────────────────────────
   The exchange is a separate app that ships into the site at
   /exchange/. It had its own header, its own nav and — until this
   file — no site around it: the link check reported exchange/
   index.html missing every canonical nav destination, so a visitor
   who clicked Staking on the homepage landed somewhere that looked
   like a different product. This sheet supplies the frame the rest
   of liqua.network carries: the same destinations, the same footer
   site map, the same spine, the same tokens.

   ── What it deliberately does NOT do ────────────────────────────
   It does not touch the desk. The order book, the entry bar and the
   panels are dense on purpose and every rule below is namespaced
   (.xs-*) or scoped under the shell's own elements, so nothing here
   can reach them. In particular liqua-type.css — the site's type
   sheet — is NOT linked here: its .ph, .lbl and .stat .v rules carry
   !important and would blow the desk's panel headers and stat rows
   up to prose sizes. The ramp comes from liqua-v3.css's --t-* and
   --v3-* tokens instead, applied only to the shell.

   Two fonts are pulled so the shell reads in the site's voice rather
   than the desk's mono: the same Outfit + Inter request liqua-type
   .css makes, so it is one cached response, not a second provider.
   ══════════════════════════════════════════════════════════════════ */

@import url('https://fonts.googleapis.com/css2?family=Outfit:wght@500;600;700;800;900&family=Inter:wght@400;500;600;700&display=swap');

/* The site's container. Copied from liqua/site/index.html so the strip and
   the footer sit on the same 1100px spine as every other page; liqua-v3.css
   owns the side padding at each breakpoint and overrides what is here. */
.wrap{max-width:1100px;margin:0 auto;padding:0 22px}


/* ── 1 · SITE STRIP ────────────────────────────────────────────────
   A <nav> on purpose: liqua-v3.css §6 paints every nav that is not a
   docs rail with the site's blurred black bar, greys the links and
   lifts them to blue on hover, and §21 hides it inside L8 OS, where
   the window chrome is the navigation. Matching the homepage means
   using the element the shared sheet already knows.

   It is NOT sticky. The desk's own .hdr owns top:0 and must keep it —
   the pair, the mode toggle and the wallet button have to stay on
   screen while the book scrolls. The site frame scrolls away. */
.xs-site .wrap{display:flex;align-items:center;gap:10px 18px;
  min-height:58px;padding-top:9px;padding-bottom:9px;flex-wrap:wrap}

.xs-brand{display:inline-flex;align-items:center;gap:9px;flex:0 0 auto;text-decoration:none}
.xs-brand img{width:18px;height:18px;display:block}
/* The homepage wordmark, restated rather than borrowing .brand: liqua.html in
   this same folder already styles .brand for its own brand bar. Measured off
   the homepage rather than copied from its source — index.html asks for the
   mono face and liqua-type.css overrules it to the display face, so the mark
   actually renders Outfit 15px / .14em / white. */
.xs-brand span{font-family:var(--v3-display);font-size:15px;font-weight:600;
  letter-spacing:.14em;color:#fff}

.xs-links{margin-left:auto;display:flex;align-items:center;gap:10px 20px;flex-wrap:wrap}
/* colour, size and weight of the plain links come from liqua-v3.css §6, which
   sets them !important for every site nav — left alone here on purpose so the
   exchange cannot drift away from the homepage the next time either changes. */

/* liqua-v3.css sizes every nav link with !important and then walks the homepage
   CTA back to 12.5px through a .nlinks selector this markup does not carry, so
   the size is restated here at the same weight. Without it the pill reads a
   point larger here than on the homepage. */
.xs-cta{background:var(--k-blue);color:#fff;padding:8px 16px;border-radius:999px;
  font-weight:500;font-size:12.5px!important;letter-spacing:0;
  text-decoration:none;white-space:nowrap}
.xs-cta:hover{background:#0077ed;color:#fff}


/* ── 2 · THE STATE LINE ────────────────────────────────────────────
   The homepage carries one yellow strip above the fold saying what is
   real. The exchange needs its own, because its answer is harder: the
   contracts are written and tested and running nowhere. Same class, so
   liqua-v3.css §7 gives it the identical treatment, and §21 hides it in
   L8 OS alongside the nav. Layout is restated from the homepage's own
   block — that part lives inline there, not in the shared sheet. */
.dnbanner{background:var(--k-ink);border-bottom:1px solid var(--border);
  color:var(--amber);font-size:12.5px;text-align:center;padding:9px 16px;
  font-family:var(--v3-mono);line-height:1.5}
.dnbanner b{color:var(--amber)}
.dnbanner .d{display:inline-block;width:7px;height:7px;border-radius:50%;
  background:var(--amber);vertical-align:middle;margin-right:7px}
.dnbanner a{color:var(--amber);font-weight:700;margin-left:8px;
  text-decoration:underline;white-space:nowrap}


/* ── 3 · FOOTER · THE SITE MAP ─────────────────────────────────────
   The footer is where a reader goes when the nav failed them, so it is
   the same site map the homepage prints, with one column added for the
   desk the reader is standing in. Anything not open carries its state
   here too: a map that oversells is worse than no map.

   liqua-v3.css §19 and its T4 ruler already own footer colour, the top
   hairline and the block padding. Only the grid is set here. */
.xs-foot{margin-top:28px}
.xs-mark{width:26px;height:26px;margin:0 auto 26px;display:block}

.xs-foot .fmap{display:grid;grid-template-columns:repeat(6,1fr);gap:24px;text-align:left;
  padding-bottom:30px;margin-bottom:26px;border-bottom:1px solid var(--border)}
@media(max-width:1000px){.xs-foot .fmap{grid-template-columns:repeat(3,1fr);gap:26px 20px}}
@media(max-width:560px){.xs-foot .fmap{grid-template-columns:repeat(2,1fr)}}
@media(max-width:330px){.xs-foot .fmap{grid-template-columns:1fr}}
/* the shared sheet sets footer type with !important, so these carry the same
   weight and a footer-scoped selector to stay ahead of it */
.xs-foot .fmap h4{font:700 10px/1 var(--v3-mono)!important;letter-spacing:.16em!important;
  text-transform:uppercase;color:var(--dimc)!important;margin:0 0 13px}
.xs-foot .fmap ul{list-style:none;display:grid;gap:9px;margin:0;padding:0}
.xs-foot .fmap li{margin:0}
.xs-foot .fmap a{display:block;color:var(--muted)!important;font-size:12.5px!important;
  line-height:1.4!important;letter-spacing:0!important;font-family:var(--v3-sans)!important;
  text-decoration:none}
.xs-foot .fmap a:hover{color:var(--ice)!important}
.xs-foot .fmap .cm{display:block;color:var(--dimc)!important;font:600 9px/1.4 var(--v3-mono)!important;
  letter-spacing:.1em!important;text-transform:uppercase;margin-top:2px}

.xs-foot .xs-mono{text-align:center;font-family:var(--v3-mono)!important;
  font-size:11.5px!important;letter-spacing:.06em;color:var(--dimc)!important}
.xs-foot .xs-disc{max-width:760px;margin:14px auto 0;text-align:center;
  font-family:var(--v3-sans)!important;font-size:12.5px!important;line-height:1.6!important;
  color:var(--dimc)!important}

/* The order-book desk parks a fixed quick-order watermark at the bottom of the
   viewport. Without this the last two lines of the footer sit under it. */
.xs-foot--wm{padding-bottom:132px!important}


/* ── 4 · SMALL SCREENS AND STILL PAGES ─────────────────────────────
   At 375px the strip stacks into two rows rather than hiding behind a
   burger: a menu that needs JavaScript is a route home that can fail. */
@media(max-width:560px){
  /* three short rows instead of one long one, and no taller than it has to be:
     at 375px this frame and the state line sit above the page's own title, so
     every pixel spent here is a pixel of the actual desk pushed off screen */
  .xs-site .wrap{gap:6px 14px;min-height:0;padding-top:8px;padding-bottom:8px}
  .xs-links{margin-left:0;width:100%;gap:6px 14px}
  .xs-cta{padding:7px 14px!important;font-size:12px!important}
  .dnbanner{font-size:12px;text-align:left}
  .dnbanner a{display:block;margin-left:0;margin-top:6px;white-space:normal}
}
@media(prefers-reduced-motion:reduce){
  .xs-site a,.xs-cta,.xs-foot .fmap a{transition:none!important}
}
