/* Shared site chrome: one header and one footer on every printerlaunch.com page outside the Launchpad app.
   Matches the visitor pages exactly (72px header, 13px breadcrumb, 44px controls, quiet 12px footer). */

/* Header on standalone pages (visitor pages already get these values from printer-ui.css) */
.printer-page-content > header.printer-site-header,
body > header.printer-site-header {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  min-height: 72px; margin: 0; padding: 0 32px; box-sizing: border-box;
  border: 0; border-bottom: 1px solid var(--ui-line, var(--line, #e2dacb));
  background: var(--ui-bg, var(--wash, #fffcf5)); color: var(--ui-ink, var(--ink, #222c35));
  position: relative; z-index: 5; max-width: none; width: auto;
}
.printer-site-header .visitor-header-title { display: flex; align-items: center; gap: 12px; min-width: 0; font: 500 13px/1.5 Geist, Arial, sans-serif; color: var(--ui-muted, var(--muted, #596874)); }
.printer-site-header .visitor-route { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.printer-site-header .visitor-route a { color: inherit; text-decoration: none; }
.printer-site-header .visitor-route a:hover { color: var(--ui-ink, var(--ink, #222c35)); }
.printer-site-header .visitor-route strong { font-weight: 600; color: var(--ui-ink, var(--ink, #222c35)); }
.printer-page-content > .printer-site-header .visitor-mobile-brand { display: none; }
.printer-site-header > .row { display: flex; align-items: center; gap: 10px; margin-left: auto; flex-shrink: 0; }
.printer-page-content > .printer-site-header .button {
  display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 8px 14px;
  border-radius: 8px; border: 1px solid var(--ui-line, var(--line, #e2dacb)); background: var(--ui-panel, #fffdf9);
  color: var(--ui-ink, var(--ink, #222c35)); font: 550 13px/1.6 Geist, Arial, sans-serif; text-decoration: none; white-space: nowrap; box-shadow: none;
}
.printer-page-content > .printer-site-header .button.primary { background: var(--ui-blue, #3c4fed); border-color: var(--ui-blue, #3c4fed); color: #fff; }
html[data-theme=dark] .printer-page-content > .printer-site-header .button.primary { color: #18212d; }
.printer-page-content > .printer-site-header .mobile-menu { display: none; }
.printer-site-header .printer-theme-control { order: 8; }
.printer-site-header .header-actions:empty { display: none; }
.printer-site-header .header-actions { display: flex; align-items: center; gap: 10px; }

/* Footer: identical on visitor, standalone and holder app pages */
footer.printer-site-footer {
  display: flex; align-items: center; flex-wrap: wrap; gap: 10px 22px;
  min-height: 80px; margin: 0 46px; padding: 18px 0; box-sizing: border-box;
  border: 0; border-top: 1px solid var(--ui-line, var(--line, #e2dacb)); background: transparent;
  font: 400 12px/1.6 Geist, Arial, sans-serif; color: var(--ui-muted, var(--muted, #626b70));
  max-width: none; width: auto; text-align: left;
}
footer.printer-site-footer .printer-site-footer-brand { display: inline-flex; flex: none; }
footer.printer-site-footer img { display: block; width: 100px; height: 28px; }
footer.printer-site-footer > span { flex: 1 1 auto; }
footer.printer-site-footer nav { display: flex; flex-wrap: wrap; gap: 6px 18px; margin: 0 0 0 auto; padding: 0; }
footer.printer-site-footer a { color: inherit; text-decoration: none; }
footer.printer-site-footer nav a:hover, footer.printer-site-footer nav a:focus-visible { color: var(--ui-ink, var(--ink, #222c35)); text-decoration: underline; text-underline-offset: 3px; }

@media (max-width: 900px) {
  .printer-page-content > header.printer-site-header { padding: 0 18px; min-height: 64px; }
  .printer-page-content > .printer-site-header .button.quiet { display: none; }
}
@media (max-width: 720px) {
  footer.printer-site-footer { margin: 0 18px; padding: 22px 0 28px; flex-direction: column; align-items: flex-start; gap: 12px; }
  footer.printer-site-footer > span { flex: none; }
  footer.printer-site-footer nav { margin: 0; gap: 10px 18px; }
  .printer-page-content > .printer-site-header .button.primary { display: none; }
}

/* 404 page */
.printer-not-found { max-width: 640px; padding: 72px 0 96px; }
.printer-not-found .eyebrow { margin: 0 0 14px; font: 600 12px/1.4 Geist, Arial, sans-serif; letter-spacing: .08em; color: var(--ui-blue, #3c4fed); }
.printer-not-found h1 { margin: 0 0 16px; font-size: clamp(36px, 5vw, 56px); line-height: 1.04; letter-spacing: -.035em; }
.printer-not-found p { margin: 0 0 28px; font-size: 16px; color: var(--ui-muted, #596874); }
.printer-not-found-actions { display: flex; flex-wrap: wrap; gap: 10px; }

/* Page fixes */
body[data-page=community-press] .application-intro h1 { color: #fffcf5 !important; }
/* Headings on the dark launch banners keep their light colour inside the shared shell */
body[data-page=links] .launch-feature h2 { color: #f8f8f6 !important; }
body[data-page=links] main.page { margin: 0; max-width: 1120px; padding: 32px 32px 52px; }
/* Page stylesheets must not resize the shared header controls */
.printer-site-header > .row > .header-actions { width: auto !important; flex: none !important; max-width: none !important; }
.printer-site-header > .row > .button { width: auto !important; flex: none !important; min-width: 0 !important; }
/* Holder app pages put the footer straight on body, beside the fixed sidebar */
@media (min-width: 761px) {
  body.printer-season-site > footer.printer-site-footer { margin-left: calc(var(--ui-rail, 216px) + 46px); }
}
/* X now lives in the shared footer on every page, so the holder app header matches the Launchpad header */
.printer-season-site .header .social-x { display: none !important; }
.printer-not-found-actions .button { display: inline-flex; align-items: center; min-height: 44px; padding: 10px 16px; border-radius: 8px; font: 550 13px/1.5 Geist, Arial, sans-serif; text-decoration: none; }
.printer-not-found-actions .button.quiet { border: 1px solid var(--ui-line, #e2dacb); background: var(--ui-panel, #fffdf9); color: var(--ui-ink, #222c35); }
/* Phone: the standalone pages show the logo and the shared menu button, like every other page */
@media (max-width: 760px) {
  .printer-page-content > .printer-site-header .visitor-mobile-brand { display: inline-flex; }
  .printer-page-content > .printer-site-header .visitor-mobile-brand img { width: 110px; height: 32px; }
  .printer-page-content > .printer-site-header .visitor-route { display: none; }
}
/* The legacy ".printer-page-content > .header" rule offsets old headers by the rail width; the shared header sits in normal flow */
html body .printer-page-content > header#header.printer-site-header { position: relative !important; left: auto !important; right: auto !important; top: auto !important; width: auto !important; margin: 0 !important; }
/* Home burn leaderboard: the action link looks like every other section link */
section.burn-board a.burn-board-choose { display: inline-flex; gap: 6px; margin-top: 6px; color: var(--ui-blue-text, #3448c8); font: 500 13px/1.5 Geist, Arial, sans-serif; text-decoration: none; }
section.burn-board a.burn-board-choose:hover { text-decoration: underline; text-underline-offset: 3px; }
html[data-theme=dark] section.burn-board a.burn-board-choose { color: var(--ui-blue, #93a3ff); }
/* Elements kept only so page scripts still find them (for example #theme on Get Printer) */
[data-printer-kept] { display: none !important; }
/* Explore: the directory fills in after first paint. Reserve its space so the footer starts below the fold
   and nothing visible moves when the coins arrive (layout shift was 0.21). */
body[data-page="/explore"] #explore-results { min-height: calc(100vh - 160px); }

/* ---- Loading: the first frame looks like the finished page ---- */
/* Language picker placeholder, same box as the real one; it steps aside when language.js mounts. */
.printer-language-slot { position: relative; flex: none; margin-left: 2px; pointer-events: none; }
.printer-language-slot .printer-language-trigger { color: var(--text, #202020); }
.printer-i18n-ready .printer-language-slot, .header-actions:has(> .printer-language) > .printer-language-slot { display: none !important; }
/* The holder app fills its view after its scripts run. Keep the footer below the fold meanwhile. */
body.printer-holder-app main#main { min-height: 100vh; }
/* Get Printer: the swap widget gets its final box before Jupiter loads, on a soft surface instead of black. */
body[data-page="get-printer"] #coin-swap-panel:not([hidden]) { min-height: 615px; }
body[data-page="get-printer"] #printer-jupiter:not([hidden]) { min-height: 450px; background: var(--ui-soft, #f5f0e5); border-radius: 12px; }
html[data-theme=dark] body[data-page="get-printer"] #printer-jupiter:not([hidden]) { background: #252d32; }

/* NFT page: the rewards box fills in after load; hold its space so the gallery does not jump. */
body[data-page="/nft"] #nft-earnings:empty { min-height: 670px; }
@media (max-width: 760px) { body[data-page="/nft"] #nft-earnings:empty { min-height: 713px; } }
/* Resources: the library is drawn by script; keep the footer below the fold until it arrives. */
body[data-page="/resources"] main#main { min-height: 100vh; }

/* ---- Less scrolling ---- */
/* Achievements: the cabinet shows six badges per row on wide screens, about half the scrolling. */
@media (min-width: 1051px) {
  body.achievement-page .achievement-grid { grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 12px; }
  body.achievement-page .achievement-card-art { min-height: 0; padding: 14px 0 16px; }
  body.achievement-page .achievement-card-art .printer-badge { zoom: .74; }
  body.achievement-page .achievement-card-copy { padding: 12px 13px 14px; }
  body.achievement-page .achievement-card h3 { font-size: 15px; margin: 6px 0; letter-spacing: -.3px; }
  body.achievement-page .achievement-card-copy p { min-height: 0; margin-bottom: 10px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
}

/* ---- Two patterns for every tab and switch on the site ---- */
/* 1. Page tabs move between the views of one place. Text with an underline, one row only. */
html body :is(.printer-area-tabs, .holder-primary-nav, .unified-holder-nav, .holder-subnav) { display: flex !important; flex-wrap: nowrap; gap: 26px; margin: 0 0 22px; padding: 0; border: 0; border-bottom: 1px solid var(--ui-line, #e2dacb); border-radius: 0; background: none; box-shadow: none; overflow-x: auto; scrollbar-width: none; grid-template-columns: none; }
html body :is(.printer-area-tabs, .holder-primary-nav, .unified-holder-nav, .holder-subnav)::-webkit-scrollbar { display: none; }
html body :is(.printer-area-tabs, .holder-primary-nav, .unified-holder-nav, .holder-subnav) > :is(a, button) { flex: none; display: inline-flex; align-items: center; width: auto; min-width: 0; min-height: 44px; margin: 0 0 -1px; padding: 0; border: 0; border-bottom: 2px solid transparent; border-radius: 0; background: none; box-shadow: none; color: var(--ui-muted, #596874); font: 500 14px/1.2 Geist, Arial, sans-serif; letter-spacing: 0; text-decoration: none; white-space: nowrap; cursor: pointer; }
html body :is(.printer-area-tabs, .holder-primary-nav, .unified-holder-nav, .holder-subnav) > :is(a, button):hover { color: var(--ui-ink, #222c35); }
html body :is(.printer-area-tabs, .holder-primary-nav, .unified-holder-nav, .holder-subnav) > :is([aria-current=page], [aria-current=true], [aria-selected=true], [aria-pressed=true], .is-active, .active) { color: var(--ui-ink, #222c35); font-weight: 600; border-bottom-color: var(--ui-blue, #3c4fed); }
/* 2. Switches filter, sort or swap what one page shows. One rounded track, the chosen item lifts out. */
html body :is(.segmented, .home-launches-sort, .holder-settings-nav, nav.sub-nav, .creative-tabs, .creative-filters, .achievement-tabs, .coin-trade-tabs, .view-toggle, .collection-state-options) { display: inline-flex !important; flex-wrap: nowrap; align-items: center; gap: 4px; max-width: 100%; padding: 4px; border: 1px solid var(--ui-line, #e2dacb); border-radius: 10px; background: var(--ui-soft, #f2ede2); box-shadow: none; overflow-x: auto; scrollbar-width: none; grid-template-columns: none; }
html body :is(.segmented, .home-launches-sort, .holder-settings-nav, nav.sub-nav, .creative-tabs, .creative-filters, .achievement-tabs, .coin-trade-tabs, .view-toggle, .collection-state-options)::-webkit-scrollbar { display: none; }
html body :is(.segmented, .home-launches-sort, .holder-settings-nav, nav.sub-nav, .creative-tabs, .creative-filters, .achievement-tabs, .coin-trade-tabs, .view-toggle, .collection-state-options) > :is(a, button) { flex: none; display: inline-flex; align-items: center; justify-content: center; gap: 6px; width: auto; min-width: 0; min-height: 36px; margin: 0; padding: 7px 14px; border: 1px solid transparent; border-radius: 7px; background: transparent; box-shadow: none; color: var(--ui-muted, #596874); font: 500 13px/1.2 Geist, Arial, sans-serif; letter-spacing: 0; text-decoration: none; white-space: nowrap; cursor: pointer; }
html body :is(.segmented, .home-launches-sort, .holder-settings-nav, nav.sub-nav, .creative-tabs, .creative-filters, .achievement-tabs, .coin-trade-tabs, .view-toggle, .collection-state-options) > :is(a, button):hover { color: var(--ui-ink, #222c35); }
html body :is(.segmented, .home-launches-sort, .holder-settings-nav, nav.sub-nav, .creative-tabs, .creative-filters, .achievement-tabs, .coin-trade-tabs, .view-toggle, .collection-state-options) > :is([aria-current=page], [aria-current=true], [aria-selected=true], [aria-pressed=true], .is-active, .active) { background: var(--ui-panel, #fffdf9); border-color: var(--ui-line, #e2dacb); color: var(--ui-ink, #222c35); font-weight: 600; box-shadow: 0 1px 2px #18232d14; }
html[data-theme=dark] body :is(.printer-area-tabs, .holder-primary-nav, .unified-holder-nav, .holder-subnav) { border-bottom-color: #3a4146; }
html[data-theme=dark] body :is(.printer-area-tabs, .holder-primary-nav, .unified-holder-nav, .holder-subnav) > :is([aria-current=page], [aria-current=true], [aria-selected=true], [aria-pressed=true], .is-active, .active) { color: #f4f1ea; border-bottom-color: #93a3ff; }
html[data-theme=dark] body :is(.segmented, .home-launches-sort, .holder-settings-nav, nav.sub-nav, .creative-tabs, .creative-filters, .achievement-tabs, .coin-trade-tabs, .view-toggle, .collection-state-options) { background: #2a3136; border-color: #3a4146; }
html[data-theme=dark] body :is(.segmented, .home-launches-sort, .holder-settings-nav, nav.sub-nav, .creative-tabs, .creative-filters, .achievement-tabs, .coin-trade-tabs, .view-toggle, .collection-state-options) > :is([aria-current=page], [aria-current=true], [aria-selected=true], [aria-pressed=true], .is-active, .active) { background: #3a4248; border-color: #4a535a; color: #f4f1ea; }
/* Some components style their own active state with stronger rules; the shared look wins here. */
html body :is(.segmented, .home-launches-sort, .holder-settings-nav, nav.sub-nav, .creative-tabs, .creative-filters, .achievement-tabs, .coin-trade-tabs, .view-toggle, .collection-state-options) > :is(a, button), html body :is(.segmented, .home-launches-sort, .holder-settings-nav, nav.sub-nav, .creative-tabs, .creative-filters, .achievement-tabs, .coin-trade-tabs, .view-toggle, .collection-state-options) > :is(a, button):is(:hover, :focus-visible) { padding: 7px 14px !important; border: 1px solid transparent !important; border-radius: 7px !important; background: transparent !important; box-shadow: none !important; color: var(--ui-muted, #596874) !important; font: 500 13px/1.2 Geist, Arial, sans-serif !important; text-decoration: none !important; }
html body :is(.segmented, .home-launches-sort, .holder-settings-nav, nav.sub-nav, .creative-tabs, .creative-filters, .achievement-tabs, .coin-trade-tabs, .view-toggle, .collection-state-options) > :is(a, button):hover { color: var(--ui-ink, #222c35) !important; }
html body :is(.segmented, .home-launches-sort, .holder-settings-nav, nav.sub-nav, .creative-tabs, .creative-filters, .achievement-tabs, .coin-trade-tabs, .view-toggle, .collection-state-options) > :is([aria-current=page], [aria-current=true], [aria-selected=true], [aria-pressed=true], .is-active, .active) { background: var(--ui-panel, #fffdf9) !important; border-color: var(--ui-line, #e2dacb) !important; color: var(--ui-ink, #222c35) !important; font-weight: 600 !important; box-shadow: 0 1px 2px #18232d14 !important; }
html body :is(.segmented, .home-launches-sort, .holder-settings-nav, nav.sub-nav, .creative-tabs, .creative-filters, .achievement-tabs, .coin-trade-tabs, .view-toggle, .collection-state-options) > :is(a, button)::before, html body :is(.segmented, .home-launches-sort, .holder-settings-nav, nav.sub-nav, .creative-tabs, .creative-filters, .achievement-tabs, .coin-trade-tabs, .view-toggle, .collection-state-options) > :is(a, button)::after { display: none !important; }
html body :is(.segmented, .home-launches-sort, .holder-settings-nav, nav.sub-nav, .creative-tabs, .creative-filters, .achievement-tabs, .coin-trade-tabs, .view-toggle, .collection-state-options) { border-bottom: 1px solid var(--ui-line, #e2dacb) !important; }
html[data-theme=dark] body :is(.segmented, .home-launches-sort, .holder-settings-nav, nav.sub-nav, .creative-tabs, .creative-filters, .achievement-tabs, .coin-trade-tabs, .view-toggle, .collection-state-options) > :is([aria-current=page], [aria-current=true], [aria-selected=true], [aria-pressed=true], .is-active, .active) { background: #3a4248 !important; border-color: #4a535a !important; color: #f4f1ea !important; }
html[data-theme=dark] body :is(.segmented, .home-launches-sort, .holder-settings-nav, nav.sub-nav, .creative-tabs, .creative-filters, .achievement-tabs, .coin-trade-tabs, .view-toggle, .collection-state-options) > :is(a, button):not([aria-current=page], [aria-current=true], [aria-selected=true], [aria-pressed=true], .is-active, .active) { color: #aab3b9 !important; }
html[data-theme=dark] body :is(.segmented, .home-launches-sort, .holder-settings-nav, nav.sub-nav, .creative-tabs, .creative-filters, .achievement-tabs, .coin-trade-tabs, .view-toggle, .collection-state-options) { border-bottom-color: #3a4146 !important; }

/* ---- Places: one tab row per place ---- */
/* Your profile keeps Account and My Printers; Rewards and Community are their own sidebar places,
   so their buttons leave this row, and the row hides on their views. */
.holder-primary-nav [data-home-view=choices], .holder-primary-nav [data-home-view=activity] { display: none !important; }
/* Round 6: the giveaway, vote and leaderboard views carry the full Rewards row; space it like every other tab row. */
html body .holder-subnav[aria-label="Community activities"] { gap: 26px !important; }
html body #page-community .holder-subnav[aria-label="Community activities"] > a { flex: none !important; width: auto !important; min-width: 0 !important; margin: 0 !important; padding: 10px 0 !important; }
#page-community:is([data-home-view=choices], [data-home-view=rewards], [data-home-view=activity], [data-home-view=posts]) .holder-primary-nav { display: none !important; }
/* The place title already says Rewards; the inner repeat of it goes. */
#holder-reward-navigation > .community-view-heading { display: none; }
/* Holder tab rows: links and buttons look the same, and nothing in the row looks like a button. */
html body .holder-subnav > a, html body .holder-subnav > button { border: 0 !important; border-bottom: 2px solid transparent !important; border-radius: 0 !important; background: none !important; box-shadow: none !important; padding: 0 !important; min-height: 44px; color: var(--ui-muted, #596874) !important; font: 500 14px/1.2 Geist, Arial, sans-serif !important; }
html body .holder-subnav > :is([aria-current=page], [aria-selected=true]) { color: var(--ui-ink, #222c35) !important; font-weight: 600 !important; border-bottom-color: var(--ui-blue, #3c4fed) !important; }
html[data-theme=dark] body .holder-subnav > :is([aria-current=page], [aria-selected=true]) { color: #f4f1ea !important; border-bottom-color: #93a3ff !important; }
html body .holder-subnav > :is(a, button)::before, html body .holder-subnav > :is(a, button)::after { display: none !important; }
/* Printer NFT row inside the holder app: only on the mint, rarity and collection views. */
.printer-area-tabs[data-spa] { display: none !important; }
body:is([data-page=store], [data-page=rarity], [data-page=printers]) .printer-area-tabs[data-spa=nft] { display: flex !important; }
body.printer-holder-app main#main > .printer-area-tabs { margin: 0 0 18px; }

/* Leaderboard: a lone status row (loading or empty) spans the whole list instead of the 20px rank column. */
html body #community-leaderboard > li:only-child:not(:has(*)) { display: block !important; grid-column: 1 / -1; width: auto; padding: 14px 0; font-size: 13px; color: var(--ui-muted, #596874); white-space: normal; }

/* ---- Round 5: one header on every page (the otcdesks.cash pattern) ----
   Breadcrumb on the left; language, one wallet button, Launch a project and the theme switch on the right.
   The holder app carries the same header inside its .header/.header-inner bar. Colours are literal so the
   header looks the same whichever page stylesheets are loaded. */
.printer-site-header .printer-wallet-button, .printer-site-header .printer-header-cta { box-sizing: border-box; display: inline-flex !important; align-items: center; justify-content: center; gap: 8px; height: 44px; min-height: 44px; border-radius: 8px; font: 550 13px/1.4 Geist, Arial, sans-serif; letter-spacing: 0; white-space: nowrap; text-decoration: none; cursor: pointer; transition: background-color .15s, border-color .15s; }
.printer-site-header .printer-wallet-button { padding: 0 14px !important; border: 1px solid #e2dacb !important; border-radius: 8px !important; background: #fffdf9 !important; color: #222c35 !important; order: 6; }
.printer-site-header .printer-wallet-button:hover { background: #efede6 !important; border-color: #92989b !important; }
.printer-site-header .printer-wallet-button svg { display: none; width: 20px; height: 20px; flex: none; }
.printer-site-header .printer-wallet-button i { display: block; flex: none; width: 8px; height: 8px; border-radius: 50%; box-shadow: inset 0 0 0 1.5px currentColor; opacity: .45; }
.printer-site-header .printer-wallet-button[data-connected="true"] i { background: #2f9e5b; box-shadow: none; opacity: 1; }
.printer-site-header .printer-wallet-button[aria-busy="true"] i { animation: printer-wallet-pulse 1s ease-in-out infinite; }
.printer-site-header .printer-wallet-button strong { font: inherit; color: inherit; }
.printer-site-header .printer-header-cta { padding: 0 16px; border: 1px solid #3c4fed; background: #3c4fed; color: #fff; font-weight: 600; order: 7; }
.printer-site-header .printer-header-cta:hover { background: #3243d0; border-color: #3243d0; }
.printer-site-header .printer-wallet-button:focus-visible, .printer-site-header .printer-header-cta:focus-visible { outline: 2px solid #4554d8; outline-offset: 3px; }
html[data-theme=dark] .printer-site-header .printer-wallet-button { border-color: #465159 !important; background: #252d32 !important; color: #f4f1e8 !important; }
html[data-theme=dark] .printer-site-header .printer-wallet-button:hover { background: #354149 !important; border-color: #82919b !important; }
html[data-theme=dark] .printer-site-header .printer-header-cta { border-color: #93a3ff; background: #93a3ff; color: #18212d; }
html[data-theme=dark] .printer-site-header .printer-header-cta:hover { background: #a9b6ff; border-color: #a9b6ff; }
@keyframes printer-wallet-pulse { 50% { opacity: .15; } }
@media (prefers-reduced-motion: reduce) { .printer-site-header .printer-wallet-button[aria-busy="true"] i { animation: none; } }
/* The holder app's bar holds the shared header: same breadcrumb, same buttons, same order. */
.printer-holder-header { display: flex !important; align-items: center; gap: 16px; width: 100%; min-width: 0; }
.printer-holder-header > .visitor-header-title { flex: 1 1 auto; }
.printer-holder-header .visitor-route { font: 500 13px/1.5 Geist, Arial, sans-serif; color: #596874; }
.printer-holder-header .visitor-route strong { font-weight: 600; color: #222c35; }
html[data-theme=dark] .printer-holder-header .visitor-route { color: #aeb7bd; }
html[data-theme=dark] .printer-holder-header .visitor-route strong { color: #f4f1e8; }
@media (min-width: 761px) { .printer-holder-header .visitor-mobile-brand { display: none !important; } }
/* Phone: logo, then the wallet button, the theme switch and the menu, on every page. Launch a project is the
   first item in the menu; the language picker moves into the menu as well. */
@media (max-width: 760px) {
  .printer-site-header .printer-header-cta { display: none !important; }
  .printer-site-header > .row > .printer-wallet-button.button, .printer-site-header .printer-wallet-button { position: relative; width: 44px !important; min-width: 44px !important; padding: 0 !important; }
  .printer-site-header .printer-wallet-button svg { display: block; }
  .printer-site-header .printer-wallet-button i { position: absolute; top: 8px; right: 8px; width: 7px; height: 7px; }
  .printer-site-header .printer-wallet-button[data-connected="false"] i { display: none; }
  .printer-site-header .printer-wallet-button strong { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
  .printer-site-header > .row > .header-actions, .printer-holder-header > .row > .header-actions { display: contents !important; }
  .printer-site-header .printer-language-slot, .printer-site-header .header-actions > .printer-language { display: none !important; }
  .printer-site-header .mobile-menu, .printer-site-header .printer-season-menu-button { order: 9; }
  .printer-site-header > .row, .printer-holder-header > .row { gap: 8px; }
  .printer-holder-header .visitor-route { display: none; }
}
/* Visitor pages: on a phone the language picker sits at the end of the menu (moved by /printer-touches.js). */
.printer-rail-settings { display: none; }
@media (max-width: 760px) {
  .printer-rail-settings { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 14px 12px 4px; padding-top: 14px; border-top: 1px solid #e2dacb; font: 500 13px/1.5 Geist, Arial, sans-serif; color: #596874; }
  html[data-theme=dark] .printer-rail-settings { border-color: #414d55; color: #aeb7bd; }
  .printer-rail-settings:empty, .printer-rail-settings:not(:has(.printer-language)) { display: none; }
}

/* ---- Round 7: standalone holder pages in the holder app's look ----
   Achievements, Print Room and the community giveaway are separate pages. Opening them from a holder view used to
   change the background, drop the place title and move the tabs. They now start exactly like a holder view: the
   place title and lede, the wallet line, the place's one tab row, then the section heading. Values are measured
   from the holder app (light and dark). */
body.printer-standalone-holder { background: #fffcf5 !important; color: #222c35; }
html[data-theme=dark] body.printer-standalone-holder { background: #1d2327 !important; color: #f0ede5; }
body.printer-standalone-holder main { padding-top: 32px !important; padding-bottom: 48px !important; }
body.printer-standalone-holder main > :is(.printer-place-head, .printer-place-wallet, .unified-holder-nav) { max-width: 1176px; }
.printer-place-head { margin: 0 0 18px; }
.printer-place-head h1 { margin: 0 0 16px !important; font: 650 36px/1.18 Geist, Arial, sans-serif !important; letter-spacing: -1.26px !important; color: #283239 !important; }
.printer-place-head > p { margin: 0 !important; font: 400 14px/1.6 Geist, Arial, sans-serif !important; color: #637078 !important; }
.printer-place-note { margin: 8px 0 0 !important; font: 400 14px/1.6 Geist, Arial, sans-serif; }
.printer-place-note a { color: #3448c8; font-weight: 550; text-decoration: none; }
.printer-place-note a:hover { text-decoration: underline; text-underline-offset: 3px; }
.printer-place-wallet { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 44px; margin: 0 0 14px; padding: 0 0 8px; border-bottom: 1px solid #e2dacb; }
.printer-place-wallet strong { font: 700 13px/1.3 Geist, Arial, sans-serif; color: #222c35; }
.printer-place-wallet a { display: inline-flex; align-items: center; min-height: 44px; font: 400 13px/1.6 Geist, Arial, sans-serif; color: #3448c8; text-decoration: none; }
.printer-place-wallet a:hover { text-decoration: underline; text-underline-offset: 3px; }
html[data-theme=dark] .printer-place-head h1, html[data-theme=dark] .printer-place-wallet strong { color: #f0ede5 !important; }
html[data-theme=dark] .printer-place-head > p { color: #b9c1c6 !important; }
html[data-theme=dark] .printer-place-wallet { border-bottom-color: #414d55; }
html[data-theme=dark] :is(.printer-place-wallet a, .printer-place-note a) { color: #a9b6ff; }
/* Every holder tab row looks the same: 26 px apart, nothing pushed to the right, and the current tab in ink with
   the blue underline (the Printer NFT row's look). Before, the rows used 8, 25, 26 and 28 px and two current colours. */
html body :is(.unified-holder-nav, .holder-subnav, .holder-primary-nav), html body #page-community :is(.holder-subnav, .holder-primary-nav) { gap: 26px !important; justify-content: flex-start !important; margin: 0 0 24px !important; padding: 0 !important; border-bottom: 1px solid #e2dacb !important; }
html body :is(.unified-holder-nav, .holder-subnav, .holder-primary-nav) > :is(a, button), html body #page-community :is(.holder-subnav, .holder-primary-nav) > :is(a, button) { flex: none !important; width: auto !important; min-width: 0 !important; min-height: 44px !important; margin: 0 0 -1px !important; padding: 10px 0 !important; color: #596874 !important; font: 500 14px/1.2 Geist, Arial, sans-serif !important; }
html body :is(.unified-holder-nav, .holder-subnav, .holder-primary-nav) > :is([aria-current=page], [aria-current=true], [aria-selected=true], [aria-pressed=true], .is-active, .active), html body #page-community :is(.holder-subnav, .holder-primary-nav) > :is([aria-current=page], [aria-current=true], [aria-selected=true], [aria-pressed=true], .is-active, .active) { color: #222c35 !important; font-weight: 600 !important; border-bottom: 2px solid #3c4fed !important; }
html[data-theme=dark] body :is(.unified-holder-nav, .holder-subnav, .holder-primary-nav), html[data-theme=dark] body #page-community :is(.holder-subnav, .holder-primary-nav) { border-bottom-color: #3a4146 !important; }
html[data-theme=dark] body :is(.unified-holder-nav, .holder-subnav, .holder-primary-nav) > :is(a, button), html[data-theme=dark] body #page-community :is(.holder-subnav, .holder-primary-nav) > :is(a, button) { color: #b9c3cb !important; }
html[data-theme=dark] body :is(.unified-holder-nav, .holder-subnav, .holder-primary-nav) > :is([aria-current=page], [aria-current=true], [aria-selected=true], [aria-pressed=true], .is-active, .active), html[data-theme=dark] body #page-community :is(.holder-subnav, .holder-primary-nav) > :is([aria-current=page], [aria-current=true], [aria-selected=true], [aria-pressed=true], .is-active, .active) { color: #f4f1ea !important; border-bottom-color: #93a3ff !important; }
/* The holder app's own current-tab colour is set with ids; this outranks it so every row's current tab matches. */
html body #page-community#page-community :is(.holder-subnav, .holder-primary-nav) > :is([aria-current=page], [aria-current=true], [aria-selected=true], [aria-pressed=true], .is-active, .active) { color: #222c35 !important; font-weight: 600 !important; border-bottom: 2px solid #3c4fed !important; }
html[data-theme=dark] body #page-community#page-community :is(.holder-subnav, .holder-primary-nav) > :is([aria-current=page], [aria-current=true], [aria-selected=true], [aria-pressed=true], .is-active, .active) { color: #f4f1ea !important; border-bottom-color: #93a3ff !important; }
/* Print Room's own sheets made its bar 82 px tall and pushed its content 100 px down; it now sits like the others. */
@media (min-width: 761px) { html body.printer-standalone-holder > .printer-page-content > header#header.printer-site-header { height: 72px !important; min-height: 72px !important; } }
html body.printer-standalone-holder > .printer-page-content > main, html body.printer-standalone-holder.printer-unified-page[data-page] > .printer-page-content > main#reward-preference { margin: 0 !important; max-width: none !important; width: auto !important; padding: 32px 32px 48px !important; }
/* The page's own title is now the section heading, sized like "Holder giveaway". */
body.printer-standalone-holder main h2.printer-section-title { margin: 0 0 12px !important; font: 700 32px/1.2 Geist, Arial, sans-serif !important; letter-spacing: -1.12px !important; color: #283239 !important; }
html[data-theme=dark] body.printer-standalone-holder main h2.printer-section-title { color: #f0ede5 !important; }
/* One button style: the holder app's primary button. */
body.printer-standalone-holder :is(#achievement-refresh, .next-actions > a) { display: inline-flex !important; align-items: center; justify-content: center; min-height: 44px; padding: 11px 16px !important; border: 1px solid #3c4fed !important; border-radius: 8px !important; background: #3c4fed !important; color: #fff !important; font: 600 13px/1.45 Geist, Arial, sans-serif !important; text-decoration: none !important; box-shadow: none !important; cursor: pointer; }
body.printer-standalone-holder :is(#achievement-refresh, .next-actions > a):hover { background: #3243d0 !important; border-color: #3243d0 !important; }
html[data-theme=dark] body.printer-standalone-holder :is(#achievement-refresh, .next-actions > a) { background: #93a3ff !important; border-color: #93a3ff !important; color: #18212d !important; }
/* Eyebrows above the old titles repeated the place name. */
body.printer-standalone-holder :is(.achievement-kicker) { display: none !important; }
@media (max-width: 760px) {
  body.printer-standalone-holder main { padding-top: 24px !important; }
  .printer-place-head h1 { font-size: 30px !important; letter-spacing: -1px !important; }
  body.printer-standalone-holder main h2.printer-section-title { font-size: 26px !important; }
}

/* ---- Round 8: Rewards > Packs ---- */
.printer-packs { max-width: 1071px; }
.printer-packs-status { display: inline-flex; align-items: center; gap: 7px; margin: 0 0 10px; font: 600 12px/1.4 Geist, Arial, sans-serif; letter-spacing: .02em; color: #2f7a4d; }
.printer-packs-status::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: #2f9e5b; }
.printer-packs-status[data-state=supporter] { color: #8a5a12; }
.printer-packs-status[data-state=supporter]::before { background: #d08a1f; }
.printer-packs-status[data-state=closed] { color: #637078; }
.printer-packs-status[data-state=closed]::before { background: #b9c1c6; }
.printer-packs-lede { max-width: 640px; margin: 0 0 22px; font: 400 14px/1.7 Geist, Arial, sans-serif; color: #637078; }
.printer-packs-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 16px; margin: 0 0 28px; }
.printer-packs-actions > span { font: 400 13px/1.5 Geist, Arial, sans-serif; color: #637078; max-width: 420px; }
.printer-packs-open { box-sizing: border-box; display: inline-flex; align-items: center; gap: 2px; height: 44px; min-height: 44px; white-space: nowrap; padding: 0 16px !important; line-height: 1 !important; border: 1px solid #3c4fed; border-radius: 8px; background: #3c4fed; color: #fff !important; font: 600 13px/1.45 Geist, Arial, sans-serif; text-decoration: none; }
.printer-packs-open:hover { background: #3243d0; border-color: #3243d0; }
.printer-packs-facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0; margin: 0; border: 1px solid #e2dacb; border-radius: 12px; background: #fffdf9; overflow: hidden; }
.printer-packs-facts > div { padding: 18px 20px; border-bottom: 1px solid #e2dacb; }
.printer-packs-facts > div:nth-child(odd) { border-right: 1px solid #e2dacb; }
.printer-packs-facts > div:nth-last-child(-n+2) { border-bottom: 0; }
.printer-packs-facts dt { margin: 0 0 6px; font: 600 13px/1.4 Geist, Arial, sans-serif; color: #222c35; }
.printer-packs-facts dd { margin: 0; font: 400 14px/1.6 Geist, Arial, sans-serif; color: #4a5660; }
html[data-theme=dark] .printer-packs-lede, html[data-theme=dark] .printer-packs-actions > span { color: #b9c1c6; }
html[data-theme=dark] .printer-packs-facts { background: #252d32; border-color: #414d55; }
html[data-theme=dark] .printer-packs-facts > div { border-color: #414d55; }
html[data-theme=dark] .printer-packs-facts dt { color: #f0ede5; }
html[data-theme=dark] .printer-packs-facts dd { color: #c9d0d4; }
html[data-theme=dark] .printer-packs-status { color: #7fd3a0; }
html[data-theme=dark] .printer-packs-open { background: #93a3ff; border-color: #93a3ff; color: #18212d !important; }
@media (max-width: 760px) {
  .printer-packs-facts { grid-template-columns: 1fr; }
  .printer-packs-facts > div:nth-child(odd) { border-right: 0; }
  .printer-packs-facts > div:nth-last-child(2) { border-bottom: 1px solid #e2dacb; }
  html[data-theme=dark] .printer-packs-facts > div:nth-last-child(2) { border-bottom-color: #414d55; }
}
