
@font-face { font-family: "Lilita One"; src: url(/site/lilita-one-400.d2575d4fa3.woff2) format("woff2"); font-weight: 400; font-display: swap; }
@font-face { font-family: "Barlow"; src: url(/site/barlow-400.b0a8ad37ac.woff2) format("woff2"); font-weight: 400; font-display: swap; }
@font-face { font-family: "Barlow"; src: url(/site/barlow-600.4b52ddd483.woff2) format("woff2"); font-weight: 600; font-display: swap; }
@font-face { font-family: "Barlow"; src: url(/site/barlow-700.2d797dd8b3.woff2) format("woff2"); font-weight: 700; font-display: swap; }

:root {
  --pond: #0e1224;
  --pond-2: #131931;
  --dusk: #2a1735;
  --slot: #181c2b;
  --slot-hi: #2c334d;
  --slot-lo: #080a13;
  --duck: #ffc928;
  --duck-hi: #ffd95a;
  --duck-deep: #e0a000;
  --duck-ink: #2a1d00;
  --beak: #ff8a1f;
  --foam: #f6f3ec;
  --reed: #bcc2d0;
  --faint: #8890a6;
  --hair: rgba(255, 255, 255, 0.09);
  --display: "Lilita One", "Barlow", system-ui, sans-serif;
  --ui: "Barlow", system-ui, "Segoe UI", sans-serif;
  --wrap: 1180px;
  --gutter: clamp(16px, 4vw, 32px);
  color-scheme: dark;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 76px; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body { margin: 0; background: var(--pond); color: var(--foam); font: 400 1.0625rem/1.6 var(--ui); -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
img { max-width: 100%; height: auto; display: block; }
a { color: var(--duck); text-underline-offset: 3px; }
a:hover { color: var(--duck-hi); }
:focus-visible { outline: 3px solid var(--duck); outline-offset: 3px; border-radius: 4px; }
h1, h2, h3 { font-family: var(--display); font-weight: 400; line-height: 1.05; margin: 0; letter-spacing: 0.01em; text-wrap: balance; }
p { margin: 0; }
.wrap { width: min(100% - 2 * var(--gutter), var(--wrap)); margin-inline: auto; }
.skip { position: absolute; left: -9999px; top: 10px; z-index: 100; background: var(--duck); color: var(--duck-ink); padding: 8px 14px; border-radius: 6px; font-weight: 700; }
.skip:focus { left: 16px; }
.px { image-rendering: pixelated; flex: none; }

/* ---------- top bar ---------- */
.nav { position: sticky; top: 0; z-index: 30; background: rgba(14, 18, 36, 0.82); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); border-bottom: 1px solid var(--hair); }
.nav .wrap { display: flex; align-items: center; gap: 26px; height: 64px; }
.brand { display: flex; align-items: center; gap: 10px; color: var(--foam); text-decoration: none; font-family: var(--display); font-size: 1.4rem; white-space: nowrap; }
.brand:hover { color: var(--foam); }
.brand img { width: 32px; height: 32px; image-rendering: pixelated; }
.nav-links { display: flex; gap: 22px; }
.nav-links a { color: var(--reed); text-decoration: none; font-weight: 600; }
.nav-links a:hover { color: var(--foam); }
.nav-end { margin-left: auto; display: flex; align-items: center; gap: 14px; }
.lang { display: flex; border: 1px solid var(--hair); border-radius: 6px; overflow: hidden; font-weight: 700; font-size: 0.85rem; }
.lang a, .lang span { padding: 5px 10px; text-decoration: none; color: var(--reed); }
.lang a:hover { color: var(--foam); background: rgba(255, 255, 255, 0.06); }
.lang [aria-current] { background: rgba(255, 255, 255, 0.12); color: var(--foam); }
.lang a:focus-visible { outline-offset: -3px; border-radius: 6px; }
@media (max-width: 880px) { .nav-links { display: none; } }
@media (max-width: 460px) { .nav .btn-sm { display: none; } }

/* ---------- the launcher's gold button ---------- */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 10px; font-family: var(--display); font-size: 1.2rem; letter-spacing: 0.02em; line-height: 1; text-decoration: none; color: var(--duck-ink); background: linear-gradient(180deg, var(--duck-hi), var(--duck)); border: 2px solid #3d2c00; border-radius: 8px; padding: 13px 22px; box-shadow: inset 0 -4px 0 var(--duck-deep), inset 0 2px 0 rgba(255, 255, 255, 0.55), 0 4px 0 rgba(0, 0, 0, 0.35); }
.btn:hover { color: var(--duck-ink); background: linear-gradient(180deg, #ffe38a, #ffd23e); }
.btn:active { transform: translateY(2px); box-shadow: inset 0 -2px 0 var(--duck-deep), 0 2px 0 rgba(0, 0, 0, 0.35); }
.btn svg { width: 22px; height: 22px; }
.btn-big { font-size: 1.55rem; padding: 17px 30px; }
@media (max-width: 380px) { .btn-big { font-size: 1.3rem; padding: 15px 20px; } }
.btn-sm { font-size: 1rem; padding: 8px 14px; border-radius: 7px; box-shadow: inset 0 -3px 0 var(--duck-deep), inset 0 2px 0 rgba(255, 255, 255, 0.55); }
.btn[aria-disabled="true"] { filter: grayscale(1); opacity: 0.6; pointer-events: none; }

/* ---------- hero: the sunset pond ---------- */
.hero { position: relative; isolation: isolate; overflow: hidden; background: var(--dusk) url(/site/sunset.5a826c8062.png) 50% 78% / cover no-repeat; image-rendering: pixelated; }
.hero::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, rgba(24, 10, 34, 0.78) 0%, rgba(24, 10, 34, 0.5) 42%, rgba(24, 10, 34, 0) 72%); -webkit-mask-image: linear-gradient(180deg, #000 60%, transparent 74%); mask-image: linear-gradient(180deg, #000 60%, transparent 74%); }
.hero .wrap { padding: clamp(56px, 11vh, 128px) 0 clamp(220px, 30vh, 330px); }
@media (max-width: 640px) {
  .hero { background-position: 28% 100%; }
  .hero::before { background: linear-gradient(180deg, rgba(24, 10, 34, 0.55) 0%, rgba(24, 10, 34, 0.4) 60%, rgba(24, 10, 34, 0) 72%); -webkit-mask-image: none; mask-image: none; }
  .hero .wrap { padding-bottom: 290px; }
}
.hero h1 { font-size: clamp(2.8rem, 7.2vw, 5.6rem); line-height: 0.93; max-width: 11.5ch; text-shadow: 0 6px 0 rgba(36, 12, 44, 0.6); }
.hero .sub { max-width: 35rem; font-size: clamp(1.08rem, 1.6vw, 1.25rem); color: #fbf3ff; margin: 24px 0 32px; text-shadow: 0 2px 10px rgba(20, 6, 28, 0.6); }
.cta { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 24px; }
.cta .more { color: var(--foam); font-weight: 700; text-decoration: none; border-bottom: 2px solid rgba(255, 255, 255, 0.35); padding-bottom: 2px; text-shadow: 0 2px 8px rgba(0, 0, 0, 0.5); }
.cta .more:hover { border-color: var(--duck); color: var(--foam); }
.ver { margin-top: 14px; font-size: 0.95rem; color: #eadcf2; text-shadow: 0 2px 8px rgba(0, 0, 0, 0.6); }

/* the launcher, rising out of the pond */
.window { position: relative; z-index: 2; margin: clamp(-150px, -16vh, -90px) auto 0; width: min(100% - 2 * var(--gutter), 1100px); border-radius: 12px; border: 2px solid #04050b; overflow: hidden; background: var(--slot-lo); box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.08), 0 30px 70px rgba(0, 0, 0, 0.55); }
.window img { width: 100%; }

/* ---------- sections ---------- */
.section { padding: clamp(72px, 10vw, 128px) 0 0; }
.head { margin-bottom: 40px; }
.head h2, .section h2 { font-size: clamp(2.1rem, 4.6vw, 3.25rem); text-shadow: 0 4px 0 rgba(0, 0, 0, 0.35); }
.lead { font-size: 1.15rem; color: var(--reed); margin-top: 14px; max-width: 46rem; }
.slot { background: var(--slot); border-radius: 8px; box-shadow: inset 2px 2px 0 var(--slot-hi), inset -2px -2px 0 var(--slot-lo); }

/* in game */
.game { display: grid; grid-template-columns: repeat(6, 1fr); gap: 16px; }
.card { display: flex; flex-direction: column; overflow: hidden; }
.card img { aspect-ratio: 16 / 9; width: 100%; object-fit: cover; border-bottom: 2px solid var(--slot-lo); }
.card .body { padding: 18px 22px 24px; }
.card h3 { font-size: 1.5rem; }
.card p { color: var(--reed); margin-top: 6px; }
.game .card:nth-child(1), .game .card:nth-child(2) { grid-column: span 3; }
.game .card:nth-child(n + 3) { grid-column: span 2; }
.game .card:nth-child(n + 3) h3 { font-size: 1.3rem; }
@media (max-width: 980px) { .game .card:nth-child(n) { grid-column: span 3; } .game .card:nth-child(5) { grid-column: span 6; } .game .card:nth-child(5) img { aspect-ratio: 21 / 9; } }
@media (max-width: 640px) { .game { grid-template-columns: 1fr; } .game .card:nth-child(n) { grid-column: auto; } .game .card:nth-child(5) img { aspect-ratio: 16 / 9; } }
.more-title { font-size: 1.6rem; margin: 48px 0 16px; }
.tiles { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 10px; }
.tile { display: flex; align-items: center; gap: 14px; padding: 10px 14px 10px 10px; }
.tile .ic { width: 52px; height: 52px; display: grid; place-items: center; background: var(--slot-lo); border-radius: 4px; box-shadow: inset 2px 2px 0 #03040a, inset -2px -2px 0 var(--slot-hi); flex: none; }
.tile b { display: block; font-weight: 700; line-height: 1.25; }
.tile span { display: block; color: var(--reed); font-size: 0.92rem; line-height: 1.35; }

/* launcher */
.rows { display: flex; flex-direction: column; gap: clamp(48px, 7vw, 88px); }
.row { display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(0, 1fr); gap: clamp(24px, 4vw, 60px); align-items: center; }
.row:nth-child(even) { grid-template-columns: minmax(0, 1fr) minmax(0, 1.45fr); }
.row:nth-child(even) .shot { order: 2; }
.shot { border-radius: 10px; overflow: hidden; border: 2px solid #04050b; box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.07), 0 22px 50px rgba(0, 0, 0, 0.45); background: var(--slot-lo); }
.row h3 { font-size: clamp(1.6rem, 2.6vw, 2.1rem); }
.row p { color: var(--reed); margin-top: 12px; font-size: 1.08rem; }
@media (max-width: 860px) { .row, .row:nth-child(even) { grid-template-columns: 1fr; } .row:nth-child(even) .shot { order: 0; } }
.points { list-style: none; padding: 0; margin: clamp(56px, 7vw, 88px) 0 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 30px 36px; }
.points li { display: flex; gap: 14px; align-items: flex-start; }
.points b { display: block; font-family: var(--display); font-weight: 400; font-size: 1.25rem; line-height: 1.2; }
.points span { display: block; color: var(--reed); margin-top: 4px; }
@media (max-width: 900px) { .points { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .points { grid-template-columns: 1fr; } }

/* capes */
.capes-wrap { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: 20px; align-items: stretch; }
.capes-wrap.solo { grid-template-columns: minmax(0, 1fr); }
.gallery { padding: 22px; }
.gallery h3, .shoulder h3 { font-size: 1.45rem; }
.cape-list { list-style: none; padding: 0; margin: 18px 0 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); gap: 12px; }
.cape-list li { text-align: center; min-width: 0; }
.cape { position: relative; width: 60px; height: 96px; margin: 0 auto 8px; overflow: hidden; border-radius: 2px; box-shadow: 0 6px 0 rgba(0, 0, 0, 0.3); }
.cape img { position: absolute; max-width: none; width: 640%; height: 200%; left: -10%; top: -6.25%; image-rendering: pixelated; }
.cape-list b { display: block; font-size: 0.92rem; line-height: 1.25; overflow-wrap: anywhere; }
.cape-list small { display: block; color: var(--faint); font-size: 0.8rem; overflow-wrap: anywhere; }
.shoulder { overflow: hidden; display: flex; flex-direction: column; }
.shoulder img { width: 100%; border-bottom: 2px solid var(--slot-lo); }
.shoulder .body { padding: 20px 22px 24px; }
.shoulder p { color: var(--reed); margin-top: 6px; }
@media (max-width: 900px) { .capes-wrap { grid-template-columns: 1fr; } }

/* how to start: a real sequence */
.steps { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; counter-reset: step; }
.steps li { padding: 22px 24px 26px; counter-increment: step; }
.steps li::before { content: counter(step); display: block; font-family: var(--display); font-size: 3.2rem; line-height: 1; color: var(--beak); text-shadow: 0 4px 0 rgba(0, 0, 0, 0.35); margin-bottom: 10px; }
.steps h3 { font-size: 1.45rem; }
.steps p { color: var(--reed); margin-top: 6px; }
@media (max-width: 760px) { .steps { grid-template-columns: 1fr; } }

/* what's new */
.news { padding: 26px 28px 28px; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 18px 30px; align-items: start; }
.news h2 { font-size: clamp(1.7rem, 3.4vw, 2.3rem); }
.news .when { color: var(--faint); margin-top: 4px; font-size: 0.95rem; }
.news ul { grid-column: 1 / -1; list-style: none; padding: 0; margin: 4px 0 0; display: grid; gap: 10px; }
.news li { padding-left: 30px; background: url(/site/duck-sprite.6955c74b75.png) 0 0.22em / 18px auto no-repeat; image-rendering: pixelated; color: var(--reed); }
@media (max-width: 640px) { .news { grid-template-columns: 1fr; } }

/* FAQ */
.faq { max-width: 860px; }
.faq details { border-bottom: 1px solid var(--hair); }
.faq details:first-of-type { border-top: 1px solid var(--hair); }
.faq summary { list-style: none; cursor: pointer; position: relative; padding: 20px 48px 20px 0; font-weight: 700; font-size: 1.15rem; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: "+"; position: absolute; right: 6px; top: 50%; transform: translateY(-50%); font-family: var(--display); font-size: 1.9rem; line-height: 1; color: var(--duck); }
.faq details[open] summary::after { content: "\2212"; }
.faq summary:hover { color: var(--duck-hi); }
.faq details p { color: var(--reed); margin: -4px 0 22px; max-width: 64ch; }

/* ---------- the last call, by the starry lake ---------- */
.final { margin-top: clamp(80px, 11vw, 140px); background: #0a0f24 url(/site/night.0fb6a2ae5c.png) 50% 72% / cover no-repeat; image-rendering: pixelated; position: relative; isolation: isolate; }
.final::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, var(--pond) 0%, rgba(14, 18, 36, 0) 22%, rgba(8, 10, 24, 0.25) 100%); }
.final .wrap { padding: clamp(110px, 16vw, 200px) 0 clamp(120px, 18vw, 230px); }
.final h2 { font-size: clamp(2.6rem, 6vw, 4.4rem); text-shadow: 0 5px 0 rgba(0, 0, 0, 0.45); }
.final p { font-size: 1.2rem; color: #dfe4f5; margin: 12px 0 30px; }

/* ---------- footer ---------- */
.foot { background: #080b18; color: var(--faint); font-size: 0.95rem; padding: 52px 0 36px; border-top: 1px solid var(--hair); }
.foot .cols { display: grid; grid-template-columns: minmax(0, 1.6fr) repeat(3, minmax(0, 1fr)); gap: 28px; }
.foot .brand { font-size: 1.3rem; }
.foot p.tag { margin-top: 10px; max-width: 28ch; }
.foot h2 { font-family: var(--ui); font-weight: 700; font-size: 0.95rem; color: var(--foam); margin-bottom: 10px; letter-spacing: 0; text-shadow: none; }
.foot ul { list-style: none; padding: 0; margin: 0; display: grid; gap: 6px; }
.foot a { color: var(--reed); text-decoration: none; }
.foot a:hover { color: var(--foam); text-decoration: underline; }
.foot .fine { margin-top: 40px; padding-top: 22px; border-top: 1px solid var(--hair); font-size: 0.85rem; }
@media (max-width: 760px) { .foot .cols { grid-template-columns: 1fr 1fr; } .foot .cols > :first-child { grid-column: 1 / -1; } }

/* ---------- plain pages (privacy, imprint, fonts) ---------- */
.doc { max-width: 760px; padding: clamp(48px, 8vw, 96px) 0 clamp(64px, 9vw, 110px); }
.doc h1 { font-size: clamp(2.4rem, 5vw, 3.4rem); text-shadow: 0 4px 0 rgba(0, 0, 0, 0.35); }
.doc h2 { font-size: 1.55rem; margin: 40px 0 10px; }
.doc p, .doc li { color: var(--reed); }
.doc p + p { margin-top: 12px; }
.doc .updated { color: var(--faint); margin-top: 10px; }
.doc .imprint-text { white-space: pre-line; color: var(--foam); font-size: 1.1rem; margin-top: 24px; }
.doc pre { white-space: pre-wrap; font-size: 0.82rem; color: var(--faint); background: var(--slot-lo); border-radius: 8px; padding: 18px; overflow-x: auto; }
.lost { text-align: left; }
.lost img { width: 72px; height: 72px; image-rendering: pixelated; margin-bottom: 18px; }
.lost p { margin: 12px 0 26px; }

/* ---------- signed in ---------- */
[hidden] { display: none !important; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.faint { color: var(--faint); }
.nav-sign { color: var(--foam); font-weight: 700; text-decoration: none; padding: 6px 2px; white-space: nowrap; }
.nav-sign:hover { color: var(--duck-hi); }
.btn-quiet { display: inline-flex; align-items: center; gap: 6px; font: inherit; font-weight: 700; color: var(--reed); background: none; border: 1px solid var(--hair); border-radius: 7px; padding: 6px 12px; cursor: pointer; white-space: nowrap; }
.btn-quiet:hover { color: var(--foam); border-color: rgba(255, 255, 255, 0.28); }
.btn-quiet svg { width: 18px; height: 18px; }
.btn:disabled { filter: grayscale(1); opacity: 0.55; cursor: default; }
button.btn { cursor: pointer; }
.app-links { display: flex; gap: 4px; min-width: 0; }
/* Five links don't fit next to Sign out on a phone: they scroll sideways there. */
@media (max-width: 760px) { .app-links { overflow-x: auto; scrollbar-width: none; padding-right: 22px; -webkit-mask-image: linear-gradient(90deg, #000 calc(100% - 22px), transparent); mask-image: linear-gradient(90deg, #000 calc(100% - 22px), transparent); } .app-links::-webkit-scrollbar { display: none; } .app-links a { flex: none; white-space: nowrap; } }
.app-links a { color: var(--reed); text-decoration: none; font-weight: 700; padding: 8px 12px; border-radius: 7px; }
.app-links a:hover { color: var(--foam); background: rgba(255, 255, 255, 0.06); }
.app-links a[aria-current] { color: var(--foam); box-shadow: inset 0 -3px 0 var(--duck); border-radius: 7px 7px 0 0; }
.me { display: flex; align-items: center; gap: 8px; font-weight: 700; min-width: 0; }
.me-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 14ch; }
.sign-out { margin: 0; }
@media (max-width: 760px) { .signed-in .nav .brand { font-size: 0; gap: 0; } .signed-in .nav .wrap { gap: 10px; } .me-name { display: none; } }
@media (max-width: 460px) { .signed-in .me, .signed-in .nav .lang { display: none; } .app-links a { padding: 8px 7px; } .signed-in .nav-end { gap: 8px; } .signed-in .nav .btn-quiet { padding: 6px 9px; } }
@media (max-width: 380px) { .nav .brand { font-size: 0; gap: 0; } .nav .wrap { gap: 14px; } }
/* On small phones the language switch of signed-in pages moves down here. */
.foot-lang { display: none; width: fit-content; margin-top: 16px; }
@media (max-width: 460px) { .signed-in .foot-lang { display: flex; } }

/* faces: the player's own 8×8 picture, or their first letter on a tile */
.face { width: 32px; height: 32px; border-radius: 4px; image-rendering: pixelated; display: grid; place-items: center; flex: none; }
.face.letter { background: var(--slot-hi); color: var(--foam); font-family: var(--display); font-size: 1.1rem; line-height: 1; }
.face.duck { background: var(--slot-hi); padding: 3px; object-fit: contain; }
.face-sm { width: 26px; height: 26px; }
.face-sm.letter { font-size: 0.95rem; }
.face-lg { width: 44px; height: 44px; }
.face-lg.letter { font-size: 1.45rem; }

/* sign in: two steps, then the code */
.sign-in { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 430px); gap: clamp(28px, 5vw, 72px); align-items: start; padding: clamp(48px, 8vw, 104px) 0 clamp(64px, 9vw, 120px); }
.sign-in h1 { font-size: clamp(2.6rem, 6vw, 4.2rem); text-shadow: 0 4px 0 rgba(0, 0, 0, 0.35); }
.how { list-style: none; padding: 0; margin: 34px 0 0; display: grid; gap: 20px; counter-reset: how; }
.how li { display: grid; grid-template-columns: 46px minmax(0, 1fr); column-gap: 14px; counter-increment: how; }
.how li::before { content: counter(how); grid-row: span 2; font-family: var(--display); font-size: 2.4rem; line-height: 1; color: var(--beak); text-shadow: 0 3px 0 rgba(0, 0, 0, 0.35); }
.how b { font-family: var(--display); font-weight: 400; font-size: 1.4rem; line-height: 1.2; }
.how span { color: var(--reed); }
.code-card { padding: 26px 26px 24px; display: flex; flex-direction: column; gap: 14px; }
.code-card label { font-weight: 700; }
.code-input { width: 100%; font-family: var(--display); font-size: clamp(1.7rem, 7vw, 2.2rem); letter-spacing: 0.14em; text-transform: uppercase; text-align: center; color: var(--foam); background: var(--slot-lo); border: 2px solid #04050b; border-radius: 8px; padding: 14px 10px; box-shadow: inset 2px 2px 0 #03040a, inset -2px -2px 0 var(--slot-hi); }
.code-input::placeholder { color: #39405c; }
.code-input[aria-invalid] { border-color: #ff6f6f; }
.form-error { color: #ffb3b3; font-weight: 600; }
.code-card .btn { width: 100%; }
.code-card .fine { color: var(--faint); font-size: 0.9rem; }
.no-client { grid-column: 1 / -1; color: var(--reed); }
@media (max-width: 820px) { .sign-in { grid-template-columns: 1fr; } }

/* the chat: friends on the left, the open chat on the right (one at a time on phones) */
.app-page { padding: 22px 0 36px; }
.app { display: grid; grid-template-columns: minmax(260px, 340px) minmax(0, 1fr); gap: 16px; height: calc(100vh - 64px - 58px); height: calc(100dvh - 64px - 58px); min-height: 460px; }
.side { display: flex; flex-direction: column; gap: 12px; min-height: 0; padding: 16px 16px 10px; }
.add label { display: block; font-weight: 700; font-size: 0.92rem; margin-bottom: 6px; }
.add-row, .send { display: flex; gap: 8px; }
.add-row input, .send input { flex: 1; min-width: 0; font: inherit; color: var(--foam); background: var(--slot-lo); border: 2px solid #04050b; border-radius: 7px; padding: 8px 12px; box-shadow: inset 2px 2px 0 #03040a; }
.add-row input::placeholder, .send input::placeholder { color: var(--faint); }
.note:empty { display: none; }
.note { font-size: 0.92rem; color: var(--reed); }
.note[data-tone="error"] { color: #ffb3b3; }
.note[data-tone="ok"] { color: #b9f0c8; }
.reqs h2, .side-head h2 { font-family: var(--ui); font-weight: 700; font-size: 0.95rem; color: var(--reed); letter-spacing: 0; text-shadow: none; }
.reqs ul, .flist { list-style: none; margin: 0; padding: 0; }
.reqs ul { margin-top: 4px; }
.req { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px; padding: 8px 0; border-bottom: 1px solid var(--hair); }
.req .who { min-width: 9rem; }
.req .acts { display: flex; gap: 6px; margin-left: auto; }
.req .btn-sm { padding: 7px 11px; font-size: 0.95rem; }
.who { display: flex; flex-direction: column; min-width: 0; flex: 1; line-height: 1.3; }
.who b, .who h2 { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.who b { font-weight: 700; }
.who small { color: var(--faint); font-size: 0.86rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.side-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
#online-count { color: var(--faint); font-size: 0.85rem; }
.flist { flex: 1; min-height: 0; overflow-y: auto; margin: -4px -8px 0; padding: 2px; }
.fpick { display: flex; align-items: center; gap: 12px; width: 100%; padding: 8px; background: none; border: 0; border-radius: 7px; color: inherit; font: inherit; text-align: left; cursor: pointer; }
.fpick:hover { background: rgba(255, 255, 255, 0.05); }
.fpick[aria-current] { background: rgba(255, 201, 40, 0.12); box-shadow: inset 3px 0 0 var(--duck); }
.fpick[aria-current] small { color: var(--reed); }
.fface { position: relative; flex: none; display: block; }
.fface::after { content: ""; position: absolute; right: -3px; bottom: -3px; width: 11px; height: 11px; border-radius: 3px; background: #4a5068; border: 2px solid var(--slot); }
.fface[data-online="true"]::after { background: #67dc8d; }
.fface[data-game="true"]::after { background: var(--duck); }
.unread { min-width: 22px; height: 22px; padding: 0 6px; border-radius: 11px; background: var(--beak); color: #2a1200; font-weight: 700; font-size: 0.8rem; display: grid; place-items: center; flex: none; }
.flist-empty { color: var(--faint); padding: 8px; font-size: 0.95rem; }
.chat { display: flex; flex-direction: column; min-height: 0; overflow: hidden; }
.chat-empty { margin: auto; padding: 24px; text-align: center; color: var(--faint); display: grid; justify-items: center; gap: 12px; }
.chat-empty img { width: 64px; height: 64px; image-rendering: pixelated; }
.chat-head { display: flex; align-items: center; gap: 12px; padding: 14px 18px; border-bottom: 2px solid var(--slot-lo); }
.chat-head h2 { font-size: 1.5rem; }
.chat-head .back { display: none; padding: 6px 8px; }
.msgs { flex: 1; min-height: 0; overflow-y: auto; padding: 14px 18px 18px; display: flex; flex-direction: column; gap: 4px; }
.msgs:focus-visible { outline-offset: -3px; }
.bubble { max-width: min(78%, 540px); align-self: flex-start; background: #242b42; border-radius: 4px 12px 12px 12px; padding: 7px 12px 6px; }
.bubble[data-mine="true"] { align-self: flex-end; background: linear-gradient(180deg, #ffe07a, var(--duck)); color: var(--duck-ink); border-radius: 12px 4px 12px 12px; }
.bubble[data-first="true"] { margin-top: 10px; }
.bubble p { overflow-wrap: anywhere; white-space: pre-wrap; line-height: 1.4; }
.bubble time { display: block; font-size: 0.72rem; opacity: 0.7; margin-top: 1px; }
.older { align-self: center; margin-bottom: 6px; }
.chat-hi { margin: auto; text-align: center; display: grid; gap: 4px; color: var(--reed); max-width: 34ch; }
.chat-hi b { font-family: var(--display); font-weight: 400; font-size: 1.6rem; color: var(--foam); }
.chat-note { margin: auto; color: var(--faint); }
.send { padding: 12px; border-top: 2px solid var(--slot-lo); }
.status:empty { display: none; }
.status { margin-top: 12px; color: var(--reed); display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.noscript { margin-top: 16px; color: var(--reed); }
@media (max-width: 760px) {
  .app-page { padding: 12px 0 18px; }
  .app { grid-template-columns: minmax(0, 1fr); height: calc(100vh - 64px - 30px); height: calc(100dvh - 64px - 30px); min-height: 380px; }
  .app[data-view="list"] .chat, .app[data-view="chat"] .side { display: none; }
  .chat-head { padding: 10px 12px; gap: 10px; }
  .chat-head .back { display: inline-flex; }
  .msgs { padding: 12px; }
  .bubble { max-width: 86%; }
}

/* your profiles */
.profiles-page, .pictures-page { padding: clamp(40px, 7vw, 88px) 0 clamp(64px, 9vw, 120px); }
.profiles-page h1, .pictures-page h1 { font-size: clamp(2.4rem, 5vw, 3.4rem); text-shadow: 0 4px 0 rgba(0, 0, 0, 0.35); }
.pgrid { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(290px, 1fr)); gap: 14px; align-items: start; }
.pcard { padding: 18px 20px 20px; display: flex; flex-direction: column; gap: 10px; min-width: 0; }
.ptop { display: flex; gap: 14px; align-items: center; min-width: 0; }
.ptop > div { min-width: 0; }
.ptop h2 { font-size: 1.45rem; overflow-wrap: anywhere; }
.ptop p { color: var(--reed); }
.ppic { width: 48px; height: 48px; flex: none; image-rendering: auto; border-radius: 8px; }
.ptile img { width: 32px; height: 32px; image-rendering: pixelated; filter: drop-shadow(0 2px 0 rgba(0, 0, 0, 0.35)); }
.ptile { width: 48px; height: 48px; flex: none; display: grid; place-items: center; font-family: var(--display); font-size: 1.55rem; line-height: 1; border-radius: 4px; color: #fff; text-shadow: 0 2px 0 rgba(0, 0, 0, 0.45); box-shadow: inset 3px 3px 0 rgba(255, 255, 255, 0.28), inset -3px -3px 0 rgba(0, 0, 0, 0.32); }
.ptile.grass { background: #5c9a3b; }
.ptile.linen { background: #c9b98f; color: #3a2f12; text-shadow: none; }
.ptile.anvil { background: #5b6172; }
.ptile.ember { background: #d9692a; }
.ptile.patch { background: #8657c0; }
.played { color: var(--faint); font-size: 0.95rem; }
.mods summary { cursor: pointer; font-weight: 700; width: fit-content; }
.mods summary span { color: var(--faint); font-weight: 400; }
.mods ul { list-style: none; padding: 0; margin: 10px 0 0; display: flex; flex-wrap: wrap; gap: 6px; }
.mods li { background: var(--slot-lo); border-radius: 5px; padding: 3px 9px; font-size: 0.88rem; color: var(--reed); overflow-wrap: anywhere; }
.mods.none { color: var(--faint); }
.packs { color: var(--reed); font-size: 0.95rem; }
.pempty { padding: 28px; max-width: 660px; }
.pempty h2 { font-size: 1.6rem; }
.pempty p { color: var(--reed); margin-top: 8px; }

/* the shop: Duck Coins */
.shop-page { padding: clamp(40px, 7vw, 88px) 0 clamp(64px, 9vw, 120px); }
.shop-page h1 { font-size: clamp(2.6rem, 6vw, 4rem); text-shadow: 0 4px 0 rgba(0, 0, 0, 0.35); }
.shop-top { display: grid; grid-template-columns: minmax(0, 1fr) minmax(280px, 360px); gap: clamp(24px, 4vw, 56px); align-items: end; }
.wallet { padding: 20px 22px 22px; display: flex; flex-direction: column; gap: 6px; border-top: 3px solid var(--duck); }
.wallet-who { color: var(--reed); font-weight: 700; }
.wallet-coins { display: flex; align-items: center; gap: 12px; }
.wallet-coins svg { width: 48px; height: 48px; flex: none; filter: drop-shadow(0 3px 0 rgba(0, 0, 0, 0.35)); }
.wallet-coins b { font-family: var(--display); font-weight: 400; font-size: clamp(2.6rem, 6vw, 3.4rem); line-height: 1; color: var(--duck); text-shadow: 0 4px 0 rgba(0, 0, 0, 0.35); }
.wallet-daily { margin: 8px 0 0; color: var(--faint); font-size: 0.95rem; max-width: 46ch; }
.wallet-coins span { color: var(--reed); font-weight: 700; font-size: 1.1rem; }
.wallet-out { border-top-color: var(--slot-hi); gap: 14px; align-items: flex-start; }
.wallet-out .wallet-coins svg { width: 36px; height: 36px; filter: grayscale(0.4) drop-shadow(0 3px 0 rgba(0, 0, 0, 0.35)); }
.wallet-out .wallet-coins span { font-weight: 600; font-size: 1rem; }
.shop-part { margin-top: clamp(48px, 7vw, 80px); }
.shop-part h2 { font-size: clamp(1.9rem, 4vw, 2.6rem); text-shadow: 0 4px 0 rgba(0, 0, 0, 0.35); }
.closed { margin: 14px 0 22px; padding: 12px 16px; border-left: 4px solid var(--beak); background: rgba(255, 138, 31, 0.08); border-radius: 0 8px 8px 0; color: var(--reed); max-width: 46rem; }
.closed b { color: var(--foam); }
.packs { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }
.pack { padding: 22px 18px 18px; display: flex; flex-direction: column; align-items: center; text-align: center; gap: 6px; }
.pack-pic { display: flex; height: 48px; align-items: flex-end; margin-bottom: 6px; }
.pack-pic svg { width: 40px; height: 40px; filter: drop-shadow(0 3px 0 rgba(0, 0, 0, 0.35)); }
.pack-pic svg + svg { margin-left: -22px; }
.pack-pic svg:nth-child(even) { transform: translateY(-8px); }
.pack-coins { color: var(--reed); font-weight: 700; }
.pack-coins b { display: block; font-family: var(--display); font-weight: 400; font-size: 2.2rem; line-height: 1; color: var(--foam); }
.pack-extra { min-height: 1.4em; line-height: 1.4; color: var(--duck); font-weight: 700; font-size: 0.92rem; }
.pack-price { font-family: var(--display); font-size: 1.35rem; color: var(--foam); margin-bottom: 8px; }
.pack .btn { width: 100%; }
@media (max-width: 900px) { .packs { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 760px) { .shop-top { grid-template-columns: 1fr; } }
@media (max-width: 380px) { .packs { grid-template-columns: 1fr; } }
.items { list-style: none; padding: 0; margin: 22px 0 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 14px; }
.item { padding: 18px; display: flex; gap: 16px; align-items: flex-start; }
.item-pic { width: 64px; height: 64px; flex: none; display: grid; place-items: center; background: var(--slot-lo); border-radius: 6px; }
.item-pic svg { width: 48px; height: 48px; }
.item h3 { font-size: 1.35rem; }
.item p { color: var(--reed); margin-top: 6px; font-size: 0.97rem; }
.item-foot { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.item-price { display: inline-flex; align-items: center; gap: 6px; font-weight: 700; color: var(--duck); }
.item-price svg { width: 18px; height: 18px; }
.item-price.free { color: #7be36b; }
.item-tag { font-size: 0.82rem; font-weight: 700; color: var(--foam); background: var(--slot-hi); border-radius: 5px; padding: 2px 8px; }
.item-tag.on { color: var(--duck-ink); background: var(--duck); }
.item-tag.season { color: #fff; background: #c8323a; }
/* a bundle: the pictures of what's in it, two by two */
.bundle-pics { width: 64px; flex: none; display: grid; grid-template-columns: repeat(2, 32px); gap: 0; }
.bundle-pics .item-pic { width: 32px; height: 32px; border-radius: 4px; }
.bundle-pics .item-pic svg { width: 24px; height: 24px; }

/* a quieter button next to the gold one */
.btn-ghost { color: var(--foam); background: transparent; border-color: var(--slot-hi); box-shadow: none; }
.btn-ghost:hover { color: var(--foam); background: rgba(255, 255, 255, 0.06); }
.btn-ghost:active { box-shadow: none; }

/* shop: what a test purchase did */
.shop-note { margin: 0 0 28px; padding: 12px 16px; border-radius: 8px; font-weight: 700; color: #ffd0d0; background: rgba(255, 111, 111, 0.1); border: 1px solid rgba(255, 111, 111, 0.35); max-width: 46rem; }
.shop-note.ok { color: #c9f5c1; background: rgba(123, 227, 107, 0.1); border-color: rgba(123, 227, 107, 0.35); }

/* shop: the emotes, name and price, packed tight */
.emotes { list-style: none; padding: 0; margin: 22px 0 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 8px; }
.emote { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 6px 10px; padding: 10px 14px; background: var(--slot); border-radius: 7px; box-shadow: inset 2px 2px 0 var(--slot-hi), inset -2px -2px 0 var(--slot-lo); }
.emote-name { font-weight: 700; }
.emote .item-price { font-size: 0.95rem; }
.emote.mine { box-shadow: inset 2px 2px 0 rgba(255, 201, 40, 0.45), inset -2px -2px 0 var(--slot-lo); }
@media (max-width: 520px) { .emotes { grid-template-columns: repeat(2, minmax(0, 1fr)); } .emote { padding: 9px 11px; } }

/* shop: name styles, each shown on your name, moving like in the game */
.names { list-style: none; padding: 0; margin: 22px 0 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 12px; }
.name-card { padding: 16px 18px; display: flex; flex-direction: column; gap: 6px; }
.name-card h3 { font-size: 1.15rem; }
.name-card p { color: var(--reed); font-size: 0.95rem; }
.ns-plate { display: block; padding: 8px 12px; margin-bottom: 4px; border-radius: 6px; background: rgba(0, 0, 0, 0.42); }
.ns { font-family: var(--display); font-size: 1.4rem; line-height: 1.2; letter-spacing: 0.02em; overflow-wrap: anywhere; color: #ffd45c; }
.ns-solid { color: #ffd45c; }
.ns-pulse { animation: ns-pulse 1.8s ease-in-out infinite; }
.ns-shimmer, .ns-fire, .ns-ocean, .ns-rainbow, .ns-galaxy { color: transparent; -webkit-background-clip: text; background-clip: text; background-size: 300% 100%; animation: ns-flow 3.2s linear infinite; }
.ns-shimmer { background-image: linear-gradient(100deg, #ffd45c 40%, #fff8dc 50%, #ffd45c 60%); animation-duration: 2.6s; }
.ns-fire { background-image: linear-gradient(90deg, #ff3a1c, #ff8a1f, #ffe066, #ff8a1f, #ff3a1c); animation-duration: 1.6s; }
.ns-ocean { background-image: linear-gradient(90deg, #2c6cff, #3fe6d9, #e4fcff, #3fe6d9, #2c6cff); }
.ns-rainbow { background-image: linear-gradient(90deg, #ff6b6b, #ffb347, #ffe45c, #6be37b, #4fb8ff, #a98bff, #ff6b6b); }
.ns-galaxy { background-image: linear-gradient(90deg, #8a5cff, #ff6ad5, #4fa3ff, #8a5cff); animation-duration: 4.4s; }
.ns-gradient { color: transparent; -webkit-background-clip: text; background-clip: text; background-image: linear-gradient(90deg, #ffd45c, #ff6fb5); }
.ns-rose, .ns-candy { color: transparent; -webkit-background-clip: text; background-clip: text; background-size: 300% 100%; animation: ns-flow 5s linear infinite; }
.ns-rose { background-image: linear-gradient(90deg, #ff3d8b, #ffb8d9, #ff3d8b); }
.ns-candy { background-image: linear-gradient(90deg, #ff9ad5, #c9a7ff, #8fd3ff, #ff9ad5); animation-duration: 4.6s; }
.nm > span { display: inline-block; }
.nm-bounce > span { animation: nm-bounce 0.75s ease-in-out infinite; }
.nm-wave > span { animation: nm-wave 1.8s ease-in-out infinite; }
.nm > span:nth-child(2) { animation-delay: -0.13s; } .nm > span:nth-child(3) { animation-delay: -0.26s; }
.nm > span:nth-child(4) { animation-delay: -0.39s; } .nm > span:nth-child(5) { animation-delay: -0.52s; }
.nm > span:nth-child(6) { animation-delay: -0.65s; } .nm > span:nth-child(7) { animation-delay: -0.78s; }
.nm > span:nth-child(8) { animation-delay: -0.91s; } .nm > span:nth-child(9) { animation-delay: -1.04s; }
.nm > span:nth-child(10) { animation-delay: -1.17s; } .nm > span:nth-child(11) { animation-delay: -1.3s; }
.nm > span:nth-child(12) { animation-delay: -1.43s; } .nm > span:nth-child(13) { animation-delay: -1.56s; }
.nm > span:nth-child(14) { animation-delay: -1.69s; } .nm > span:nth-child(15) { animation-delay: -1.82s; }
.nm > span:nth-child(16) { animation-delay: -1.95s; }
@keyframes ns-flow { from { background-position: 0% 0; } to { background-position: -300% 0; } }
@keyframes ns-pulse { 50% { filter: brightness(0.62); } }
@keyframes nm-bounce { 0%, 100% { transform: translateY(0); animation-timing-function: ease-out; } 50% { transform: translateY(-0.3em); animation-timing-function: ease-in; } }
@keyframes nm-wave { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-0.22em); } }
/* capes server 35: letters that type themselves, glitch, or burn */
.nm-typewriter > span { animation: nm-type 3.6s steps(1, end) infinite both; }
.nm-typewriter::after { content: "_"; display: inline-block; margin-left: 2px; animation: nm-blink 0.9s steps(1, end) infinite; }
.nm-typewriter > span:nth-child(1) { animation-delay: 0s; } .nm-typewriter > span:nth-child(2) { animation-delay: 0.12s; }
.nm-typewriter > span:nth-child(3) { animation-delay: 0.24s; } .nm-typewriter > span:nth-child(4) { animation-delay: 0.36s; }
.nm-typewriter > span:nth-child(5) { animation-delay: 0.48s; } .nm-typewriter > span:nth-child(6) { animation-delay: 0.6s; }
.nm-typewriter > span:nth-child(7) { animation-delay: 0.72s; } .nm-typewriter > span:nth-child(8) { animation-delay: 0.84s; }
.nm-typewriter > span:nth-child(9) { animation-delay: 0.96s; } .nm-typewriter > span:nth-child(10) { animation-delay: 1.08s; }
.nm-typewriter > span:nth-child(11) { animation-delay: 1.2s; } .nm-typewriter > span:nth-child(12) { animation-delay: 1.32s; }
.nm-typewriter > span:nth-child(13) { animation-delay: 1.44s; } .nm-typewriter > span:nth-child(14) { animation-delay: 1.56s; }
.nm-typewriter > span:nth-child(15) { animation-delay: 1.68s; } .nm-typewriter > span:nth-child(16) { animation-delay: 1.8s; }
.nm-glitch > span { animation: nm-glitch 2.6s steps(1, end) infinite; }
.nm-flame > span { animation: nm-flame 0.9s ease-in-out infinite alternate; }
@keyframes nm-type { 0% { opacity: 0; } 4% { opacity: 1; } 72% { opacity: 0; } }
@keyframes nm-blink { 50% { opacity: 0; } }
@keyframes nm-glitch {
  0%, 74%, 100% { transform: none; text-shadow: none; opacity: 1; }
  76% { transform: translate(1px, -1px); text-shadow: -2px 0 #ff2a6d, 2px 0 #2de2e6; }
  80% { transform: translate(-2px, 1px); text-shadow: 2px 0 #ff2a6d, -2px 0 #2de2e6; opacity: 0.7; }
  84% { transform: translate(0, 0); text-shadow: -1px 0 #ff2a6d, 1px 0 #2de2e6; }
  88% { transform: none; text-shadow: none; opacity: 1; }
}
@keyframes nm-flame {
  from { transform: translateY(0); text-shadow: 0 -2px 3px rgba(255, 138, 31, 0.9), 0 -5px 7px rgba(255, 58, 28, 0.55); }
  to { transform: translateY(-0.05em); text-shadow: 0 -3px 4px rgba(255, 196, 60, 0.95), 0 -8px 10px rgba(255, 90, 20, 0.6); }
}
@media (prefers-reduced-motion: reduce) { .ns, .nm > span, .nm-typewriter::after { animation: none; } }

/* a test purchase */
.checkout-page { padding: clamp(48px, 8vw, 104px) 0 clamp(64px, 9vw, 120px); display: grid; place-items: center; }
.checkout { width: min(100%, 470px); padding: 28px 28px 26px; display: flex; flex-direction: column; align-items: center; text-align: center; gap: 10px; border-top: 3px solid var(--beak); }
.checkout-tag { font-weight: 700; font-size: 0.9rem; color: var(--beak); background: rgba(255, 138, 31, 0.1); border: 1px solid rgba(255, 138, 31, 0.4); border-radius: 999px; padding: 3px 12px; }
.checkout h1 { display: flex; align-items: center; gap: 12px; font-size: clamp(2.2rem, 7vw, 3rem); text-shadow: 0 4px 0 rgba(0, 0, 0, 0.35); }
.checkout h1 svg { width: 44px; height: 44px; flex: none; filter: drop-shadow(0 3px 0 rgba(0, 0, 0, 0.35)); }
.checkout .pack-extra { min-height: 0; }
.checkout-price { font-family: var(--display); font-size: 1.3rem; }
.checkout-price s { color: var(--reed); }
.checkout-price span { font-family: var(--ui); font-weight: 700; font-size: 1rem; color: #7be36b; }
.checkout-lead { color: var(--reed); }
.checkout-who { display: flex; align-items: center; gap: 8px; font-weight: 700; color: var(--reed); }
.checkout-buttons { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; margin-top: 8px; }

/* the coming soon page: the duck on its pond, and the password */
.gate-body { min-height: 100vh; min-height: 100dvh; display: grid; place-items: center; background: radial-gradient(ellipse 80% 60% at 50% 30%, var(--pond-2), var(--pond) 70%); }
.gate { width: min(100% - 2 * var(--gutter), 470px); padding: 48px 0 40px; display: flex; flex-direction: column; align-items: center; text-align: center; }
.gate-pond { position: relative; width: 220px; height: 128px; display: grid; place-items: end center; }
.gate-pond::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 18px; border-radius: 4px; background: repeating-linear-gradient(90deg, #2e6fc4 0 12px, #3b82d6 12px 24px); box-shadow: inset 0 4px 0 #5ab0ff, inset 0 -4px 0 #1f4f91; }
.gate-duck { position: relative; z-index: 1; width: 112px; height: 112px; margin-bottom: 8px; image-rendering: pixelated; animation: gate-bob 3.2s ease-in-out infinite; filter: drop-shadow(0 6px 0 rgba(0, 0, 0, 0.3)); }
@keyframes gate-bob { 0%, 100% { transform: translateY(0) rotate(-2deg); } 50% { transform: translateY(-7px) rotate(2deg); } }
@media (prefers-reduced-motion: reduce) { .gate-duck { animation: none; } }
.gate-brand { margin-top: 26px; font-family: var(--display); font-size: 1.3rem; color: var(--duck); letter-spacing: 0.02em; }
.gate h1 { font-size: clamp(3rem, 12vw, 4.6rem); line-height: 1; text-shadow: 0 5px 0 rgba(0, 0, 0, 0.35); }
.gate-lead { margin-top: 14px; color: var(--reed); max-width: 30rem; }
.gate-form { width: 100%; margin-top: 30px; display: flex; flex-direction: column; gap: 10px; text-align: left; }
.gate-form label { font-weight: 700; }
.gate-row { display: flex; gap: 10px; }
.gate-input { flex: 1; min-width: 0; font: inherit; font-size: 1.1rem; color: var(--foam); background: var(--slot-lo); border: 2px solid #04050b; border-radius: 8px; padding: 12px 14px; box-shadow: inset 2px 2px 0 #03040a, inset -2px -2px 0 var(--slot-hi); }
.gate-input[aria-invalid] { border-color: #ff6f6f; }
.gate-row .btn { flex: none; }
@media (max-width: 460px) { .gate-row { flex-direction: column; } }
.gate-foot { margin-top: 44px; display: flex; flex-wrap: wrap; justify-content: center; gap: 6px 18px; font-size: 0.95rem; }
.gate-foot a { color: var(--reed); }
.gate-foot a:hover { color: var(--foam); }
.gate-fine { margin-top: 14px; font-size: 0.82rem; color: var(--faint); }

/* the owner's admin page: players on the left, giving coins on the right */
.admin-tag { font-family: var(--display); font-size: 1.05rem; color: var(--duck-ink); background: var(--duck); border-radius: 6px; padding: 3px 9px 2px; }
.admin .nav-end { margin-left: auto; }
.admin-closed { padding: 72px 0 96px; display: flex; flex-direction: column; align-items: flex-start; gap: 6px; max-width: 40rem; }
.admin-closed img { width: 72px; height: 72px; margin-bottom: 14px; }
.admin-closed h1 { font-size: clamp(2.4rem, 7vw, 3.2rem); }
.admin-page { padding: 40px 0 72px; }
.admin-page h1 { font-size: clamp(2.4rem, 6vw, 3.4rem); }
.admin-note { margin-top: 18px; padding: 10px 14px; border-radius: 8px; font-weight: 600; background: rgba(123, 227, 107, 0.12); color: #b9f0c8; border: 1px solid rgba(123, 227, 107, 0.35); }
.admin-note[data-tone="error"] { background: rgba(255, 111, 111, 0.1); color: #ffb3b3; border-color: rgba(255, 111, 111, 0.35); }
.admin-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 22px; margin-top: 26px; align-items: start; }
@media (max-width: 860px) { .admin-grid { grid-template-columns: minmax(0, 1fr); } }
.admin-players, .admin-give { padding: 20px 22px 22px; display: flex; flex-direction: column; gap: 14px; }
.admin-players h2, .admin-recent h2 { font-size: 1.5rem; }
.admin-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.admin-row { display: flex; align-items: center; gap: 12px; padding: 8px 10px; border-radius: 7px; color: var(--foam); text-decoration: none; }
.admin-row:hover { background: rgba(255, 255, 255, 0.05); color: var(--foam); }
.admin-row[aria-current="true"] { background: rgba(255, 201, 40, 0.12); box-shadow: inset 3px 0 0 var(--duck); }
.admin-row-text { display: flex; flex-direction: column; min-width: 0; }
.admin-row-text b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.admin-row-text small, .admin-who small { display: flex; align-items: center; gap: 5px; color: var(--faint); font-size: 0.9rem; }
.admin-coin { width: 14px; height: 14px; flex: none; }
.admin-online { color: #7be36b; font-weight: 700; }
.admin-give { border-top: 3px solid var(--duck); }
.admin-who { display: flex; align-items: center; gap: 14px; }
.admin-who b { font-family: var(--display); font-weight: 400; font-size: 1.6rem; line-height: 1.1; }
.admin-form { display: flex; flex-direction: column; gap: 8px; }
.admin-form label { font-weight: 700; margin-top: 6px; }
.admin-form .btn { align-self: flex-start; margin-top: 10px; }
.admin-amounts { border: 0; margin: 0; padding: 0; }
.admin-amounts legend { font-weight: 700; padding: 0; margin-bottom: 8px; }
.admin-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.admin-chip { position: relative; display: inline-flex; align-items: center; gap: 6px; padding: 7px 13px; border-radius: 999px; font-weight: 700; color: var(--reed); background: var(--slot-lo); border: 2px solid var(--slot-hi); cursor: pointer; margin: 0 !important; }
.admin-chip input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.admin-chip:has(input:checked) { color: var(--duck-ink); background: var(--duck); border-color: #3d2c00; }
.admin-chip:has(input:focus-visible) { outline: 3px solid var(--duck); outline-offset: 3px; }
.admin-input { font: inherit; color: var(--foam); background: var(--slot-lo); border: 2px solid #04050b; border-radius: 7px; padding: 9px 12px; box-shadow: inset 2px 2px 0 #03040a; width: 100%; max-width: 26rem; }
.admin-input::placeholder { color: var(--faint); }
.admin-sub { font-size: 1.15rem; margin-top: 10px; }
.admin-log, .admin-gifts-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.admin-log li, .admin-gifts-list li { display: grid; grid-template-columns: 5.5rem minmax(0, 1fr) auto; gap: 12px; align-items: baseline; padding: 7px 0; border-bottom: 1px solid var(--hair); font-size: 0.95rem; }
.admin-gifts-list li { grid-template-columns: 5.5rem minmax(0, 10rem) minmax(0, 1fr) auto; }
.admin-log time, .admin-gifts-list time { color: var(--faint); white-space: nowrap; }
.admin-plus { color: #7be36b; font-weight: 700; font-variant-numeric: tabular-nums; }
.admin-minus { color: #ff9a9a; font-weight: 700; font-variant-numeric: tabular-nums; }
.admin-gift-note { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--reed); }
.admin-recent { margin-top: 34px; display: flex; flex-direction: column; gap: 12px; }
/* the cosmetic vote (capes server 30) */
.vote-page { padding-block: 40px 70px; }
.vote-note { margin: 22px 0 0; }
.vote-status { margin-top: 18px; font-weight: 700; color: var(--reed); display: flex; align-items: center; gap: 10px; }
.vote-status::before { content: ""; width: 10px; height: 10px; border-radius: 50%; background: var(--faint); flex: none; }
.vote-status[data-open]::before { background: #7be36b; box-shadow: 0 0 0 4px rgba(123, 227, 107, 0.18); }
.vote-sign-in { margin-top: 22px; flex-direction: row; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; max-width: 46rem; }
.vote-sign-in p { margin: 0; color: var(--reed); max-width: 34rem; }
.vote-ideas { list-style: none; padding: 0; margin: 28px 0 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 18px; }
.vote-idea { position: relative; padding: 18px 18px 22px; display: flex; flex-direction: column; align-items: center; text-align: center; gap: 8px; }
.vote-idea.is-mine { box-shadow: inset 2px 2px 0 var(--slot-hi), inset -2px -2px 0 var(--slot-lo), 0 0 0 3px var(--duck); }
.vote-idea.is-winner { box-shadow: inset 2px 2px 0 var(--slot-hi), inset -2px -2px 0 var(--slot-lo), 0 0 0 3px #7be36b; }
.vote-pic { display: block; width: 192px; max-width: 100%; height: auto; aspect-ratio: 1; background: radial-gradient(circle at 50% 62%, #262d49, var(--slot-lo) 72%); border-radius: 8px; }
.vote-idea h2 { font-size: 1.5rem; margin-top: 6px; }
.vote-idea p { color: var(--reed); margin: 0; max-width: 32ch; }
.vote-badge { position: absolute; top: 12px; left: 12px; font-size: 0.82rem; font-weight: 700; color: #08130a; background: #7be36b; border-radius: 5px; padding: 2px 8px; }
.vote-badge.is-mine { color: var(--duck-ink); background: var(--duck); }
.vote-idea .vote-mine { font-family: var(--display); font-size: 1.15rem; color: var(--duck); margin-top: 6px; }
.vote-page .fine { margin-top: 22px; color: var(--faint); }
.vote-idea form { margin-top: 8px; }
.vote-count { width: 100%; display: flex; flex-direction: column; gap: 6px; font-size: 0.92rem; color: var(--reed); margin-top: 6px; }
.vote-bar { display: block; height: 10px; border-radius: 6px; background: var(--slot-lo); overflow: hidden; width: 100%; }
.vote-bar > span { display: block; height: 100%; border-radius: 6px; background: linear-gradient(90deg, var(--duck-deep), var(--duck)); }
.w-0 { width: 0%; } .w-5 { width: 5%; } .w-10 { width: 10%; } .w-15 { width: 15%; } .w-20 { width: 20%; } .w-25 { width: 25%; } .w-30 { width: 30%; } .w-35 { width: 35%; } .w-40 { width: 40%; } .w-45 { width: 45%; } .w-50 { width: 50%; } .w-55 { width: 55%; } .w-60 { width: 60%; } .w-65 { width: 65%; } .w-70 { width: 70%; } .w-75 { width: 75%; } .w-80 { width: 80%; } .w-85 { width: 85%; } .w-90 { width: 90%; } .w-95 { width: 95%; } .w-100 { width: 100%; }
/* the admin page: maintenance mode and the vote (capes server 30) */
.admin-top { margin: 26px 0 34px; }
.admin-maintenance, .admin-vote { padding: 20px 22px 22px; display: flex; flex-direction: column; gap: 10px; border-top: 3px solid var(--slot-hi); }
.admin-maintenance h2, .admin-vote h2 { font-size: 1.5rem; }
.admin-buttons .btn-quiet { padding: 12px 18px; font-size: 1rem; }
.admin-state { color: var(--reed); margin: 6px 0 12px; }
.admin-state[data-on] b { color: #7be36b; }
.admin-buttons { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 12px; }
textarea.admin-input { resize: vertical; max-width: 100%; min-height: 4.5rem; }
.admin-vote-list { list-style: none; margin: 0 0 6px; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.admin-vote-row { display: grid; grid-template-columns: minmax(0, 12rem) minmax(0, 1fr) auto; gap: 12px; align-items: center; }
.admin-vote-n { color: var(--reed); font-variant-numeric: tabular-nums; white-space: nowrap; }
@media (max-width: 560px) {
  .admin-vote-row { grid-template-columns: minmax(0, 1fr) auto; }
  .admin-vote-row .vote-bar { grid-column: 1 / 3; grid-row: 2; }
  .admin-gifts-list li { grid-template-columns: 4.5rem minmax(0, 1fr) auto; row-gap: 2px; }
  .admin-gifts-list time { grid-column: 3; grid-row: 1; }
  .admin-gift-note { grid-column: 2 / 4; grid-row: 2; white-space: normal; }
}
/* sales (capes server 31): the shop's banner, struck-through old prices and the percent off */
.sale-banner { display: flex; align-items: center; gap: 12px; margin: 0 0 16px; padding: 12px 16px; border-radius: 10px; font-weight: 700; color: var(--duck-ink); background: linear-gradient(90deg, var(--duck), #ffe07a); max-width: 52rem; }
.sale-banner.soon { color: var(--foam); background: var(--slot); border: 1px dashed var(--slot-hi); font-weight: 600; }
.sale-off { flex: none; font-family: var(--display); font-size: 1.25rem; padding: 2px 10px; border-radius: 6px; color: #fff; background: #c8323a; }
.item-price.on-sale s { color: var(--reed); font-weight: 600; margin-right: 2px; }
.item-tag.sale { color: #fff; background: #c8323a; }
/* shared pictures: your Pictures page, a picture's own page, and pictures in the chat */
.pictures-page h2 { margin: 30px 0 14px; }
.pictures-page .fine { margin-top: 10px; }
.pics { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr)); gap: 14px; }
.pic { display: flex; flex-direction: column; gap: 8px; padding: 10px; }
.pic-img { display: block; border-radius: 6px; overflow: hidden; background: #0b0f1e; aspect-ratio: 16 / 9; }
.pic-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.pic-img:focus-visible { outline: 3px solid var(--duck); outline-offset: 2px; }
.pic-foot { display: flex; align-items: center; justify-content: space-between; gap: 8px; color: var(--reed); font-size: 0.88rem; }
.pic-acts { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.pic-delete summary { list-style: none; cursor: pointer; }
.pic-delete summary::-webkit-details-marker { display: none; }
.pic-delete[open] summary { color: var(--reed); }
.pics-friend h3 { display: flex; align-items: center; gap: 8px; margin: 18px 0 10px; font-size: 1.1rem; }
.pic-page { padding-top: 26px; padding-bottom: 40px; max-width: 1100px; }
.pic-big { margin: 0 0 16px; padding: 10px; }
.pic-big > img { display: block; width: 100%; height: auto; border-radius: 6px; }
.pic-big figcaption { display: flex; align-items: center; gap: 8px; margin-top: 10px; color: var(--reed); }
.pic-gone { text-align: center; padding-top: 60px; }
.bubble-pic { padding: 5px 5px 4px; }
.bubble-shot { display: block; border-radius: 8px; overflow: hidden; max-width: 320px; }
.bubble-shot img { display: block; width: 100%; height: auto; }
.bubble-pic time { padding: 0 6px; }
/* the admin page: sales and shared pictures (capes server 31) */
.admin-sales { padding: 20px 22px 22px; margin: 0 0 34px; border-top: 3px solid var(--duck); display: flex; flex-direction: column; gap: 10px; }
.admin-sales h2 { font-size: 1.5rem; }
.admin-sale-list { list-style: none; margin: 0 0 8px; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.admin-sale { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 12px; align-items: center; padding: 10px 12px; border-radius: 8px; background: var(--slot-hi); }
.admin-sale-text small { display: block; color: var(--reed); margin-top: 2px; }
.admin-two { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.admin-two label { display: block; }
.admin-sale-form select.admin-input { width: 100%; }
.admin-pictures { margin-top: 34px; }
.admin-shots { list-style: none; margin: 14px 0 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 200px), 1fr)); gap: 12px; }
.admin-shot { display: flex; flex-direction: column; gap: 6px; }
.admin-shot img { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; border-radius: 6px; background: #0b0f1e; }
.admin-shot small { color: var(--reed); }
.admin-shot summary { list-style: none; cursor: pointer; }
/* capes server 35: the News page */
.news-page { padding: clamp(40px, 7vw, 88px) 0 clamp(64px, 9vw, 120px); }
.news-page h1, .servers-page h1 { font-size: clamp(2.6rem, 6vw, 4rem); text-shadow: 0 4px 0 rgba(0, 0, 0, 0.35); }
.news-list { display: flex; flex-direction: column; gap: 28px; max-width: 860px; }
.news-entry { overflow: hidden; }
.news-pic { display: block; width: 100%; height: auto; aspect-ratio: 8 / 3; object-fit: cover; background: var(--slot-lo); }
.news-body { padding: 22px 26px 26px; display: flex; flex-direction: column; gap: 10px; }
.news-when { color: var(--faint); font-size: 0.95rem; font-variant-numeric: tabular-nums; }
.news-body h2 { font-size: clamp(1.5rem, 3vw, 2rem); line-height: 1.15; }
.news-lead { color: var(--foam); }
.news-body ul { list-style: none; padding: 0; margin: 6px 0 0; display: grid; gap: 9px; }
.news-body li { padding-left: 28px; background: url(/site/duck-sprite.6955c74b75.png) 0 0.22em / 17px auto no-repeat; image-rendering: pixelated; color: var(--reed); }

/* capes server 35: featured servers and the sponsor spot */
.servers-page { padding: clamp(40px, 7vw, 88px) 0 clamp(64px, 9vw, 120px); }
.featured-list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 340px), 1fr)); gap: 18px; }
.featured-card { overflow: hidden; display: flex; flex-direction: column; }
.featured-banner { display: block; width: 100%; aspect-ratio: 4 / 1; object-fit: cover; background: linear-gradient(135deg, #1b2442, #2a1735); }
.featured-banner-none { display: grid; place-items: center; }
.featured-banner-none svg { width: 40px; height: 40px; opacity: 0.6; }
.featured-body { padding: 16px 18px 18px; display: flex; flex-direction: column; gap: 8px; align-items: flex-start; }
.featured-body h2 { font-size: 1.5rem; }
.featured-body p { color: var(--reed); }
.featured-address span { color: var(--faint); font-size: 0.9rem; }
.featured-address code, .admin-featured code { font-family: ui-monospace, "Cascadia Mono", Consolas, monospace; font-size: 0.95rem; color: var(--foam); background: var(--slot-lo); border-radius: 5px; padding: 2px 7px; }
.featured-none { margin-bottom: 18px; }
.sponsor-spot { margin-top: 30px; padding: 22px 24px; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px 28px; border: 2px dashed rgba(255, 201, 40, 0.45); background: rgba(255, 201, 40, 0.04); box-shadow: none; }
.sponsor-spot h2 { font-size: 1.6rem; }
.sponsor-spot p { color: var(--reed); max-width: 40rem; margin-top: 6px; }

/* capes server 35: Join me and invite links */
.join-page { padding: clamp(40px, 8vw, 96px) 0 clamp(64px, 9vw, 110px); display: flex; flex-direction: column; align-items: center; gap: 22px; text-align: center; }
.join-card { padding: 30px clamp(20px, 5vw, 44px) 32px; max-width: 640px; display: flex; flex-direction: column; align-items: center; gap: 14px; border-top: 3px solid var(--duck); }
.join-card h1, .join-bad h1 { font-size: clamp(2rem, 5vw, 2.8rem); line-height: 1.1; }
.join-card .lead { margin-top: 0; }
.join-how { text-align: left; color: var(--reed); margin: 6px 0 0; padding-left: 1.3em; display: grid; gap: 6px; }
.join-get { display: flex; flex-direction: column; align-items: center; gap: 10px; color: var(--reed); }
.invite-code { font-family: var(--display); font-size: clamp(2.4rem, 8vw, 3.4rem); letter-spacing: 0.18em; color: var(--duck); background: var(--slot-lo); border-radius: 10px; padding: 8px 18px 6px 26px; box-shadow: inset 2px 2px 0 #03040a; }

/* capes server 35: coupon codes and Duck+ in the shop */
.coupon { margin: 28px 0 0; padding: 18px 22px; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 14px 26px; }
.coupon h2 { font-size: 1.45rem; }
.coupon p { color: var(--reed); margin-top: 4px; max-width: 34rem; }
.coupon-form { display: flex; gap: 10px; flex-wrap: wrap; }
.coupon-form input { font: inherit; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--foam); background: var(--slot-lo); border: 2px solid #04050b; border-radius: 7px; padding: 8px 12px; box-shadow: inset 2px 2px 0 #03040a; width: 15rem; max-width: 100%; }
.coupon-form input::placeholder { color: var(--faint); letter-spacing: 0.04em; }
.plus-card { margin: 18px 0 4px; padding: 20px 22px 22px; display: flex; flex-direction: column; gap: 10px; border: 2px solid rgba(255, 201, 40, 0.5); background: linear-gradient(160deg, rgba(255, 201, 40, 0.1), rgba(42, 23, 53, 0.35) 60%), var(--slot); }
.plus-head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 8px 18px; }
.plus-head h2 { font-size: 1.7rem; display: flex; align-items: center; gap: 10px; }
.plus-mark { display: inline-grid; place-items: center; width: 1.3em; height: 1.3em; border-radius: 6px; color: var(--duck-ink); background: var(--duck); font-size: 0.85em; box-shadow: inset 0 -3px 0 var(--duck-deep); }
.plus-price { font-weight: 700; color: var(--foam); display: flex; align-items: center; gap: 10px; }
.plus-card > p { color: var(--reed); max-width: 44rem; }
.plus-card ul { margin: 0; padding-left: 1.2em; color: var(--reed); display: grid; gap: 4px; }
.plus-have { color: #b9f0c8 !important; font-weight: 700; }

/* capes server 35: the admin page's featured servers and coupon codes */
.admin-featured-part, .admin-coupons { margin: 0 0 34px; display: flex; flex-direction: column; gap: 12px; }
.admin-featured-part h2, .admin-coupons h2 { font-size: 1.5rem; }
.admin-featured-list, .admin-coupon-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.admin-featured { display: grid; grid-template-columns: 180px minmax(0, 1fr) auto; gap: 14px; align-items: start; padding: 12px; border-radius: 8px; background: var(--slot-hi); }
.admin-banner { width: 180px; aspect-ratio: 4 / 1; object-fit: cover; border-radius: 5px; background: var(--slot-lo); }
.admin-banner-none { display: grid; place-items: center; color: var(--faint); font-size: 0.85rem; }
.admin-featured-text { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.admin-featured-text small { color: var(--reed); }
.admin-featured .admin-buttons { margin-top: 0; flex-wrap: wrap; justify-content: flex-end; align-items: flex-start; max-width: 24rem; }
.admin-edit[open] { flex-basis: 100%; order: 9; }
.admin-edit[open] summary { margin-left: auto; width: max-content; }
.admin-edit summary, .admin-featured details summary, .admin-coupon details summary { list-style: none; cursor: pointer; }
.admin-check { display: flex; align-items: center; gap: 8px; font-weight: 600 !important; }
.admin-sponsor-form { padding: 18px 20px 20px; display: flex; flex-direction: column; gap: 8px; }
.admin-coupon { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 14px; align-items: center; padding: 10px 12px; border-radius: 8px; background: var(--slot-hi); }
.admin-code { font-family: ui-monospace, "Cascadia Mono", Consolas, monospace; font-weight: 700; letter-spacing: 0.04em; color: var(--duck); background: var(--slot-lo); border-radius: 5px; padding: 4px 9px; }
.admin-coupon-text small { display: block; color: var(--reed); margin-top: 2px; }
.admin-coupon-form { padding: 18px 20px 20px; }
.admin-coupon-form select.admin-input { width: 100%; }
.admin-plus-tag { color: var(--duck); font-weight: 700; }

@media (max-width: 760px) {
  .admin-featured { grid-template-columns: minmax(0, 1fr); }
  .admin-banner { width: 100%; }
  .admin-featured .admin-buttons { justify-content: flex-start; max-width: none; }
}

@media (max-width: 560px) {
  .admin-two { grid-template-columns: minmax(0, 1fr); }
  .admin-sale { grid-template-columns: minmax(0, 1fr) auto; }
  .admin-sale > span:nth-child(2) { grid-column: 1; grid-row: 2; }
  .sale-banner { flex-wrap: wrap; }
}
