/* Friendsbook: early-2000s desktop chrome on a modern, phone-first layout. No external fonts or CDNs. */

:root {
  --desk: #7fb8c9;
  --desk-2: #6aa9bc;
  --win: #ece9d8;
  --win-hi: #ffffff;
  --win-lo: #a7a39a;
  --win-dk: #5c5a54;
  --ink: #1d1d1b;
  --muted: #5d5a52;
  --link: #1a3fb0;
  --title-1: #0a246a;
  --title-2: #3a6ee8;
  --accent: #ff7a00;
  --good: #2f7d32;
  --bad: #b3261e;
  --paper: #fffef7;
  --chip-on: #ffe08a;
  --font: Tahoma, Verdana, "Segoe UI", system-ui, sans-serif;
  --display: "Trebuchet MS", "Arial Rounded MT Bold", Verdana, sans-serif;
  --mono: "Courier New", ui-monospace, monospace;
  color-scheme: light;
}

@media (prefers-color-scheme: dark) {
  :root {
    --desk: #12204a;
    --desk-2: #0e1a3d;
    --win: #2a2d38;
    --win-hi: #4a4f5e;
    --win-lo: #1b1d24;
    --win-dk: #0c0d11;
    --ink: #eceae2;
    --muted: #a9a698;
    --link: #8fb4ff;
    --title-1: #3b1f7a;
    --title-2: #c2387f;
    --paper: #23252e;
    --chip-on: #6b5a12;
    color-scheme: dark;
  }
}

* { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  font: 15px/1.45 var(--font);
  color: var(--ink);
  background-color: var(--desk);
  background-image:
    radial-gradient(circle at 25% 25%, rgb(255 255 255 / .18) 0 2px, transparent 3px),
    radial-gradient(circle at 75% 75%, rgb(255 255 255 / .12) 0 1.5px, transparent 2.5px),
    linear-gradient(45deg, var(--desk-2) 25%, transparent 25% 75%, var(--desk-2) 75%),
    linear-gradient(45deg, var(--desk-2) 25%, transparent 25% 75%, var(--desk-2) 75%);
  background-size: 48px 48px, 48px 48px, 48px 48px, 48px 48px;
  background-position: 0 0, 0 0, 0 0, 24px 24px;
  min-height: 100vh;
}

a { color: var(--link); }
img { max-width: 100%; }

/* --- top bar --------------------------------------------------------------- */

