/* GemstoneRO "Sapphire Night" design system: kit.
   What only a few pages use, in sections. A FluxCP page gets the sections it needs inside the page itself (a <style> block
   after gs-core.css, put there by footer.php), so nothing here costs a request; $gsExtraCss = array('gs-kit') and the
   standalone shell link the whole file. Each section starts with its key, "[kit:podium]"; the class names that ask for a
   section are listed in gsKitSections() (main/shell-lib.php): keep the two in step. Sections must stand alone.
   sp-* and cms-editor are aliases of the gs- names. A section may not use a relative url(): it is printed inside the page;
   data: images are fine. API: API.md. */

/* --- [kit:frame] framed card: gs-frame = a sapphire panel in a thin gold edge with azure corner diamonds (normal panels); gs-frame--strong =
   key cards (log in, register, download): brighter edge, an inner hairline with gold corner brackets and diamonds, a soft inner glow
   and the gem crest on the top edge (gs-frame--crest puts the crest on a light frame, gs-frame--nocrest takes it off a strong one).
   Ornaments are pseudo-elements with pointer-events:none inside the box: nothing is clipped, focus rings and control sizes stay --- */
:where(.gs-frame){margin:0 0 var(--gs-s-5)}
/* the ornaments are data: images (absolute, so they work inlined in the page) */
.gs-frame{--gs-orn-gold:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 10'%3E%3Cpath d='M5 0l5 5-5 5-5-5z' fill='%23e7b95c'/%3E%3Cpath d='M5 0l5 5H5z' fill='%23fff0c4'/%3E%3Cpath d='M0 5h5v5z' fill='%23a8741f'/%3E%3C/svg%3E");--gs-orn-azure:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 10'%3E%3Cpath d='M5 0l5 5-5 5-5-5z' fill='%234f86ff'/%3E%3Cpath d='M5 0l5 5H5z' fill='%23cfe9ff'/%3E%3Cpath d='M0 5h5v5z' fill='%231f4fd6'/%3E%3C/svg%3E");--gs-orn-crest:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 132 40'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%23fff2c8'/%3E%3Cstop offset='.5' stop-color='%23ecc06a'/%3E%3Cstop offset='1' stop-color='%23b07c26'/%3E%3C/linearGradient%3E%3ClinearGradient id='p' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%2314295e'/%3E%3Cstop offset='1' stop-color='%230c1a40'/%3E%3C/linearGradient%3E%3CradialGradient id='l'%3E%3Cstop offset='0' stop-color='%238fd0ff' stop-opacity='.55'/%3E%3Cstop offset='1' stop-color='%238fd0ff' stop-opacity='0'/%3E%3C/radialGradient%3E%3C/defs%3E%3Cpath d='M38 20L50 10H82L94 20L82 30H50Z' fill='url(%23p)' stroke='url(%23g)' stroke-width='1.2'/%3E%3Ccircle cx='66' cy='19' r='19' fill='url(%23l)'/%3E%3Cg id='w' fill='none' stroke='url(%23g)' stroke-linecap='round'%3E%3Cpath d='M38 20C33 20 30 15 24 14.5C19 14 15.5 17 16.5 20.5C17.3 23.2 20.6 23.6 21.8 21.6C22.6 20.2 21.6 18.6 20.2 18.9' stroke-width='1.7'/%3E%3Cpath d='M38 20C32 22.5 28 26.5 21 26' stroke-width='1.2'/%3E%3Cpath d='M14 20H4' stroke-width='1'/%3E%3C/g%3E%3Cpath d='M5 17L8 20L5 23L2 20Z' fill='url(%23g)'/%3E%3Cuse href='%23w' transform='matrix(-1 0 0 1 132 0)'/%3E%3Cpath d='M127 17L130 20L127 23L124 20Z' fill='url(%23g)'/%3E%3Cpath d='M57 3.5H75L83 13L66 37.5L49 13Z' fill='%232f68ea'/%3E%3Cpath d='M60.5 3.5H71.5L75 13H57Z' fill='%23d6ecff'/%3E%3Cpath d='M57 3.5H60.5L57 13H49Z' fill='%23a9d0ff'/%3E%3Cpath d='M71.5 3.5H75L83 13H75Z' fill='%2378a8ff'/%3E%3Cpath d='M49 13H66V37.5Z' fill='%234b86f6'/%3E%3Cpath d='M66 13H83L66 37.5Z' fill='%231d46bd'/%3E%3Cpath d='M57 13H75L66 37.5Z' fill='%233168e8' opacity='.55'/%3E%3Cpath d='M57 3.5H75L83 13L66 37.5L49 13Z' fill='none' stroke='url(%23g)' stroke-width='1.3' stroke-linejoin='round'/%3E%3Cpath d='M60 7l1 2.1 2.1 1-2.1 1-1 2.1-1-2.1-2.1-1 2.1-1z' fill='%23fff'/%3E%3Ccircle cx='88' cy='9' r='.9' fill='%23fff2c8'/%3E%3Ccircle cx='44' cy='31' r='.8' fill='%238fd0ff'/%3E%3C/svg%3E")}
.gs-frame{--gs-frame-pad:clamp(20px,3.2vw,32px);--gs-frame-edge:rgba(232,192,108,.4);position:relative;padding:var(--gs-frame-pad);border:1px solid var(--gs-frame-edge);border-radius:var(--gs-r-2);background:radial-gradient(120% 64% at 50% 0,rgba(79,134,255,.12),rgba(79,134,255,0) 62%),linear-gradient(180deg,#10224f,#0c1a40 46%,#0a1636);box-shadow:var(--gs-shadow-2),inset 0 1px 0 rgba(255,232,170,.08)}
.gs-frame::after{content:"";position:absolute;inset:5px;pointer-events:none;border-radius:4px;background:var(--gs-orn-azure) 0 0/7px 7px no-repeat,var(--gs-orn-azure) 100% 0/7px 7px no-repeat,var(--gs-orn-azure) 0 100%/7px 7px no-repeat,var(--gs-orn-azure) 100% 100%/7px 7px no-repeat}
.gs-frame>:last-child{margin-bottom:0}
.gs-frame--strong{--gs-frame-pad:clamp(22px,3.6vw,38px);--gs-frame-edge:rgba(240,200,110,.62);--gs-frame-line:rgba(240,200,110,.72);padding-top:calc(var(--gs-frame-pad) + 12px);background:radial-gradient(90% 46% at 50% 0,rgba(92,184,255,.1),rgba(92,184,255,0) 70%),linear-gradient(180deg,#11245a,#0d1c45 42%,#0a1636);box-shadow:var(--gs-shadow-3),inset 0 0 56px rgba(79,134,255,.08)}
.gs-frame--strong::after{inset:2px;outline:1px solid rgba(143,208,255,.16);outline-offset:-4px;background:var(--gs-orn-gold) 0 0/9px 9px no-repeat,var(--gs-orn-gold) 100% 0/9px 9px no-repeat,var(--gs-orn-gold) 0 100%/9px 9px no-repeat,var(--gs-orn-gold) 100% 100%/9px 9px no-repeat,linear-gradient(90deg,var(--gs-frame-line),transparent) 12px 4px/32px 1px no-repeat,linear-gradient(270deg,var(--gs-frame-line),transparent) calc(100% - 12px) 4px/32px 1px no-repeat,linear-gradient(90deg,var(--gs-frame-line),transparent) 12px calc(100% - 4px)/32px 1px no-repeat,linear-gradient(270deg,var(--gs-frame-line),transparent) calc(100% - 12px) calc(100% - 4px)/32px 1px no-repeat,linear-gradient(180deg,var(--gs-frame-line),transparent) 4px 12px/1px 32px no-repeat,linear-gradient(180deg,var(--gs-frame-line),transparent) calc(100% - 4px) 12px/1px 32px no-repeat,linear-gradient(0deg,var(--gs-frame-line),transparent) 4px calc(100% - 12px)/1px 32px no-repeat,linear-gradient(0deg,var(--gs-frame-line),transparent) calc(100% - 4px) calc(100% - 12px)/1px 32px no-repeat}
.gs-frame--strong::before,.gs-frame--crest::before{content:"";position:absolute;left:50%;top:0;width:132px;height:40px;margin-left:-66px;transform:translateY(-50%);pointer-events:none;background:var(--gs-orn-crest) center/contain no-repeat}
.gs-frame--crest{padding-top:calc(var(--gs-frame-pad) + 12px)}
.gs-frame--nocrest::before{display:none}
.gs-frame--nocrest{padding-top:var(--gs-frame-pad)}
.gs-frame--flush{--gs-frame-pad:0;overflow:clip}
@media (max-width:479.98px){.gs-frame--strong::before,.gs-frame--crest::before{width:112px;height:34px;margin-left:-56px}}
.gs-frame__head{margin:0 0 var(--gs-s-5)}
.gs-frame__head>*{margin:0}
.gs-frame__head--center{text-align:center}
.gs-frame__head--center .gs-eyebrow{justify-content:center}
.gs-frame__title{font:800 var(--gs-fs-3xl)/1.1 var(--gs-font-serif);color:#fff;text-wrap:balance}
.gs-frame__lead{margin-top:.45em;color:var(--gs-text-2)}
/* a scene's foreground strip over the frame's bottom edge (gsSceneStrip(), bible 8.3: at most 30 px over 64 px of free padding) */
.gs-frame--fg{padding-bottom:calc(var(--gs-frame-pad) + 64px)}
.gs-frame--fg>.gs-fg{left:-12px;right:-12px;bottom:-30px;height:min(var(--gs-fg-h,96px),112px)}

/* --- [kit:prose] rich prose (gs-prose--rich): staff- and owner-written HTML; the base element styles of the core do the rest --- */
:is(.gs-prose--rich,.sp-prose){color:var(--gs-text-2);font-size:var(--gs-fs-md);line-height:1.7;overflow-wrap:break-word}
:is(.gs-prose--rich,.sp-prose)>:first-child{margin-top:0}
:is(.gs-prose--rich,.sp-prose)>:last-child{margin-bottom:0}
:is(.gs-prose--rich,.sp-prose) :is(h1,h2,h3,h4,h5,h6){margin:1.6em 0 .55em;color:var(--gs-text);font-size:var(--gs-fs-md);line-height:1.25}
:is(.gs-prose--rich,.sp-prose) :is(h1,h2){font-size:var(--gs-fs-xl)}
:is(.gs-prose--rich,.sp-prose) h3{font-size:var(--gs-fs-lg)}
:is(.gs-prose--rich,.sp-prose) :is(strong,b){color:var(--gs-text)}
:is(.gs-prose--rich,.sp-prose) a{font-weight:600;text-decoration:underline}
:is(.gs-prose--rich,.sp-prose) ul{list-style:none;padding-left:1.5em}
:is(.gs-prose--rich,.sp-prose) ul>li{position:relative}
:is(.gs-prose--rich,.sp-prose) ul>li::before{content:"";position:absolute;left:-1.15em;top:.62em;width:.42em;height:.42em;transform:rotate(45deg);background:linear-gradient(135deg,var(--gs-azure-300) 50%,var(--gs-sapphire-500) 50%)}
:is(.gs-prose--rich,.sp-prose) ol{padding-left:1.6em}
:is(.gs-prose--rich,.sp-prose) ol>li::marker{color:var(--gs-azure-300);font-weight:800;font-family:var(--gs-font-display)}
:is(.gs-prose--rich,.sp-prose) li+li{margin-top:.4em}
:is(.gs-prose--rich,.sp-prose) li>:is(ul,ol){margin:.4em 0 0}
:is(.gs-prose--rich,.sp-prose) blockquote{padding:.75em 1.1em;border-radius:0 var(--gs-r-2) var(--gs-r-2) 0;background:rgba(79,134,255,.07);color:var(--gs-text)}
:is(.gs-prose--rich,.sp-prose) :is(img,video,iframe){max-width:100%;border-radius:var(--gs-r-2)}
:is(.gs-prose--rich,.sp-prose) hr{margin:2em 0;background:linear-gradient(90deg,transparent,var(--gs-line-strong) 20%,var(--gs-line-strong) 80%,transparent)}
:is(.gs-prose--rich,.sp-prose) code{color:var(--gs-azure-300);font-size:.9em}
:is(.gs-prose--rich,.sp-prose) pre code{padding:0;background:none;color:var(--gs-text)}
:is(.gs-prose--rich,.sp-prose) table{width:100%;border-collapse:separate;border-spacing:0;border:1px solid var(--gs-line);border-radius:var(--gs-r-2);font-size:var(--gs-fs-sm);font-variant-numeric:tabular-nums}
:is(.gs-prose--rich,.sp-prose) :is(th,td){padding:10px 14px;border-bottom:1px solid var(--gs-line-soft);text-align:left;vertical-align:top}
:is(.gs-prose--rich,.sp-prose) th{background:var(--gs-night-800);color:var(--gs-text);font:700 var(--gs-fs-xs)/1.3 var(--gs-font-display);letter-spacing:.04em;text-transform:uppercase}
:is(.gs-prose--rich,.sp-prose) tr:last-child>td{border-bottom:0}
:is(.gs-prose--rich,.sp-prose) tbody tr:nth-child(even)>td{background:rgba(122,166,255,.03)}

/* --- [kit:doc] document + "On this page": gs-doc > gs-doc__main + nav.gs-toc (gs.js fills the list from the h2 headings) --- */
:is(.gs-doc,.sp-doc){display:grid;gap:var(--gs-s-5) var(--gs-s-7);max-width:880px;margin:0 auto}
.gs-doc__main,.sp-doc__main{min-width:0}
:is(.gs-doc,.sp-doc).has-toc{max-width:none}
:is(.gs-toc,.sp-toc){padding:var(--gs-s-4) var(--gs-s-5);border:1px solid var(--gs-line);border-radius:var(--gs-r-3);background:var(--gs-surface)}
.gs-toc__title,.sp-toc__title{display:flex;align-items:center;gap:8px;margin:0 0 var(--gs-s-2);color:var(--gs-text);font:800 var(--gs-fs-sm) var(--gs-font-display);letter-spacing:.04em}
:is(.gs-toc__title,.sp-toc__title) .gs-icon{color:var(--gs-azure-300)}
:is(.gs-toc,.sp-toc) ol{margin:0;padding:0;list-style:none;counter-reset:gs-toc}
:is(.gs-toc,.sp-toc) li{margin:0;counter-increment:gs-toc}
:is(.gs-toc,.sp-toc) a{display:grid;grid-template-columns:26px minmax(0,1fr);align-items:center;gap:8px;min-height:40px;padding:4px 0;color:var(--gs-text-2);font-size:var(--gs-fs-sm);line-height:1.35;text-decoration:none}
:is(.gs-toc,.sp-toc) a::before{content:counter(gs-toc);display:grid;place-items:center;width:26px;height:22px;background:rgba(140,175,255,.1);color:var(--gs-text-2);font:800 .75rem/1 var(--gs-font-display);clip-path:var(--gs-hex)}
:is(.gs-toc,.sp-toc).is-numbered a{grid-template-columns:minmax(0,1fr)}
:is(.gs-toc,.sp-toc).is-numbered a::before{display:none}
:is(.gs-toc,.sp-toc) a:hover{color:#fff}
:is(.gs-toc,.sp-toc) a:hover::before{background:rgba(79,134,255,.3);color:#fff}
@media (max-width:1099.98px){:is(.gs-toc,.sp-toc){order:-1}}
@media (min-width:1100px){
  :is(.gs-doc,.sp-doc).has-toc{grid-template-columns:minmax(0,880px) minmax(200px,280px);align-items:start}
  :is(.gs-toc,.sp-toc){position:sticky;top:calc(var(--gs-header-h) + 20px);padding:var(--gs-s-2) 0 var(--gs-s-2) var(--gs-s-5);border:0;border-left:2px solid var(--gs-line-strong);border-radius:0;background:none}
}

/* --- [kit:state] state block: a centred message page (art, eyebrow, H1, lead, actions, help) --- */
:is(.gs-state,.sp-state){position:relative;isolation:isolate;display:flex;flex-direction:column;align-items:center;max-width:760px;margin:0 auto;padding:clamp(16px,4vw,48px) 0 var(--gs-s-6);text-align:center}
:is(.gs-state,.sp-state)>*{margin:0}
.gs-state__art,.sp-state__art{width:min(240px,62vw);height:auto;margin-bottom:var(--gs-s-5);animation:gs-float 6s ease-in-out infinite}
.gs-state__eyebrow,.sp-state__eyebrow{justify-content:center;margin-bottom:.5em}
.gs-state__title,.sp-state__title{font-size:var(--gs-fs-3xl);line-height:1.12;text-wrap:balance}
.gs-state__lead,.sp-state__lead{max-width:54ch;margin-top:.7em;color:var(--gs-text-2);font-size:var(--gs-fs-lg);line-height:1.55;text-wrap:balance}
.gs-state__actions,.sp-state__actions{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-top:var(--gs-s-6)}
.gs-state__help,.sp-state__help{margin-top:var(--gs-s-6);color:var(--gs-text-muted);font-size:var(--gs-fs-sm)}
@media (max-width:519.98px){.gs-state__actions,.sp-state__actions{flex-direction:column;align-items:stretch;width:100%}}
@media (prefers-reduced-motion:reduce){.gs-state__art,.sp-state__art{animation:none!important}}

/* --- [kit:editor] editor form for staff-written HTML (news, CMS pages) --- */
.gs-editor,.cms-editor{max-width:980px;margin:0}
.gs-editor__title,.cms-editor__title{font-size:var(--gs-fs-lg);font-weight:600}
.gs-editor__body,.cms-editor__body{min-height:320px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:var(--gs-fs-sm);line-height:1.55}

/* --- [kit:podium] podium: an undisputed top three as medal cards above a ranking table, which then starts at rank 4.
   ol.gs-podium > li.gs-podium__item--1|2|3 in rank order: __place (medal), __who (__name, __meta), __value (__num, __label).
   Promoted from the ranking sheet as it was built there. gs-podium--wide: a long value sits under the name.
   gs-podium--split: on phones gold keeps the full width, silver and bronze stand side by side;
   gs-podium--column: that arrangement at every width (a podium in a narrow column) --- */
.gs-podium{display:grid;gap:8px;margin:14px 0 var(--gs-s-3);padding:0;list-style:none}
.gs-podium__item{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;column-gap:14px;margin:0;padding:10px 16px;border:1px solid var(--gs-line);border-radius:var(--gs-r-3);background:var(--gs-surface)}
.gs-podium__item>*{margin:0}
.gs-podium__item--1{border-color:rgba(255,209,102,.5);background:linear-gradient(180deg,rgba(255,209,102,.13),rgba(255,209,102,.03) 72%),var(--gs-surface);box-shadow:inset 0 2px 0 var(--gs-gold-400),var(--gs-shadow-1)}
.gs-podium__item--2{border-color:rgba(213,224,242,.36);background:linear-gradient(180deg,rgba(205,220,245,.09),rgba(205,220,245,.02) 72%),var(--gs-surface);box-shadow:inset 0 2px 0 #d5e0f2}
.gs-podium__item--3{border-color:rgba(226,160,111,.42);background:linear-gradient(180deg,rgba(226,160,111,.1),rgba(226,160,111,.02) 72%),var(--gs-surface);box-shadow:inset 0 2px 0 #e2a06f}
.gs-podium__crest{position:absolute;top:-13px;left:50%;display:grid;place-items:center;width:26px;height:26px;margin-left:-13px;background:linear-gradient(135deg,#fff3c4 0%,#ffd166 48%,#c98a14 52%,#ffd166 100%);color:#2a1a00;clip-path:var(--gs-oct)}
.gs-podium__crest .gs-icon{width:15px;height:15px}
.gs-podium__place{display:grid;place-items:center}
.gs-podium__place .gs-medal{width:38px;height:38px;font-size:1rem}
.gs-podium__item--1 .gs-medal{width:46px;height:46px;font-size:1.25rem}
.gs-podium__who{min-width:0}
.gs-podium__name{margin:0;color:var(--gs-text);font:800 var(--gs-fs-md)/1.25 var(--gs-font-display);overflow-wrap:anywhere}
.gs-podium__item--1 .gs-podium__name{font-size:var(--gs-fs-lg)}
.gs-podium__name a{color:inherit;text-decoration-color:rgba(122,166,255,.5)}
.gs-podium__name a:hover{color:var(--gs-link-hover)}
.gs-podium__meta{display:flex;flex-wrap:wrap;align-items:center;gap:1px 12px;margin:3px 0 0;color:var(--gs-text-2);font-size:var(--gs-fs-xs);line-height:1.4}
.gs-podium__meta>span{min-width:0}
.gs-podium__meta :is(.gs-guildcell,.gs-board__guild){gap:6px}
.gs-podium__meta :is(.gs-emblem,.gs-board__noemblem){width:18px;height:18px}
.gs-podium__meta :is(.gs-guildcell,.gs-board__guild) a{color:inherit}
.gs-podium__value{display:flex;flex-direction:column;align-items:flex-end;gap:3px;text-align:right}
.gs-podium__num{color:#fff;font:800 var(--gs-fs-xl)/1 var(--gs-font-display);font-variant-numeric:tabular-nums;white-space:nowrap}
.gs-podium__item--1 .gs-podium__num{font-size:var(--gs-fs-2xl)}
.gs-podium__label{color:var(--gs-text-muted);font:700 .6875rem/1.3 var(--gs-font-display);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}
.gs-podium--wide .gs-podium__item{grid-template-columns:auto minmax(0,1fr);row-gap:4px}
.gs-podium--wide .gs-podium__place{grid-row:1/span 2}
.gs-podium--wide .gs-podium__value{grid-column:2;flex-direction:row;flex-wrap:wrap;align-items:baseline;justify-self:start;gap:2px 8px;text-align:left}
.gs-podium--wide .gs-podium__num,.gs-podium--wide .gs-podium__item--1 .gs-podium__num{font-size:var(--gs-fs-lg);white-space:normal}
@media (min-width:880px){
  .gs-podium{grid-template-columns:minmax(0,1fr) minmax(0,1.14fr) minmax(0,1fr);align-items:end;gap:12px}
  .gs-podium__item{grid-row:1}
  .gs-podium__item--1{grid-column:2;min-height:88px;padding-block:14px}
  .gs-podium__item--2{grid-column:1}
  .gs-podium__item--3{grid-column:3}
}
@media (max-width:879.98px){
  .gs-podium__num,.gs-podium__item--1 .gs-podium__num{font-size:var(--gs-fs-lg)}
  .gs-podium__item--1 .gs-podium__name{font-size:var(--gs-fs-md)}
  .gs-podium__item{column-gap:12px;padding:9px 12px}
  .gs-podium__place{width:46px}
}
@media (max-width:639.98px){
  .gs-podium--split{grid-template-columns:repeat(2,minmax(0,1fr))}
  .gs-podium--split .gs-podium__item--1{grid-column:1/-1}
  .gs-podium--split .gs-podium__item:not(.gs-podium__item--1){grid-template-columns:minmax(0,1fr);justify-items:center;row-gap:4px;padding-block:12px;text-align:center}
  .gs-podium--split .gs-podium__item:not(.gs-podium__item--1)>*{grid-area:auto;justify-self:center;justify-content:center;align-items:center;text-align:center}
  .gs-podium--split .gs-podium__item:not(.gs-podium__item--1) .gs-podium__meta{justify-content:center}
}
.gs-podium--column{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch}
.gs-podium--column .gs-podium__item{grid-row:auto;grid-column:auto}
.gs-podium--column .gs-podium__item--1{grid-column:1/-1}
.gs-podium--column .gs-podium__item:not(.gs-podium__item--1){grid-template-columns:minmax(0,1fr);justify-items:center;row-gap:4px;padding-block:12px;text-align:center}
.gs-podium--column .gs-podium__item:not(.gs-podium__item--1)>*{grid-area:auto;justify-self:center;justify-content:center;align-items:center;text-align:center}
.gs-podium--column .gs-podium__item:not(.gs-podium__item--1) .gs-podium__meta{justify-content:center}
@media (max-width:359.98px){
  .gs-podium__item{column-gap:10px;padding:9px 10px}
  .gs-podium__place{width:36px}
  .gs-podium__place .gs-medal{width:32px;height:32px;font-size:.875rem}
  .gs-podium__item--1 .gs-medal{width:36px;height:36px;font-size:1rem}
  .gs-podium__num,.gs-podium__item--1 .gs-podium__num{font-size:var(--gs-fs-md)}
}

/* --- [kit:divider] gem divider --- */
.gs-divider{position:relative;height:14px;margin:var(--gs-s-7) 0;border:0;background:linear-gradient(90deg,transparent,var(--gs-line-strong) 25%,var(--gs-line-strong) 75%,transparent) center/100% 1px no-repeat;overflow:visible}
.gs-divider::after{content:"";position:absolute;left:50%;top:50%;width:11px;height:11px;margin:-5.5px 0 0 -5.5px;transform:rotate(45deg);background:linear-gradient(135deg,var(--gs-azure-300) 50%,var(--gs-sapphire-600) 50%);box-shadow:0 0 0 4px var(--gs-bg),-14px 14px 0 -2px var(--gs-sapphire-400),14px -14px 0 -2px var(--gs-sapphire-400)}
.gs-divider--gold::after{background:linear-gradient(135deg,#ffe49a 50%,var(--gs-gold-500) 50%)}
.gs-divider--start{background-image:linear-gradient(90deg,var(--gs-line-strong),transparent);background-position:left center}
.gs-divider--start::after{left:5.5px}
/* sparkle divider between sections: a gold star between two azure ones on a line that turns gold near them */
.gs-divider--sparkle{height:24px;background:linear-gradient(90deg,transparent,var(--gs-line-strong) 22%,rgba(232,192,108,.5) 43%,transparent 45.5%,transparent 54.5%,rgba(232,192,108,.5) 57%,var(--gs-line-strong) 78%,transparent) center/100% 1px no-repeat}
.gs-divider--sparkle::after{width:72px;height:24px;margin:-12px 0 0 -36px;transform:none;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 24'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%23fff2c8'/%3E%3Cstop offset='1' stop-color='%23e2ad4c'/%3E%3C/linearGradient%3E%3CradialGradient id='h'%3E%3Cstop offset='0' stop-color='%23ffe7a3' stop-opacity='.5'/%3E%3Cstop offset='1' stop-color='%23ffe7a3' stop-opacity='0'/%3E%3C/radialGradient%3E%3C/defs%3E%3Ccircle cx='36' cy='12' r='11' fill='url(%23h)'/%3E%3Cpath d='M36 1.5C36.9 8.4 38.6 10.6 45 12 38.6 13.4 36.9 15.6 36 22.5 35.1 15.6 33.4 13.4 27 12 33.4 10.6 35.1 8.4 36 1.5Z' fill='url(%23g)'/%3E%3Cpath d='M17 7.5C17.5 10.6 18.4 11.4 21.5 12 18.4 12.6 17.5 13.4 17 16.5 16.5 13.4 15.6 12.6 12.5 12 15.6 11.4 16.5 10.6 17 7.5Z' fill='%238fd0ff'/%3E%3Cpath d='M55 7.5C55.5 10.6 56.4 11.4 59.5 12 56.4 12.6 55.5 13.4 55 16.5 54.5 13.4 53.6 12.6 50.5 12 53.6 11.4 54.5 10.6 55 7.5Z' fill='%238fd0ff'/%3E%3Ccircle cx='5' cy='12' r='1.3' fill='%235cb8ff'/%3E%3Ccircle cx='67' cy='12' r='1.3' fill='%235cb8ff'/%3E%3C/svg%3E") center/contain no-repeat;box-shadow:none;animation:gs-sparkle 5s ease-in-out infinite}
@keyframes gs-sparkle{0%,100%{opacity:.78}50%{opacity:1}}
@media (prefers-reduced-motion:reduce){.gs-divider--sparkle::after{animation:none}}

/* --- [kit:dialog] dialog (native <dialog>); gs-dialog--confirm is the one gs.js builds for data-gs-confirm-dialog --- */
.gs-dialog{width:min(560px,calc(100vw - 32px));max-height:min(86vh,760px);padding:0;border:1px solid var(--gs-line-strong);border-radius:var(--gs-r-3);background:linear-gradient(180deg,rgba(122,166,255,.07),rgba(122,166,255,0) 160px),var(--gs-night-850);color:var(--gs-text);box-shadow:var(--gs-shadow-3);overflow:auto}
.gs-dialog[open]{animation:gs-pop var(--gs-dur-3) var(--gs-ease)}
.gs-dialog::backdrop{background:rgba(3,7,18,.72);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
.gs-dialog--wide{width:min(840px,calc(100vw - 32px))}
.gs-dialog__frame{display:flex;flex-direction:column;margin:0}
.gs-dialog__head{display:flex;align-items:center;justify-content:space-between;gap:var(--gs-s-3);padding:var(--gs-s-5) var(--gs-s-5) 0}
.gs-dialog__title{margin:0;font-size:var(--gs-fs-xl)}
.gs-dialog__body{padding:var(--gs-s-4) var(--gs-s-5);color:var(--gs-text-2)}
.gs-dialog__body>:last-child{margin-bottom:0}
.gs-dialog__foot{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--gs-s-3);padding:var(--gs-s-4) var(--gs-s-5) var(--gs-s-5)}
@keyframes gs-pop{from{opacity:0;transform:translateY(10px) scale(.97)}to{opacity:1;transform:none}}
.gs-dialog--confirm{width:min(440px,calc(100vw - 32px))}
.gs-dialog--confirm .gs-dialog__title{font-size:var(--gs-fs-lg);line-height:1.3}
@media (max-width:479.98px){.gs-dialog--confirm .gs-dialog__foot{flex-direction:column-reverse}.gs-dialog--confirm .gs-dialog__foot .gs-btn{width:100%}}

/* --- [kit:tip] tooltip --- */
.gs-tip{position:relative;display:inline-flex}
.gs-tip__bubble{position:absolute;left:50%;bottom:calc(100% + 10px);z-index:50;width:max-content;max-width:260px;padding:8px 12px;border-radius:var(--gs-r-2);background:var(--gs-night-700);border:1px solid var(--gs-line-strong);box-shadow:var(--gs-shadow-2);color:var(--gs-text);font:600 var(--gs-fs-xs)/1.45 var(--gs-font-body);text-align:center;opacity:0;visibility:hidden;transform:translate(-50%,4px);transition:opacity var(--gs-dur-1),transform var(--gs-dur-1),visibility 0s linear var(--gs-dur-1);pointer-events:none}
.gs-tip__bubble::after{content:"";position:absolute;left:50%;top:100%;width:10px;height:10px;margin:-5px 0 0 -5px;transform:rotate(45deg);background:var(--gs-night-700);border-right:1px solid var(--gs-line-strong);border-bottom:1px solid var(--gs-line-strong)}
.gs-tip:hover>.gs-tip__bubble,.gs-tip:focus-within>.gs-tip__bubble{opacity:1;visibility:visible;transform:translate(-50%,0);transition-delay:0s}
.gs-tip.is-dismissed>.gs-tip__bubble{opacity:0;visibility:hidden}

/* --- [kit:skeleton] skeleton --- */
.gs-skeleton{position:relative;display:block;overflow:hidden;border-radius:var(--gs-r-1);background:rgba(140,175,255,.09)}
.gs-skeleton::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(143,208,255,.12),transparent);transform:translateX(-100%);animation:gs-shimmer 1.6s ease-in-out infinite}
.gs-skeleton--text{height:.85em;margin:.45em 0}
.gs-skeleton--title{height:1.6em;width:55%;margin-bottom:.6em}
.gs-skeleton--avatar{width:44px;height:44px;clip-path:var(--gs-oct)}
.gs-skeleton--row{height:44px;margin-bottom:6px;border-radius:var(--gs-r-2)}
.gs-skeleton--block{height:160px;border-radius:var(--gs-r-3)}
@keyframes gs-shimmer{to{transform:translateX(100%)}}

/* --- [kit:copyfield] copy field --- */
.gs-copyfield{display:flex;align-items:center;gap:6px;padding:4px 4px 4px 14px;border-radius:var(--gs-r-2);border:1px dashed rgba(122,166,255,.45);background:rgba(5,10,26,.45)}
.gs-copyfield code{flex:1;min-width:0;padding:0;background:none;font-size:var(--gs-fs-sm);color:var(--gs-azure-300);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gs-copyfield .gs-btn{--gs-btn-h:36px;--gs-cut:7px;padding:0 14px;font-size:var(--gs-fs-sm)}
@media (pointer:coarse),(max-width:767.98px){.gs-copyfield .gs-btn{--gs-btn-h:44px}}

/* --- [kit:auth] auth layout: card with art. The chibi peeks over the card and ducks while a password field has focus --- */
.gs-auth{position:relative;isolation:isolate;display:grid;align-items:center;justify-content:center;gap:var(--gs-s-7);padding:clamp(28px,5vw,64px) var(--gs-gutter) clamp(56px,7vw,96px);background:radial-gradient(800px 420px at 50% -10%,rgba(79,134,255,.18),transparent 70%)}
.gs-auth::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background-image:var(--gs-stars);background-size:280px 170px;mask-image:linear-gradient(180deg,#000,transparent 75%)}
.gs-auth__art{display:none}
/* the card is a strong gs-frame (core): sapphire panel, gold edge, corner brackets, the gem crest on its top edge */
.gs-auth__panel{position:relative;width:min(100%,480px);margin:66px auto 0}
.gs-auth__panel>:last-child{margin-bottom:0}
.gs-auth__panel>.gs-toast{box-shadow:none}
.gs-auth__peek{position:absolute;left:clamp(18px,7%,34px);top:-60px;z-index:-1;width:108px;pointer-events:none;transform:rotate(-4deg);transform-origin:50% 100%;transition:transform var(--gs-dur-3) var(--gs-ease);animation:gs-peek 7s ease-in-out infinite}
.gs-auth__peek img{display:block;width:100%;height:auto}
.gs-auth__panel:has(:is([type=password],[autocomplete$=password]):focus)>.gs-auth__peek{transform:translateY(110%) rotate(-4deg);animation:none}
@keyframes gs-peek{0%,100%{transform:translateY(7px) rotate(-4deg)}50%{transform:rotate(-2deg)}}
@media (min-width:1024px){
  .gs-auth{grid-template-columns:minmax(0,400px) minmax(0,500px);align-items:start}
  .gs-auth__art{display:block;position:sticky;top:calc(var(--gs-header-h) + 24px);margin-top:78px;isolation:isolate;height:clamp(380px,calc(100vh - var(--gs-header-h) - clamp(28px,5vw,64px) - 102px),640px);overflow:hidden;border-radius:var(--gs-r-3);border:1px solid var(--gs-line);background:linear-gradient(170deg,#0d1f4a 0%,#0a1638 55%,#071029 100%);box-shadow:var(--gs-shadow-2)}
  .gs-auth__art::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(5,10,26,.25),rgba(8,17,42,.1) 40%,rgba(8,17,42,.82) 88%),linear-gradient(90deg,rgba(5,10,26,.35),rgba(5,10,26,0) 60%)}
  .gs-auth__bg img{position:absolute;inset:0;z-index:-2;width:100%;height:100%;object-fit:cover;object-position:50% 30%}
  .gs-auth__figure img{position:absolute;right:18px;bottom:0;width:auto;height:min(253px,58%);filter:grayscale(1) sepia(.9) hue-rotate(190deg) saturate(3) brightness(.75) contrast(1.05) drop-shadow(0 10px 24px rgba(2,6,20,.6))}
  .gs-auth__aside{position:absolute;left:0;right:0;bottom:0;padding:48px 22px 22px;background:linear-gradient(0deg,rgba(5,10,26,.94) calc(100% - 48px),rgba(5,10,26,0));color:var(--gs-text);font-size:var(--gs-fs-sm);line-height:1.5}
  .gs-auth__aside>*{margin:0}
  .gs-auth__aside>*+*{margin-top:.6em}
  .gs-auth__aside :is(h2,h3){font:800 var(--gs-fs-md)/1.3 var(--gs-font-display);color:#fff}
  .gs-auth__aside :is(ol,ul){padding-left:1.4em}
  .gs-auth__aside li+li{margin-top:.35em}
  .gs-auth__aside a{color:#fff}
  .gs-auth__art--aside .gs-auth__figure{display:none}
  .gs-auth__panel{width:100%;margin:78px 0 0}
  .gs-auth__peek{top:-76px;width:136px}
}
@media (prefers-reduced-motion:reduce){.gs-auth__peek{animation:none!important}}
/* scene layout (gs-auth--scene: the page's auth scene, API.md addendum P5): ONE composition at every window size and zoom level.
   From 1024 px the area is a STAGE with the art column and the card on it, and it stands on the footer:
   - the stage (gs-auth__stage) holds the plate full bleed (cover), as wide as the window and as high as the first screen
     under the header less the slim footer's row, at every window size and zoom level, so a page whose card fits ends on the
     first screen: header, stage, footer. Zooming out never needs more device pixels than the window has (the 3840 file is
     enough), so the street fills the window there too, and no night sky shows beside or above it.
   - a card that does not fit (register, a short or zoomed-in window) makes the area longer: the stage and the art column
     are then as high as the window under the header and stay in view while the card scrolls (sticky at the window's foot),
     and at the end of the page their foot ends on the footer like the card's.
   - on the stage, in the header's container (--gs-auth-wrap), the ART COLUMN (gs-auth__zone: the lead in gs-auth__lead, an
     aside under it) and the CARD (--gs-auth-card-w) stand side by side. The lead's box (gs-auth__fig: the figure's canvas)
     is anchored at the column's right edge, next to the card, with the canvas's bottom edge on the stage's bottom edge: the
     footing (the cobbles of the plate a lead stands on, its contact shadows, the dark foot of a lead cut off at the legs)
     is in the figure files. Lead, aside and card are sized from the stage, so they keep their relation at every size.
   Below 1024 px: the page's strip on top, the card overlapping it by 24 / 40 px, then the footer.
   Order: plate, scrim (stage, z -2), peek (-1), lead, aside, card. */
.gs-auth--scene{--gs-auth-card-w:500px;--gs-auth-strip-h:clamp(136px,22vh,190px);--gs-auth-overlap:24px;display:flex;flex:1 0 auto;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:0;padding:0 var(--gs-gutter) 28px;overflow-x:clip;background:none}
.gs-auth--scene::before{content:none}
/* a window that is higher than the page (a tablet upright) lets the strip grow, up to the painting's own shape (2:1), so the
   page still ends on the window's foot with the footer */
.gs-auth__scene{position:relative;z-index:-2;flex:1 0 var(--gs-auth-strip-h);height:var(--gs-auth-strip-h);max-height:max(var(--gs-auth-strip-h),50vw);margin:0 calc(-1 * var(--gs-gutter));pointer-events:none}
.gs-auth__stage{position:absolute;inset:0;overflow:hidden}
.gs-auth__plate,.gs-auth__plate img{position:absolute;inset:0;width:100%;height:100%}
.gs-auth__plate img{max-width:none;object-fit:cover;object-position:var(--gs-strip-x,50%) var(--gs-strip-y,40%)}
.gs-auth__scrim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(5,10,26,.3),rgba(5,10,26,0) 26%),linear-gradient(0deg,var(--gs-bg),rgba(8,17,42,0) 42%)}
.gs-auth__zone{display:none}
/* the card takes no z-index (no stacking context of its own): the peek (z -1) then hides behind the card but stays above the stage (z -2) */
.gs-auth--scene .gs-auth__panel{width:100%;max-width:var(--gs-auth-card-w);margin:calc(-1 * var(--gs-auth-overlap)) auto 0}
.gs-auth__peek--scene{left:auto;right:clamp(16px,7%,34px);top:calc(var(--gs-cut-h,96px) * -.62);width:auto;height:min(var(--gs-cut-h,96px),96px);aspect-ratio:var(--gs-cut-ar,1.2);transform:none;animation:gs-auth-bob 4s ease-in-out infinite}
.gs-auth__peek--scene img{width:100%;height:100%;object-fit:contain}
.gs-auth__panel:has(:is([type=password],[autocomplete$=password]):focus)>.gs-auth__peek--scene{transform:translateY(110%);animation:none}
@keyframes gs-auth-bob{0%,100%{transform:translateY(4px)}50%{transform:none}}
/* tablets: a higher strip where the window is high enough (the heads were cut), a lower one in a short window */
@media (min-width:640px){.gs-auth--scene{--gs-auth-strip-h:clamp(170px,min(30vw,24vh),300px);--gs-auth-overlap:40px}}
@media (min-width:1024px){
  /* --gs-auth-foot: the height of the slim footer's row on this layout (its padding and its links; see the end of this section).
     --gs-auth-first: the first screen under the header less that row (the area's height when the card fits);
     --gs-auth-view: the window under the header (the stage's height while a long card scrolls).
     --gs-auth-lift: on a first screen higher than 2160 px (browser zoom 40 % and less) lead and card keep their places in its
     lowest 2160 px (the room above them is street): the card would otherwise float above the lead's head.
     --gs-auth-fig-max: the lead's largest height: 820 px (beside the card, as on a 1440 to 2560 px screen), and on a stage
     higher than 1280 px (zoom 50 % and less) 64 % of the stage, so it does not shrink into the big picture; never more than
     its file (1040 x 1300). The container (--gs-auth-wrap, the header's 1320 px) grows only by what the lead grows. */
  .gs-auth--scene{--gs-auth-foot:92px;--gs-auth-top:64px;--gs-auth-end:24px;
    --gs-auth-first:calc(100vh - var(--gs-header-h) - var(--gs-auth-foot));--gs-auth-view:calc(100vh - var(--gs-header-h));--gs-auth-lift:max(0px,var(--gs-auth-first) - 2160px);
    --gs-auth-fig-max:clamp(820px,var(--gs-auth-first) * .64,1300px);--gs-auth-wrap:calc(1320px + (var(--gs-auth-fig-max) - 820px) * .8);
    display:grid;grid-template-columns:minmax(0,1fr) min(var(--gs-auth-card-w),100% - 280px);grid-template-rows:minmax(0,1fr);column-gap:clamp(24px,3.4vw,56px);
    min-height:var(--gs-auth-first);padding:calc(var(--gs-auth-top) + var(--gs-auth-lift)) max(var(--gs-gutter),calc(50% - var(--gs-auth-wrap) / 2)) var(--gs-auth-end)}
  /* the scene spans the area, the stage stands at its foot */
  .gs-auth__scene{position:absolute;inset:0;z-index:-2;display:flex;flex-direction:column;justify-content:flex-end;height:auto;max-height:none;margin:0}
  /* The stage: the plate full bleed, as wide as the window and as high as the area, at most the window under the header. In a
     longer area it sticks to the window's foot (sticky, bottom 0), so while a long form scrolls it fills the window under the
     header, and at the end of the page its foot ends on the footer: the street never ends half way down the page. `bottom`
     after the `inset` reset: the other order reset it too. */
  .gs-auth__stage{position:sticky;inset:auto;bottom:0;flex:none;height:min(100%,var(--gs-auth-view))}
  .gs-auth__plate img{object-position:var(--gs-scene-x,50%) var(--gs-scene-y,50%)}
  /* darker under the header and toward the card; the street stays lit down to its foot (the leads stand on its cobbles), and
     only its last 72 px sink into the footer's colour (#050a1a, hard-coded: if the footer's colour changes, change it here too) */
  .gs-auth__scrim{background:linear-gradient(270deg,rgba(5,10,26,.5),rgba(5,10,26,.12) 42%,rgba(5,10,26,0) 64%),linear-gradient(180deg,rgba(5,10,26,.42),rgba(5,10,26,0) 20%)}
  .gs-auth__scrim::after{content:"";position:absolute;left:0;right:0;bottom:0;height:72px;background:linear-gradient(0deg,#050a1a,rgba(5,10,26,.78) 16px,rgba(5,10,26,.3) 40px,rgba(5,10,26,0))}
  /* the art column: the stage's twin. It reaches through the area's padding to the area's foot, is as high as the stage and
     sticks to the window's foot with it, so the lead stands on the stage's foot and the steps stay beside a long form */
  .gs-auth__zone{display:flex;flex-direction:column;position:sticky;bottom:0;align-self:end;min-width:0;height:calc(100% + var(--gs-auth-top) + var(--gs-auth-end));max-height:var(--gs-auth-view);margin:calc(-1 * var(--gs-auth-top)) 0 calc(-1 * var(--gs-auth-end))}
  /* the lead: its box is the figure's canvas, as high as the room above the stage's foot (or above the aside) and never wider
     than the column. --gs-auth-fig-base (footer.php, from scene.json): the part of the canvas the art fills; that line of the
     canvas sits on the foot of gs-auth__lead, whatever the box's size. The empty canvas under that line (the register cast
     ends at 63 %) is clipped: it would hang under the art column and lengthen the page. */
  .gs-auth__lead{position:relative;flex:1 1 0;min-height:0;margin-top:clamp(12px,4vh,44px);overflow:clip;pointer-events:none}
  .gs-auth__fig{position:absolute;right:0;bottom:calc((var(--gs-auth-fig-base,1) - 1) * min(100% / var(--gs-auth-fig-base,1),var(--gs-auth-fig-max)));height:min(100% / var(--gs-auth-fig-base,1),var(--gs-auth-fig-max));aspect-ratio:var(--gs-auth-fig-ar,.8);max-width:100%}
  .gs-auth__hero,.gs-auth__hero img{position:absolute;inset:0;display:block;width:100%;height:100%}
  .gs-auth__hero img{max-width:none;object-fit:contain;object-position:50% calc(var(--gs-auth-fig-base,1) * 100%)}
  /* the aside sits on the art itself: no box, a soft veil that fades in from the top, at both sides and below */
  .gs-auth--scene .gs-auth__aside{position:relative;z-index:2;inset:auto;flex:none;margin:0 0 clamp(16px,3.6vh,40px);padding:46px 22px 18px;border-radius:0;background:none}
  .gs-auth--scene .gs-auth__aside::before{content:"";position:absolute;inset:0 -30px -40px;z-index:-1;pointer-events:none;background:linear-gradient(180deg,rgba(5,10,26,0),rgba(5,10,26,.84) 44px,rgba(5,10,26,.9) calc(100% - 52px),rgba(5,10,26,0));-webkit-mask-image:linear-gradient(90deg,transparent,#000 52px,#000 calc(100% - 52px),transparent);mask-image:linear-gradient(90deg,transparent,#000 52px,#000 calc(100% - 52px),transparent)}
  /* the card: centred on the stage when it fits, from the area's top padding down when it does not */
  .gs-auth--scene .gs-auth__panel{grid-column:2;align-self:center;width:auto;max-width:none;margin:0}
}
@media (prefers-reduced-motion:reduce){.gs-auth__peek--scene{animation:none!important}}
/* The end of the page: the art reaches the footer and the footer follows at once. Under 1024 px the open sky behind the card's
   foot sinks into the footer's colour over the area's last 120 px (::after; from 1024 px the stage covers it). On this
   layout the slim footer has no margin and no fade of its own (they made an empty band between the art and its links), and
   the area grows to fill the window between header and footer (main is a flex column): from 1024 px the stage takes that
   room, under 1024 px the strip (see above). */
.gs-auth--scene::after{content:"";position:absolute;left:0;right:0;bottom:0;z-index:-3;height:120px;pointer-events:none;background:linear-gradient(180deg,rgba(5,10,26,0),rgba(5,10,26,.7) 60%,#050a1a)}
.gs-main--auth:has(>.gs-auth--scene){display:flex;flex-direction:column}
.gs-main--auth:has(>.gs-auth--scene)~.gs-footer--slim{margin-top:0;padding-top:0;background:#050a1a}
/* the sky keeps its cloud banks at opacity 0 on the auth layout (gs-sky.css, .gs-sky--auth): without a box their texture
   (img/sky/cloud-bank) is not fetched either. Only the banks: the stars and the far wisps stay as the sky draws them. */
.gs-sky--auth .gs-sky__bank{display:none}

/* --- [kit:staff] staff tools row: under the site header on every page, for accounts that have staff tools (header.php) --- */
.gs-adminbar{border-bottom:1px solid var(--gs-line);background:var(--gs-night-950)}
.gs-adminbar__inner{display:flex;align-items:center;gap:var(--gs-s-3);min-height:40px}
.gs-adminbar__title{display:inline-flex;align-items:center;gap:6px;flex:none;margin:0;color:var(--gs-text-muted);font:800 .75rem/1 var(--gs-font-display);letter-spacing:.06em;text-transform:uppercase}
.gs-adminbar__links{display:flex;gap:2px;min-width:0;padding:3px 0;overflow-x:auto;scrollbar-width:none}
.gs-adminbar__links::-webkit-scrollbar{display:none}
.gs-adminbar__links a{display:inline-flex;align-items:center;flex:none;min-height:32px;padding:0 10px;border-radius:var(--gs-r-1);color:var(--gs-text-2);font:700 var(--gs-fs-xs)/1 var(--gs-font-display);text-decoration:none;white-space:nowrap}
.gs-adminbar__links a:hover{background:rgba(140,175,255,.12);color:#fff}
.gs-adminbar__links a[aria-current]{background:rgba(79,134,255,.26);color:#fff}
.gs-adminbar__links a:focus-visible{outline-offset:-3px}
@media (max-width:519.98px){.gs-adminbar__title span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}}
@media (pointer:coarse),(max-width:767.98px){.gs-adminbar__links a{min-height:44px}}
@media print{.gs-adminbar{display:none}}
