/* ==================================================================
   HELIOPULP CHROME: the shared header controls, rail footer and the
   living-art page backdrop. Loaded on every page (with heliopulp-site.css
   on templated pages, with heliopulp-list.css on the casino list).
   ================================================================== */

/* ---------- header controls: art toggle, Join Discord, Login ---------- */
.nav-links{align-items:center}
.nav-art,.nav-login{
  font-family:'JetBrains Mono',ui-monospace,monospace!important;font-size:11.5px!important;letter-spacing:.14em!important;
  text-transform:uppercase;white-space:nowrap;cursor:pointer;border-radius:999px!important;padding:7px 12px!important;line-height:1}
.nav-art{background:rgba(7,15,29,.7)!important;border:1px solid rgba(242,179,68,.4)!important;color:#f2b344!important}
.nav-art:hover{background:#f2b344!important;color:#070F1D!important}
.nav-login{border:1px solid rgba(239,230,212,.45)!important;color:#efe6d4!important;text-decoration:none!important;background:transparent!important}
.nav-login:hover{border-color:#f2b344!important;color:#f2b344!important}
a.nav-cta{background:#5865F2!important;color:#fff!important;border:0!important;border-radius:999px!important}
a.nav-cta:hover{background:#6d78f5!important}
.mobile-menu .nav-art{margin:8px 0}
/* the floating Discord card duplicated the header button */
.discord-widget{display:none!important}

/* ---------- living art backdrop (templated pages) ---------- */
.page-plate{position:fixed!important;inset:0;z-index:-1;pointer-events:none;overflow:hidden}
.page-plate .stage{position:absolute;inset:0}
.page-plate .stage img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;filter:brightness(.36) saturate(1.1)}
.page-plate .asciiwrap{position:absolute;inset:0;transition:opacity .6s}
.page-plate .asciiwrap canvas{position:absolute;inset:0;width:100%;height:100%}
.page-plate .asciiwrap .glow{mix-blend-mode:screen;opacity:.55}
.mode-soft .page-plate .asciiwrap{opacity:calc(var(--ao,1) * .55)}
.mode-paint .page-plate .asciiwrap{opacity:0}
.page-plate::after{content:"";position:absolute;inset:0;
  background:radial-gradient(90% 70% at 50% 30%,rgba(7,15,29,.25),rgba(7,15,29,.72) 100%)}

/* ---------- rail footer ---------- */
footer.hp-foot{position:relative;z-index:1;margin-top:72px;padding:64px 24px 34px;border-top:1px solid rgba(242,179,68,.18);
  background:linear-gradient(180deg,rgba(7,15,29,.55),rgba(7,15,29,.92));color:#8B9BB4;font-family:'JetBrains Mono',ui-monospace,monospace}
.hp-foot .hp-foot-in{max-width:1240px;margin:0 auto}
.hp-foot .cols{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:36px;margin-bottom:40px}
.hp-foot .brand img{width:44px;height:44px;border-radius:10px;display:block;margin-bottom:12px}
.hp-foot .brand b{font-family:'IM Fell English SC','IM Fell English',Georgia,serif;font-weight:400;font-size:22px;color:#efe6d4;letter-spacing:.04em}
.hp-foot .brand p{font-family:'IM Fell English',Georgia,serif;font-style:italic;font-size:17px;margin:6px 0 0;color:#8B9BB4}
.hp-foot h4{font-weight:400;font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;color:#f2b344;margin:0 0 14px}
.hp-foot a{display:block;padding:5px 0;color:#8B9BB4;text-decoration:none;font-size:13px}
.hp-foot a:hover{color:#efe6d4}
.hp-foot .legal{display:flex;flex-wrap:wrap;gap:8px 22px;padding-top:22px;border-top:1px solid rgba(242,179,68,.14);font-size:11.5px;letter-spacing:.12em;text-transform:uppercase}
.hp-foot .legal a{display:inline;padding:0;font-size:11.5px}
.hp-foot .copy{margin-top:16px;font-size:11.5px;letter-spacing:.12em;text-transform:uppercase}
@media (max-width:760px){.hp-foot .cols{grid-template-columns:1fr 1fr}.hp-foot .brand{grid-column:1/-1}}

/* ---------- header fit: one row on wide screens, the ☰ menu below 1280px ---------- */
.nav-brand{white-space:nowrap!important}
nav .nav-links a.nav-cta,.mobile-menu a[href*="discord"]{background:#5865F2!important;color:#fff!important;border:0!important;border-radius:999px!important}
nav .nav-links a.nav-cta:hover{background:#6d78f5!important}
/* compact header: stays one row down to 900px; the menu only takes over below that */
nav .nav-inner{max-width:1360px!important;min-height:52px;gap:12px}
nav .nav-links{flex-wrap:nowrap!important;gap:2px 4px!important}
nav .nav-links .nav-link{white-space:nowrap;font-size:12px!important;padding:6px 8px!important;letter-spacing:.02em}
nav .nav-links a.nav-cta,nav .nav-links .nav-login{font-size:10.5px!important;padding:6px 11px!important;letter-spacing:.12em!important;margin-left:4px}
nav .nav-links .nav-art{width:30px;height:30px;padding:0!important;display:inline-flex;align-items:center;justify-content:center;font-size:14px!important;letter-spacing:0!important;margin-left:6px}
@media (min-width:961px){nav .nav-links{display:flex!important}}
@media (max-width:1180px){
  nav .nav-links .nav-link{font-size:11.5px!important;padding:6px 6px!important}
  .nav-brand{font-size:0!important;gap:0!important} /* logo only, the words come back above 1180px */
}
@media (max-width:960px){
  nav .nav-links{display:none!important}
  nav .nav-hamburger{display:inline-flex!important}
  .nav-brand{font-size:13px!important}
}
.mobile-menu .nav-art{align-self:flex-start}

/* ---------- long headings never push the page wider than the screen ---------- */
h1,h2,h3,h4{overflow-wrap:anywhere;max-width:100%}

/* ---------- backdrop ASCII fades to soft edges ---------- */
.page-plate .asciiwrap{-webkit-mask-image:radial-gradient(ellipse 80% 75% at 50% 40%,#000 30%,rgba(0,0,0,.45) 65%,transparent 100%);
                               mask-image:radial-gradient(ellipse 80% 75% at 50% 40%,#000 30%,rgba(0,0,0,.45) 65%,transparent 100%)}

/* wide data tables scroll inside their own box on phones instead of widening the page */
@media (max-width:760px){table{display:block;max-width:100%;overflow-x:auto}}
/* leftover mission-control decoration that flew past the screen edge */
.shooting-star{display:none!important}
/* button rows wrap on phones (the knight mono is a touch wider than the old one) */
@media (max-width:760px){[class*="filter-group"],[class*="filters"],[class*="chip-row"],[class*="tier-row"]{flex-wrap:wrap!important;max-width:100%}}

/* ==================================================================
   ☰ MENU: only below 1280px, a solid knight panel, clean stacked pills
   ================================================================== */
@media (min-width:961px){
  nav .nav-hamburger{display:none!important}
  .mobile-menu,.mobile-menu.open{display:none!important}
}
.mobile-menu{
  background:linear-gradient(180deg,#0B1628 0%,#070F1D 100%)!important;
  backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
  border-top:1px solid rgba(242,179,68,.25);
  padding:18px 24px 40px!important;gap:0!important;overflow-y:auto}
.mobile-menu a{
  display:flex!important;justify-content:space-between;align-items:center;
  font-family:'IM Fell English',Georgia,serif!important;font-size:25px!important;letter-spacing:0!important;text-transform:none!important;
  color:#efe6d4!important;background:transparent!important;border:0!important;border-radius:0!important;
  border-bottom:1px solid rgba(242,179,68,.14)!important;padding:15px 4px!important;text-decoration:none!important}
.mobile-menu a::after{content:"→";font-family:'JetBrains Mono',monospace;font-size:15px;color:#f2b344}
.mobile-menu a:hover{color:#f2b344!important}
/* the three controls: compact pills under the links */
.mobile-menu a[href*="discord"],.mobile-menu a[href="/login"]{
  justify-content:center!important;margin-top:14px;padding:13px 18px!important;border-radius:999px!important;
  font-family:'JetBrains Mono',monospace!important;font-size:13px!important;letter-spacing:.14em!important;text-transform:uppercase!important}
.mobile-menu a[href*="discord"]{background:#5865F2!important;color:#fff!important;border:0!important;margin-top:26px}
.mobile-menu a[href="/login"]{border:1px solid rgba(239,230,212,.45)!important;color:#efe6d4!important}
.mobile-menu a[href*="discord"]::after,.mobile-menu a[href="/login"]::after{content:none}
.mobile-menu .nav-art{align-self:center!important;margin-top:16px!important}
/* nothing floats over the open menu */
body:has(.mobile-menu.open) #oshSaveChip,body:has(.mobile-menu.open) .osh-chip,body:has(.mobile-menu.active) #oshSaveChip,body:has(.mobile-menu.active) .osh-chip{display:none!important}
@media (min-width:961px){.mobile-menu.active{display:none!important}}

/* ==================================================================
   MOTION (js/heliopulp-motion.js adds .hp-motion; all off for reduced motion)
   ================================================================== */
/* scroll reveal */
.hp-motion .hp-reveal{opacity:0;transform:translateY(22px);transition:opacity .8s cubic-bezier(.2,.7,.2,1) var(--hp-delay,0ms),transform .8s cubic-bezier(.2,.7,.2,1) var(--hp-delay,0ms)}
.hp-motion .hp-reveal.hp-in{opacity:1;transform:none}

/* the page headline catches one warm gold glint as it loads (glow only: no box can appear behind it) */
.hp-motion .hp-shine{animation:hp-glint 2.4s ease-out .4s 1 both}
@keyframes hp-glint{0%{text-shadow:0 2px 22px rgba(0,0,0,.75)}35%{text-shadow:0 0 18px rgba(255,214,140,.95),0 0 46px rgba(242,179,68,.6)}100%{text-shadow:0 2px 22px rgba(0,0,0,.75)}}

/* embers drifting up the page */
.hp-embers{position:fixed;inset:0;pointer-events:none;z-index:0;overflow:hidden}
.hp-embers i{position:absolute;bottom:-12px;width:var(--sz,3px);height:var(--sz,3px);border-radius:50%;background:#ffd98a;
  box-shadow:0 0 8px 2px rgba(242,179,68,.7);opacity:0;animation:hp-rise var(--d,12s) linear var(--delay,0s) infinite}
@keyframes hp-rise{0%{opacity:0;transform:translate(0,0)}10%{opacity:.75}85%{opacity:.4}100%{opacity:0;transform:translate(var(--dx,0),-105vh)}}

/* cards lean toward the cursor and catch a gold light */
.hp-tilt{transform:perspective(900px) rotateX(var(--rx,0)) rotateY(var(--ry,0));transition:transform .5s cubic-bezier(.2,.7,.2,1),box-shadow .5s;will-change:transform}
.hp-tilt:hover{box-shadow:0 26px 60px -24px rgba(242,179,68,.45)!important}
.hp-tilt::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .4s;z-index:1;
  background:radial-gradient(360px circle at var(--gx,50%) var(--gy,50%),rgba(242,179,68,.14),transparent 60%)}
.hp-tilt:hover::before{opacity:1}
.hp-tilt{position:relative}

/* buttons: a light sweep on hover */
a[class*="btn"],a[class*="cta"],.go,.nav-login{position:relative;overflow:hidden}
a[class*="btn"]::after,a[class*="cta"]::after,.nav-login::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.35) 50%,transparent 70%);transform:translateX(-120%);transition:transform .7s ease}
a[class*="btn"]:hover::after,a[class*="cta"]:hover::after,.nav-login:hover::after{transform:translateX(120%)}

/* header links: a gold rule slides in under the hovered link */
nav .nav-links .nav-link{position:relative}
nav .nav-links .nav-link::after{content:"";position:absolute;left:8px;right:8px;bottom:1px;height:1px;background:#f2b344;transform:scaleX(0);transform-origin:left;transition:transform .35s ease}
nav .nav-links .nav-link:hover::after{transform:scaleX(1)}

/* the sun sigil logo breathes */
.nav-logo,.brand img,.hp-foot .brand img{animation:hp-halo 5s ease-in-out infinite}
@keyframes hp-halo{0%,100%{filter:drop-shadow(0 0 2px rgba(242,179,68,.35))}50%{filter:drop-shadow(0 0 9px rgba(242,179,68,.75))}}

@media (prefers-reduced-motion:reduce){
  .hp-embers{display:none}
  .hp-shine{animation:none!important}
  .nav-logo,.brand img,.hp-foot .brand img{animation:none}
  .hp-tilt{transform:none}
}

/* the footer's legal links are a <nav>; page-level nav{position:fixed;...} rules must not float them to the top */
footer.hp-foot nav.legal{position:static!important;inset:auto!important;height:auto!important;width:auto!important;z-index:auto!important;
  background:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;box-shadow:none!important;
  border-bottom:0!important;padding:22px 0 0!important;margin:0!important;transform:none!important}

/* ---------- one header on every template: same height, background and link type (the list page is the reference) ---------- */
nav#nav{background:rgba(7,15,29,.92)!important;padding-top:0!important;padding-bottom:0!important}
nav#nav .nav-inner{padding-top:0!important;padding-bottom:0!important;min-height:54px!important}
nav#nav .nav-links .nav-link{font-family:'JetBrains Mono',ui-monospace,monospace!important}
nav#nav .nav-links .nav-link:not([aria-current]):not(.active){color:#8B9BB4!important}
nav#nav .nav-links .nav-link:not([aria-current]):not(.active):hover{color:#efe6d4!important}
nav#nav .nav-links .nav-link{text-transform:none!important}
body{margin:0} /* members pages shipped without a reset, which floated the header 8px off the edges */
@media (max-width:960px){nav#nav .nav-inner{padding-left:20px!important;padding-right:20px!important}}
nav#nav{padding-left:0!important;padding-right:0!important}
nav#nav .nav-inner{padding-left:24px!important;padding-right:24px!important}
@media (max-width:960px){nav#nav .nav-inner{padding-left:20px!important;padding-right:20px!important}}

/* Digital/Paint toggle: one slow crossfade for every painting's ASCII layer */
html [class*="plate"] .asciiwrap{transition:opacity 1.4s cubic-bezier(.4,0,.2,1)}

/* ---------- Digital/Paint switch: terminal | palette in a navy pill, a gold knob slides to the active art ---------- */
nav .nav-links .nav-art,.mobile-menu .nav-art{width:auto!important;height:32px!important;padding:3px!important;display:inline-flex!important;align-items:center;gap:0;
  background:rgba(7,15,29,.8)!important;border:1px solid rgba(242,179,68,.45)!important;color:#f2b344!important;box-shadow:inset 0 0 12px rgba(242,179,68,.08)}
nav .nav-links .nav-art:hover,.mobile-menu .nav-art:hover{background:rgba(7,15,29,.8)!important;color:#f2b344!important;border-color:#f2b344!important;
  box-shadow:0 0 16px rgba(242,179,68,.35),inset 0 0 12px rgba(242,179,68,.14)}
.nav-art:focus-visible{outline:2px solid #5EE8AD;outline-offset:2px}
.art-sw{position:relative;display:inline-grid;grid-template-columns:28px 28px;height:24px;align-items:center}
.art-knob{position:absolute;left:0;top:0;width:28px;height:24px;border-radius:999px;background:linear-gradient(180deg,#ffdc8f,#f2b344);
  box-shadow:0 0 10px rgba(242,179,68,.6),inset 0 1px 0 rgba(255,255,255,.45)}
[data-m="paint"] .art-knob{transform:translateX(28px)}
.art-opt{position:relative;display:flex;align-items:center;justify-content:center;height:24px;color:#f2b344}
.art-opt svg{display:block}
.art-opt.p{font-size:14px;line-height:1;opacity:.45;filter:grayscale(1)}
[data-m="soft"] .art-opt.t{color:#070F1D}
[data-m="paint"] .art-opt.t{opacity:.55}
[data-m="paint"] .art-opt.p{opacity:1;filter:none}
.art-ready .art-knob{transition:transform .45s cubic-bezier(.4,0,.2,1)}
.art-ready .art-opt{transition:color .3s,opacity .3s,filter .3s}
.art-lbl{margin:0 10px 0 10px;font-family:'JetBrains Mono',ui-monospace,monospace;font-size:11.5px;letter-spacing:.14em;text-transform:uppercase}
@media (prefers-reduced-motion:reduce){.art-ready .art-knob,.art-ready .art-opt{transition:none}}

/* ---------- header Join Discord = the Discord logo in a blurple coin (text stays for screen readers + tooltip) ---------- */
nav .nav-links a.nav-cta{font-size:0!important;letter-spacing:0!important;width:34px;height:34px;padding:0!important;border-radius:50%!important;
  display:inline-flex;align-items:center;justify-content:center;
  background:#5865F2 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 127.14 96.36'%3E%3Cpath fill='%23fff' d='M107.7 8.07A105.15 105.15 0 0 0 81.47 0a72.06 72.06 0 0 0-3.36 6.83 97.68 97.68 0 0 0-29.11 0A72.37 72.37 0 0 0 45.64 0a105.89 105.89 0 0 0-26.25 8.09C2.79 32.65-1.71 56.6.54 80.21a105.73 105.73 0 0 0 32.17 16.15 77.7 77.7 0 0 0 6.89-11.11 68.42 68.42 0 0 1-10.85-5.18c.91-.66 1.8-1.34 2.66-2a75.57 75.57 0 0 0 64.32 0c.87.71 1.76 1.39 2.66 2a68.68 68.68 0 0 1-10.87 5.19 77 77 0 0 0 6.89 11.1 105.25 105.25 0 0 0 32.19-16.14c2.64-27.38-4.51-51.11-18.9-72.15ZM42.45 65.69C36.18 65.69 31 60 31 53s5-12.74 11.43-12.74S54 46 53.89 53s-5.05 12.69-11.44 12.69Zm42.24 0C78.41 65.69 73.25 60 73.25 53s5-12.74 11.44-12.74S96.23 46 96.12 53s-5.04 12.69-11.43 12.69Z'/%3E%3C/svg%3E") center/19px no-repeat!important;
  box-shadow:0 0 0 1px rgba(255,255,255,.08),0 0 14px rgba(88,101,242,.45);transition:transform .2s,box-shadow .2s}
nav .nav-links a.nav-cta:hover{background-color:#6d78f5!important;transform:translateY(-1px);box-shadow:0 0 0 1px rgba(255,255,255,.14),0 0 20px rgba(88,101,242,.7)}

/* ================= header + footer polish (2026-09-27) ================= */
/* one brand name everywhere, set like the footer's; the gold UFO reads at a glance */
nav .nav-brand{font-family:'IM Fell English SC','IM Fell English',Georgia,serif!important;font-weight:400!important;text-transform:none!important;
  font-size:19px!important;letter-spacing:.04em!important;gap:10px!important}
nav .nav-brand img{height:30px!important;width:30px!important;object-fit:contain}
@media (max-width:1180px) and (min-width:961px){nav .nav-brand{font-size:0!important}}
/* the page you are on keeps its gold underline */
nav .nav-links .nav-link[aria-current]{color:#efe6d4!important}
nav .nav-links .nav-link[aria-current]::after{transform:scaleX(1)!important}
/* phone menu opens below the header instead of underneath it */
.mobile-menu{top:57px!important;bottom:0!important;overflow-y:auto!important}

/* footer: brand + three even link columns, a clean base row, a readable responsible-play line */
.hp-foot .cols{grid-template-columns:1.5fr repeat(3,1fr)!important;gap:40px!important}
.hp-foot .foot-acts{display:flex;gap:10px;margin-top:18px;flex-wrap:wrap}
.hp-foot .foot-acts a{display:inline-flex;align-items:center;padding:8px 14px!important;border-radius:999px;font-family:'JetBrains Mono',ui-monospace,monospace;
  font-size:11px!important;letter-spacing:.12em;text-transform:uppercase}
.hp-foot .foot-discord{background:#5865F2;color:#fff!important}
.hp-foot .foot-discord:hover{background:#6d78f5}
.hp-foot .foot-login{border:1px solid rgba(239,230,212,.4);color:#efe6d4!important}
.hp-foot .foot-login:hover{border-color:#f2b344;color:#f2b344!important}
.hp-foot .foot-base{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 24px;padding-top:22px;border-top:1px solid rgba(242,179,68,.14)}
.hp-foot .foot-base .legal{padding-top:0!important;border-top:0!important}
.hp-foot .foot-base .copy{margin:0!important}
.hp-foot .play{margin:18px 0 0;font-size:13px;line-height:1.6;color:#8B9BB4;letter-spacing:0;text-transform:none;max-width:760px}
.hp-foot .play a{display:inline!important;padding:0!important;color:#f2b344!important;font-size:13px!important}
@media (max-width:900px){.hp-foot .cols{grid-template-columns:1fr 1fr!important;gap:28px!important}.hp-foot .brand{grid-column:1/-1}}
@media (max-width:420px){.hp-foot .foot-base{flex-direction:column;align-items:flex-start}}
nav#nav .nav-links .nav-link{text-transform:none!important;letter-spacing:.02em!important;font-size:12px!important} /* one link style on every page */
.mode-soft .plate:not(.page-plate) .asciiwrap{opacity:var(--ao,1)} /* every painting settles to the light ASCII look, not only the casino list */

/* the art switch keeps its pill shape wherever it sits (the homepage header styles .chip/.nav-art its own way) */
button.nav-art:has(.art-sw){width:auto!important;min-width:0!important;height:32px!important;padding:3px!important;display:inline-flex!important;align-items:center;border-radius:999px!important;background:rgba(7,15,29,.8)!important;border:1px solid rgba(242,179,68,.45)!important;color:#f2b344!important;overflow:hidden;flex:0 0 auto;margin-left:6px}
button.nav-art:has(.art-sw):hover{background:rgba(7,15,29,.8)!important;border-color:#f2b344!important;box-shadow:0 0 16px rgba(242,179,68,.35)}

/* login + developers header (header.top): Join Discord is the same logo coin as every other header (owner 2026-09-28) */
header.top a.nav-cta{font-size:0!important;letter-spacing:0!important;width:34px;height:34px;padding:0!important;border-radius:50%!important;flex:none;display:inline-flex;align-items:center;justify-content:center;background:#5865F2 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 127.14 96.36'%3E%3Cpath fill='%23fff' d='M107.7 8.07A105.15 105.15 0 0 0 81.47 0a72.06 72.06 0 0 0-3.36 6.83 97.68 97.68 0 0 0-29.11 0A72.37 72.37 0 0 0 45.64 0a105.89 105.89 0 0 0-26.25 8.09C2.79 32.65-1.71 56.6.54 80.21a105.73 105.73 0 0 0 32.17 16.15 77.7 77.7 0 0 0 6.89-11.11 68.42 68.42 0 0 1-10.85-5.18c.91-.66 1.8-1.34 2.66-2a75.57 75.57 0 0 0 64.32 0c.87.71 1.76 1.39 2.66 2a68.68 68.68 0 0 1-10.87 5.19 77 77 0 0 0 6.89 11.1 105.25 105.25 0 0 0 32.19-16.14c2.64-27.38-4.51-51.11-18.9-72.15ZM42.45 65.69C36.18 65.69 31 60 31 53s5-12.74 11.43-12.74S54 46 53.89 53s-5.05 12.69-11.44 12.69Zm42.24 0C78.41 65.69 73.25 60 73.25 53s5-12.74 11.44-12.74S96.23 46 96.12 53s-5.04 12.69-11.43 12.69Z'/%3E%3C/svg%3E") center/19px auto no-repeat!important;box-shadow:0 0 0 1px rgba(255,255,255,.08),0 0 14px rgba(88,101,242,.45);transition:transform .2s,box-shadow .2s}
header.top a.nav-cta:hover{background-color:#6d78f5!important;transform:translateY(-1px)}