.topbar {
  position: sticky; top: 0; z-index: 10;
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
  padding: 8px max(16px, env(safe-area-inset-right)) 8px max(16px, env(safe-area-inset-left));
  background: linear-gradient(#4f74c8, #2b4a9b 60%, #23407f);
  border-bottom: 2px solid #142a5c;
  box-shadow: 0 2px 0 rgb(255 255 255 / .25) inset, 0 3px 8px rgb(0 0 0 / .25);
}
.logo {
  font: italic 800 26px/1 var(--display);
  color: #fff; text-decoration: none; letter-spacing: -.5px;
  text-shadow: 2px 2px 0 #142a5c;
  display: flex; align-items: center;
}
.logo-f {
  display: inline-grid; place-items: center;
  width: 30px; height: 30px; margin-right: 2px;
  background: linear-gradient(#ffd34d, #ff9f1a); color: #7a2e00;
  border: 2px solid #fff; border-radius: 6px; text-shadow: none; font-style: normal;
  transform: rotate(-6deg);
}
.logo-tag {
  font: bold 9px/1 var(--font); font-style: normal; text-transform: uppercase;
  margin-left: 6px; padding: 2px 4px; color: #7a2e00; background: #ffd34d; border-radius: 3px;
  text-shadow: none; transform: translateY(-9px) rotate(8deg);
}
.nav {
  display: flex; align-items: center; gap: 4px; margin-left: auto;
  overflow-x: auto; scrollbar-width: none; max-width: 100%;
}
.nav::-webkit-scrollbar { display: none; }
.nav a, .nav .linkish {
  color: #fff; text-decoration: none; font-weight: bold; font-size: 14px;
  padding: 6px 10px; border-radius: 4px; white-space: nowrap;
}
.nav a:hover, .nav a[aria-current] { background: rgb(255 255 255 / .18); box-shadow: 0 0 0 1px rgb(255 255 255 / .35) inset; }
.nav form { margin: 0; }
.nav-me { display: flex; align-items: center; gap: 6px; }
.nav-me .avatar { border-color: #fff; }

/* --- member banner ----------------------------------------------------------- */

.banner {
  text-align: center; padding: 3px 12px;
  font: bold 13px/1.6 var(--display); letter-spacing: .3px; color: #3b1600;
  background: linear-gradient(#ffe27a, #ffc93d); border-bottom: 1px solid #c98a00;
  text-shadow: 0 1px 0 rgb(255 255 255 / .5);
}
.banner b { font-size: 15px; color: #a3260b; }

/* --- online ticker ---------------------------------------------------------- */

.ticker {
  overflow: hidden; white-space: nowrap;
  background: #000; color: #7cff6b; font: 13px/1.9 var(--mono);
  border-bottom: 2px solid #333;
}
.ticker a { color: #7cff6b; }
.ticker-track { display: inline-flex; animation: ticker 24s linear infinite; }
.ticker-copy { padding: 0 16px; min-width: 100vw; }
@keyframes ticker { to { transform: translateX(-50%); } }

/* --- page layout ------------------------------------------------------------ */

.page { max-width: 1040px; margin: 0 auto; padding: 16px; }
.page.narrow { max-width: 620px; }
.page.with-side { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 16px; align-items: start; }
.with-side .col-side { position: sticky; top: 76px; display: grid; gap: 16px; }
.profile-side { order: -1; }
.page.with-side:has(.profile-side) { grid-template-columns: 300px minmax(0, 1fr); }
.col-main { display: grid; gap: 16px; min-width: 0; }
.page > .window + .window, .page.narrow > * + * { margin-top: 16px; }

@media (max-width: 820px) {
  .page.with-side, .page.with-side:has(.profile-side) { grid-template-columns: minmax(0, 1fr); }
  .with-side .col-side { position: static; }
  .page.with-side:not(:has(.profile-side)) .col-side { order: 2; }
}
@media (max-width: 560px) {
  .page { padding: 10px; }
  .logo { font-size: 22px; }
  .topbar { gap: 6px; padding-top: 6px; padding-bottom: 6px; }
  .nav { margin-left: 0; width: 100%; }
  .nav-me span { display: none; }
}

/* --- windows ---------------------------------------------------------------- */

.window {
  background: var(--win);
  border: 2px solid;
  border-color: var(--win-hi) var(--win-dk) var(--win-dk) var(--win-hi);
  box-shadow: 1px 1px 0 var(--win-lo), 4px 4px 0 rgb(0 0 0 / .18);
  border-radius: 6px 6px 3px 3px;
  min-width: 0;
}
.titlebar {
  display: flex; align-items: center; gap: 8px;
  padding: 4px 4px 4px 8px; border-radius: 4px 4px 0 0;
  background: linear-gradient(90deg, var(--title-1), var(--title-2));
  color: #fff; font: bold 13px/1.4 var(--font);
  text-shadow: 1px 1px 0 rgb(0 0 0 / .4);
}
.titlebar-text { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.titlebar-note { font-weight: normal; opacity: .85; font-size: 12px; }
.titlebar-error { background: linear-gradient(90deg, #7a0d0d, #e0533c); }
.titlebar-btn {
  display: inline-grid; place-items: center; width: 20px; height: 18px;
  background: var(--win); color: var(--ink); text-decoration: none; text-shadow: none;
  border: 1px solid; border-color: var(--win-hi) var(--win-dk) var(--win-dk) var(--win-hi);
  font: bold 12px/1 var(--font); border-radius: 2px;
}
.window-body { padding: 12px; }
.flash { animation: flash 1.2s ease-out 2; }
@keyframes flash { 50% { box-shadow: 0 0 0 4px var(--accent); } }

/* --- buttons & forms -------------------------------------------------------- */

.btn {
  display: inline-flex; align-items: center; gap: 6px; justify-content: center;
  min-height: 34px; padding: 6px 14px;
  font: bold 14px/1 var(--font); color: var(--ink); text-decoration: none; cursor: pointer;
  background: linear-gradient(var(--win-hi), var(--win));
  border: 2px solid; border-color: var(--win-hi) var(--win-dk) var(--win-dk) var(--win-hi);
  border-radius: 4px; box-shadow: 1px 1px 0 var(--win-lo);
}
.btn:active { border-color: var(--win-dk) var(--win-hi) var(--win-hi) var(--win-dk); transform: translate(1px, 1px); }
.btn-primary { background: linear-gradient(#ffb547, #ff7a00); color: #3b1600; border-color: #ffd9a1 #9b4300 #9b4300 #ffd9a1; }
.btn:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible, .linkish:focus-visible, .chip:focus-visible {
  outline: 2px dotted var(--ink); outline-offset: 2px;
}
.btn-big { min-height: 48px; font-size: 17px; }
.linkish { background: none; border: 0; padding: 0; color: var(--link); text-decoration: underline; cursor: pointer; font: inherit; }

input, textarea, select {
  font: 16px/1.4 var(--font); color: var(--ink);
  width: 100%; padding: 8px;
  background: var(--paper);
  border: 2px solid; border-color: var(--win-dk) var(--win-hi) var(--win-hi) var(--win-dk);
  border-radius: 2px;
}
textarea { resize: vertical; }
input[type=checkbox] { width: 18px; height: 18px; accent-color: var(--title-2); }
.stack { display: grid; gap: 12px; }
.stack label { display: grid; gap: 4px; font-weight: bold; }
.stack small, .hint { font-weight: normal; color: var(--muted); font-size: 13px; }
.hint { margin: 8px 0 0; }
.inline-form { display: flex; gap: 8px; flex-wrap: wrap; }
.inline-form input { flex: 1 1 200px; width: auto; }
.alert { margin: 0; padding: 8px 10px; background: #ffe2dd; color: #6b0f08; border: 1px solid var(--bad); border-radius: 3px; }
.ok { margin: 0; color: var(--good); font-weight: bold; }

/* --- hero ------------------------------------------------------------------- */

.hero { text-align: center; color: #fff; text-shadow: 2px 2px 0 rgb(0 0 0 / .35); padding: 12px 0 4px; }
.hero h1 { font: italic 800 clamp(26px, 6vw, 38px)/1.1 var(--display); margin: 0 0 6px; }
.hero p { margin: 0; font-size: 16px; }
.rainbow {
  background: linear-gradient(90deg, #ff5f6d, #ffc371, #f9f871, #7cff6b, #47c2ff, #b388ff);
  -webkit-background-clip: text; background-clip: text; color: transparent; text-shadow: none;
  filter: drop-shadow(2px 2px 0 rgb(0 0 0 / .35));
}
.sparkle { display: inline-block; animation: wiggle 1.4s ease-in-out infinite; }
@keyframes wiggle { 50% { transform: rotate(14deg) scale(1.15); } }
.blink { animation: blink 1s steps(1) infinite; }
@keyframes blink { 50% { opacity: 0; } }
.big { font-size: 18px; font-weight: bold; }

/* --- avatars ---------------------------------------------------------------- */

.avatar {
  display: inline-grid; place-items: center; flex: none;
  border-radius: 6px; border: 2px solid var(--win-hi); box-shadow: 1px 1px 0 var(--win-dk);
  object-fit: cover; background: var(--paper);
}
.avatar-blank {
  width: var(--s); height: var(--s);
  font: bold calc(var(--s) * .5)/1 var(--display); color: #fff;
  background: linear-gradient(135deg, #ff9a8b, #ff6a88 50%, #a46bff);
}

/* --- composer --------------------------------------------------------------- */

.composer textarea { min-height: 84px; }
.composer.dragging { outline: 3px dashed var(--accent); outline-offset: 4px; }
.composer-bar { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-top: 8px; }
.composer-bar .btn-primary { margin-left: auto; }
.audience { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--muted); }
.audience select { width: auto; max-width: 200px; padding: 6px; font-size: 14px; }
.previews { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 8px; }
.preview { position: relative; width: 84px; height: 84px; }
.preview img { width: 100%; height: 100%; object-fit: cover; border: 2px solid var(--win-hi); box-shadow: 2px 2px 0 rgb(0 0 0 / .2); }
.preview button {
  position: absolute; top: -8px; right: -8px; width: 24px; height: 24px; border-radius: 50%;
  border: 2px solid #fff; background: var(--bad); color: #fff; font-weight: bold; cursor: pointer; line-height: 1;
}

/* --- posts ------------------------------------------------------------------ */

.post-head { display: flex; gap: 10px; align-items: center; }
.post-author { font-weight: bold; text-decoration: none; display: block; }
.post-time { font-size: 12px; color: var(--muted); text-decoration: none; }
.post-delete { margin-left: auto; font-size: 12px; }
.post-body { white-space: pre-wrap; overflow-wrap: anywhere; margin: 10px 0; font-size: 16px; }

.photo-grid { display: grid; gap: 4px; margin: 10px 0; border-radius: 3px; overflow: hidden; }
.photo-grid .photo { display: block; background: var(--win-lo); }
.photo-grid img { display: block; width: 100%; height: 100%; object-fit: cover; }
.photo-grid.n1 img { height: auto; max-height: 560px; object-fit: contain; background: #000; }
.photo-grid.n2 { grid-template-columns: 1fr 1fr; }
.photo-grid.n2 .photo, .photo-grid.n3 .photo, .photo-grid.n4 .photo, .photo-grid.n5 .photo { aspect-ratio: 1; }
.photo-grid.n3 { grid-template-columns: 2fr 1fr; grid-template-rows: 1fr 1fr; }
.photo-grid.n3 .photo:first-child { grid-row: span 2; aspect-ratio: auto; }
.photo-grid.n4 { grid-template-columns: 1fr 1fr; }
.photo-grid.n5 { grid-template-columns: repeat(3, 1fr); }

.reactions { display: flex; gap: 6px; flex-wrap: wrap; margin: 8px 0; }
.reactions form { margin: 0; }
.chip {
  font: 15px/1 var(--font); min-height: 32px; padding: 4px 10px; cursor: pointer; color: var(--ink);
  background: var(--paper); border: 1px solid var(--win-lo); border-radius: 999px;
}
.chip-empty { opacity: .55; filter: grayscale(.6); }
.chip-empty:hover { opacity: 1; filter: none; }
.chip-on { background: var(--chip-on); border-color: var(--accent); }
.chip:active { transform: scale(.94); }

.comments summary { cursor: pointer; font-size: 13px; color: var(--muted); padding: 4px 0; }
.comments ul { list-style: none; padding: 0; margin: 6px 0; display: grid; gap: 8px; }
.comment { display: flex; gap: 8px; align-items: flex-start; }
.bubble { background: var(--paper); border: 1px solid var(--win-lo); border-radius: 10px; padding: 6px 10px; min-width: 0; }
.comment-author { font-weight: bold; text-decoration: none; margin-right: 4px; }
.comment-body { white-space: pre-wrap; overflow-wrap: anywhere; }
.bubble time { display: block; font-size: 11px; color: var(--muted); }
.comment-form { display: flex; gap: 6px; }
.comment-form input { flex: 1; padding: 6px 8px; }

.more { text-align: center; }

/* --- side ------------------------------------------------------------------- */

.side-me { display: flex; gap: 10px; align-items: center; }
.mood { margin: 2px 0; font-size: 13px; }
.plain { list-style: none; padding: 0; margin: 0 0 10px; display: grid; gap: 4px; }

/* --- profile ---------------------------------------------------------------- */

.profile-card { text-align: center; }
.profile-card .avatar { width: 160px; height: 160px; }
.profile-card .avatar-blank { --s: 160px; }
.profile-card h1 { font: italic 800 24px/1.1 var(--display); margin: 10px 0 0; }
.handle { margin: 0; color: var(--muted); }
.about { text-align: left; background: var(--paper); border: 1px dashed var(--win-lo); padding: 8px 10px; margin: 10px 0; }
.about h2 { margin: 0 0 4px; font-size: 13px; text-transform: uppercase; color: var(--accent); }
.about p { margin: 0; white-space: pre-wrap; }
.since { font-size: 12px; color: var(--muted); }
.counter { display: inline-flex; align-items: center; gap: 2px; margin: 4px 0 12px; font-size: 12px; }
.counter span { margin-right: 4px; }
.counter b {
  display: inline-block; width: 16px; padding: 2px 0;
  font: bold 15px/1 var(--mono); color: #7cff6b; background: #000;
  border: 1px solid #444; border-radius: 2px; text-shadow: 0 0 4px #7cff6b;
}
.mini-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px; }
.mini-grid .photo { aspect-ratio: 1; display: block; }
.mini-grid img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* --- album ------------------------------------------------------------------ */

.album { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 18px; padding: 4px; }
.polaroid {
  margin: 0; padding: 8px 8px 0; background: #fff; color: #222;
  box-shadow: 2px 3px 8px rgb(0 0 0 / .3); transform: rotate(var(--tilt));
  transition: transform .15s;
}
.polaroid:hover { transform: rotate(0) scale(1.04); z-index: 1; }
.polaroid .photo { display: block; aspect-ratio: 1; }
.polaroid img { width: 100%; height: 100%; object-fit: cover; display: block; }
.polaroid figcaption { font: 13px/1.3 "Comic Sans MS", "Chalkboard SE", "Marker Felt", var(--font); padding: 8px 2px 10px; text-align: center; }
.polaroid figcaption a { color: #222; }

/* --- people ----------------------------------------------------------------- */

.people { display: grid; grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); gap: 12px; }
.person {
  display: grid; justify-items: center; gap: 4px; padding: 10px; text-align: center; text-decoration: none; color: var(--ink);
  background: var(--paper); border: 1px solid var(--win-lo); border-radius: 4px;
}
.person:hover { border-color: var(--accent); }
.person .avatar { width: 72px; height: 72px; }
.person small { color: var(--muted); }

/* --- circles & admin -------------------------------------------------------- */

.rename { display: grid; gap: 4px; font-weight: bold; margin-bottom: 10px; }
.checklist { border: 1px solid var(--win-lo); border-radius: 3px; margin: 0 0 12px; display: grid; gap: 6px;
             grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); }
.checklist legend { font-weight: bold; padding: 0 4px; }
.check { display: flex; align-items: center; gap: 8px; padding: 4px; cursor: pointer; }
.avatar-form { display: flex; align-items: center; gap: 16px; }
.avatar-form .avatar { width: 96px; height: 96px; }

.invites { list-style: none; padding: 0; margin: 14px 0 0; display: grid; gap: 8px; }
.invites li { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; padding: 8px; background: var(--paper); border: 1px solid var(--win-lo); }
.invites li.used, .invites li.expired { opacity: .65; }
.invite-note { font-weight: bold; min-width: 90px; }
.invite-link { flex: 1 1 220px; width: auto; font: 13px var(--mono); padding: 4px 6px; }
.invites form { margin: 0; }

/* --- lightbox --------------------------------------------------------------- */

.lightbox { border: 0; padding: 0; background: transparent; max-width: 100vw; max-height: 100vh; width: 100vw; height: 100vh; }
.lightbox::backdrop { background: rgb(0 0 0 / .88); }
.lightbox[open] { display: grid; place-items: center; }
.lightbox img { max-width: 94vw; max-height: 88vh; border: 6px solid #fff; box-shadow: 0 6px 30px #000; }
.lightbox button {
  position: fixed; background: rgb(255 255 255 / .9); border: 2px solid #000; color: #000;
  font: bold 28px/1 var(--font); width: 48px; height: 48px; border-radius: 50%; cursor: pointer;
}
.lightbox-close { top: 16px; right: 16px; }
.lightbox-prev { left: 12px; top: 50%; }
.lightbox-next { right: 12px; top: 50%; }

/* --- footer ----------------------------------------------------------------- */

.footer { text-align: center; color: #fff; font-size: 12px; padding: 24px 16px 40px; text-shadow: 1px 1px 0 rgb(0 0 0 / .4); }
.footer p { margin: 0 0 8px; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
  .ticker-copy[aria-hidden] { display: none; }
}

.invite-cta { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin: 0 0 12px; }
.banner-invite { margin-left: 8px; padding: 1px 8px; border-radius: 10px; background: #a3260b; color: #fff; text-decoration: none; white-space: nowrap; }
.banner-invite:hover, .banner-invite:focus-visible { background: #7d1c07; }
.invite-box-btn { display: block; text-align: center; }
.post-video { display: block; width: 100%; height: auto; max-height: 75vh; background: #000; border: 2px solid var(--win-dk); margin: 0 0 10px; }
.video-note { margin: 0 0 10px; padding: 10px 12px; background: #111; color: #9fe8a0; font-family: var(--mono, monospace); border: 1px dashed #3a6; }
.preview-video { display: flex; align-items: center; gap: 6px; padding: 6px 8px; background: #111; color: #9fe8a0; font-size: 13px; width: auto; height: auto; }

/* Fake banner ads (ADR 0007): a 468x60-ish banner, as garish as 1999 allowed. */
.fake-ad { position: relative; display: grid; grid-template-columns: 1fr auto; grid-template-areas: "head button" "pitch button" "fine fine";
  gap: 2px 12px; align-items: center; max-width: 728px; margin: 10px auto 0; padding: 10px 14px 6px; border: 3px outset #ddd;
  font-family: Impact, "Arial Black", sans-serif; color: #fff; text-shadow: 2px 2px 0 #000; overflow: hidden; }
.fake-ad-label { position: absolute; top: 1px; left: 4px; font: 9px/1 Arial, sans-serif; letter-spacing: 1px; text-shadow: none; opacity: .75; }
.fake-ad-headline { grid-area: head; font-size: 22px; letter-spacing: .5px; animation: fake-ad-pulse 1s steps(2) infinite; }
.fake-ad-pitch { grid-area: pitch; font: bold 14px/1.25 "Comic Sans MS", "Chalkboard SE", cursive; }
.fake-ad-button { grid-area: button; padding: 8px 12px; background: linear-gradient(#fff36b, #ffb400); color: #a00; text-shadow: none;
  border: 3px outset #ffe680; font-size: 15px; white-space: nowrap; animation: fake-ad-blink 1.2s steps(2) infinite; }
.fake-ad-fine { grid-area: fine; justify-self: end; font: 9px/1 Arial, sans-serif; text-shadow: none; opacity: .7; }
.fake-ad-lava { background: repeating-linear-gradient(45deg, #ff0040 0 18px, #ff7a00 18px 36px); }
.fake-ad-toxic { background: radial-gradient(circle at 20% 50%, #c6ff00, #00a83a 60%, #003d14); }
.fake-ad-cyber { background: linear-gradient(90deg, #000 0, #00e5ff 50%, #ff00d4 100%); }
.fake-ad-sunset { background: linear-gradient(#ff4ecd, #ff9a3c 55%, #ffe14d); }
.fake-ad-mahogany { background: repeating-linear-gradient(100deg, #5a1e0e 0 6px, #7b2d14 6px 14px, #4a170a 14px 18px); }
.fake-ad-y2k { background: linear-gradient(135deg, #2a00ff, #00c3ff 40%, #c0c0c0 41% 45%, #7a00ff); }
@keyframes fake-ad-blink { 50% { filter: invert(1); } }
@keyframes fake-ad-pulse { 50% { color: #fffb00; } }
@media (prefers-reduced-motion: reduce) { .fake-ad-headline, .fake-ad-button { animation: none; } }
@media (max-width: 520px) {
  .fake-ad { grid-template-columns: 1fr; grid-template-areas: "head" "pitch" "button" "fine"; margin: 8px 8px 0; }
  .fake-ad-button { justify-self: start; }
}

/* Emoji picker and the "+" for more reactions */
.js-only { display: none; }
.js .js-only { display: inline-block; }
.emoji-picker, .more-reactions { position: relative; }
.emoji-picker > summary, .more-reactions > summary { list-style: none; cursor: pointer; }
.emoji-picker > summary::-webkit-details-marker, .more-reactions > summary::-webkit-details-marker { display: none; }
.emoji-picker-btn { padding-inline: 10px; }
.emoji-grid, .more-reactions-grid { position: absolute; z-index: 20; top: calc(100% + 6px); left: 0; display: grid;
  grid-template-columns: repeat(8, 36px); gap: 2px; padding: 6px; background: var(--win); border: 2px solid; border-color: var(--win-hi) var(--win-dk) var(--win-dk) var(--win-hi);
  box-shadow: 4px 4px 0 rgb(0 0 0 / .35); }
.more-reactions-grid { grid-template-columns: repeat(6, auto); gap: 4px; }
.emoji-grid button { width: 36px; height: 36px; font-size: 22px; line-height: 1; border: 0; background: none; cursor: pointer; border-radius: 4px; }
.emoji-grid button:hover, .emoji-grid button:focus-visible { background: var(--chip-on); }
.comment-form .emoji-grid { left: auto; right: 0; }
@media (max-width: 520px) { .emoji-grid { grid-template-columns: repeat(6, 36px); } }

/* Content rules (ADR 0009) */
.post-delete { display: flex; gap: 10px; }
.comment-action { display: inline; margin-left: 6px; font-size: 11px; }
.profile-actions { display: flex; gap: 14px; justify-content: center; margin-top: 8px; font-size: 13px; }
.report { border-bottom: 1px dashed var(--line, #999); padding: 8px 0; }
.report blockquote { margin: 6px 0; padding: 6px 10px; background: var(--input-bg, rgba(0,0,0,.05)); white-space: pre-wrap; }
.inline-row { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
form.inline { display: inline; margin-left: 6px; }
.terms li { margin: 6px 0; }
