/* The event programme: existing content, original type family and editable inks.
   No image treatment lives here; the background retains its own quiet VHS. */

#app .community-page {
  position:relative;
  isolation:isolate;
  background-image:none;
  border-color:var(--poster-ink);
}

/* The grain is under every content surface, including the clean photographs. */
#app .community-page::before {
  content:"";
  position:absolute;
  inset:0;
  z-index:-1;
  pointer-events:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='grain'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.78' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23000' filter='url(%23grain)' d='M0 0h180v180H0z'/%3E%3C/svg%3E");
  opacity:.025;
}

#app .community-page .hub-masthead {
  align-items:center;
  padding-bottom:12px;
  border-bottom:3px double var(--poster-ink);
  letter-spacing:.09em;
}

#app .community-page .hub-masthead>span:first-child {
  font-size:clamp(17px,1.7vw,22px);
  font-weight:900;
  letter-spacing:-.025em;
}

#app .community-page .hub-footer {
  gap:12px;
  padding-top:14px;
  border-top:3px double var(--poster-ink);
}

/* Cover story. The approved title and story keep their original DOM keys. */
#app .home-view .hub-heading {
  align-items:flex-end;
  gap:24px;
  margin:22px 0 20px;
}

#app .home-view .hub-heading>div:first-child {
  flex:1;
  display:block;
}

#app .home-view .hub-heading h1 {
  width:auto;
  font-size:clamp(48px,5.35vw,74px);
  font-weight:900;
  line-height:.94;
  letter-spacing:-.045em;
}

#app .home-view .hub-heading p {
  max-width:54ch;
  margin-top:12px;
  line-height:1.45;
}

#app .home-view .hub-tools {
  flex:0 0 auto;
  align-self:flex-end;
  padding-bottom:2px;
}

#app .home-view .dispatch-dateline {
  gap:20px;
  padding:10px 0;
  margin:0 0 24px;
  border-top:1px solid var(--poster-ink);
  border-bottom:1px solid var(--poster-ink);
  font-size:10px;
  font-weight:800;
  letter-spacing:.11em;
}

/* Independent columns prevent an empty feed from making the cover one flat row. */
#app .home-view .dispatch-layout {
  display:grid;
  grid-template-columns:minmax(0,1.75fr) minmax(0,1fr);
  gap:28px;
  align-items:start;
}

#app .home-view .dispatch-layout>.dispatch-main,
#app .home-view .dispatch-layout>.dispatch-side {
  display:grid;
  grid-template-columns:minmax(0,1fr);
  align-content:start;
  gap:28px;
  min-width:0;
}

#app .home-view .dispatch-layout :is(.dispatch-lead,.dispatch-updates,.dispatch-sidebar,.dispatch-archive) {
  grid-area:auto;
  min-width:0;
}

#app .home-view .hub-hero.dispatch-lead {
  display:block;
  margin:0;
  border:1px solid var(--poster-ink);
  background:var(--poster-paper-deep);
  box-shadow:3px 3px 0 color-mix(in srgb,var(--poster-ink) 18%,transparent);
}

#app .home-view .dispatch-lead .hub-hero-photo {
  aspect-ratio:16/8.6;
  min-height:0;
  border:0;
  border-bottom:1px solid var(--poster-ink);
}

#app .home-view .dispatch-lead .hub-tape {
  padding:10px 14px;
  font-size:9px;
  letter-spacing:.08em;
}

#app .home-view .dispatch-lead .hub-hero-copy {
  display:grid;
  grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);
  gap:12px 24px;
  padding:24px;
  background:var(--poster-paper-deep);
}

#app .home-view .dispatch-lead .hub-hero-copy>.kicker {
  grid-column:1/-1;
  margin:0;
  padding-bottom:10px;
  border-bottom:1px solid color-mix(in srgb,var(--poster-ink) 35%,transparent);
  font-size:10px;
  font-weight:800;
}

#app .home-view .dispatch-lead .hub-hero-copy h2 {
  grid-column:1;
  grid-row:2/4;
  align-self:start;
  margin:0;
  font-size:clamp(36px,3.65vw,54px);
  line-height:.99;
  font-weight:900;
  letter-spacing:-.04em;
  text-transform:none;
  text-wrap:balance;
}

#app .home-view .dispatch-lead .hub-hero-copy p {
  grid-column:2;
  margin:0;
  color:var(--poster-ink);
  font-size:16px;
  line-height:1.55;
}

#app .home-view .dispatch-lead .hub-hero-actions {
  grid-column:2;
  align-self:end;
}

#app .home-view .dispatch-lead .hub-hero-actions .command {
  margin:4px 0 0;
  max-width:100%;
  gap:14px;
}

#app .home-view .dispatch-sidebar { display:grid; gap:24px; }

#app .home-view .dispatch-playtest {
  padding:22px;
  border:1px solid var(--poster-ink);
  border-top:6px solid var(--poster-ink);
  background:var(--poster-red);
  box-shadow:3px 3px 0 color-mix(in srgb,var(--poster-ink) 18%,transparent);
}

#app .home-view .dispatch-playtest>.dispatch-label { font-size:10px; letter-spacing:.1em; }
#app .home-view .dispatch-playtest h2 { font-size:clamp(30px,2.8vw,38px); line-height:1; margin:12px 0 18px; }
#app .home-view .dispatch-playtest .hub-empty { padding:0; margin:0 0 18px; }
#app .home-view .dispatch-playtest .hub-empty strong { font-size:22px; line-height:1.1; }
#app .home-view .dispatch-playtest .hub-empty p { margin-top:10px; line-height:1.5; }

#app .home-view .dispatch-note {
  position:relative;
  padding:22px;
  border:1px solid var(--poster-ink);
  border-top:4px double var(--poster-ink);
  background:color-mix(in srgb,var(--poster-paper) 70%,var(--poster-paper-deep));
}

#app .home-view .dispatch-note>.dispatch-label { font-size:10px; letter-spacing:.1em; }
#app .home-view .dispatch-note h2 { margin:14px 0; font-size:30px; line-height:1.02; text-transform:none; }
#app .home-view .dispatch-note p { margin:0 0 16px; color:var(--poster-ink); font-size:16px; line-height:1.6; }
#app .home-view .dispatch-note time { display:block; margin:14px 0 0; color:var(--poster-muted); font-size:11px; font-weight:700; }
#app .home-view .dispatch-note .command { width:auto; min-height:36px; padding:8px 12px; font-size:12px; }

#app .home-view .dispatch-updates {
  padding:22px;
  border:1px solid var(--poster-ink);
  border-top:5px solid var(--poster-ink);
  background:color-mix(in srgb,var(--poster-paper) 74%,var(--site-inverse));
}

#app .home-view .dispatch-updates .hub-section-title { gap:18px; padding-bottom:16px; }
#app .home-view .dispatch-updates .dispatch-label { font-size:10px; }
#app .home-view .dispatch-updates h2 { font-size:34px; margin:7px 0 0; line-height:1; text-transform:none; }
#app .home-view .dispatch-updates>.hub-empty { display:block; border-top:1px solid var(--poster-ink); padding-top:18px; }
#app .home-view .dispatch-updates>.hub-empty strong { font-size:23px; }
#app .home-view .dispatch-updates>.hub-empty p { margin-top:10px; line-height:1.55; }
#app .home-view .dispatch-updates>.hub-card { padding:20px 0; margin:0; border:0; border-top:1px solid var(--poster-ink); background:transparent; }
#app .home-view .dispatch-updates>.hub-card h3 { font-size:28px; line-height:1.08; }
#app .home-view .dispatch-updates .hub-log-entry>time { display:flex; gap:6px; align-items:baseline; margin:14px 0 10px; color:var(--poster-muted); font-size:12px; }
#app .home-view .dispatch-updates .hub-log-entry>time strong { font-size:19px; color:var(--poster-ink); }
#app .home-view .dispatch-updates .hub-log-entry>.hub-card { margin:0 0 16px; padding:20px 0; border:0; border-top:2px solid var(--poster-ink); background:transparent; box-shadow:none; }
#app .home-view .dispatch-updates .hub-log-entry .hub-card-meta>time { display:none; }
#app .home-view .dispatch-playtest .hub-card-actions { display:grid; gap:8px; margin-top:8px; }
#app .home-view .dispatch-note>.command { margin:0 8px 8px 0; }

#app .home-view .hub-photo-note.dispatch-archive { display:block; border:1px solid var(--poster-ink); }
#app .home-view .dispatch-archive .hub-photo-note-media { min-height:0; aspect-ratio:16/10; }
#app .home-view .dispatch-archive figcaption { padding:22px; }
#app .home-view .dispatch-archive h2 { font-size:38px; }
#app .home-view .dispatch-archive p { margin-bottom:18px; }

/* The update log reads in dated entries rather than a wall of identical cards. */
#app .improvements-view .hub-workbench { grid-template-columns:minmax(0,1fr) 230px; gap:30px; }
#app .improvements-view .hub-log { columns:auto; margin:0; }
#app .improvements-view .hub-log-entry { display:grid; grid-template-columns:70px minmax(0,1fr); gap:20px; align-items:start; padding-bottom:26px; }
#app .improvements-view .hub-log-entry>time { display:block; padding:14px 8px 0 0; color:var(--poster-muted); font-size:12px; line-height:1.45; font-weight:800; overflow-wrap:anywhere; }
#app .improvements-view .hub-log-entry>time strong { display:block; color:var(--poster-ink); font-size:32px; line-height:1; margin-bottom:6px; }
#app .improvements-view .hub-log-entry>time span { display:block; }
#app .improvements-view .hub-log-entry>.hub-card { min-width:0; margin:0; padding:24px; border:1px solid var(--poster-ink); border-top:4px solid var(--poster-ink); background:var(--poster-paper-deep); box-shadow:2px 2px 0 color-mix(in srgb,var(--poster-ink) 12%,transparent); }
#app .improvements-view .hub-log-entry>.hub-card h3 { font-size:32px; line-height:1.05; }
#app .improvements-view .hub-log-entry>.hub-card .hub-card-meta>time { display:none; }
#app .improvements-view .hub-log-guide { border:1px solid var(--poster-ink); border-top:6px solid var(--poster-red); padding:20px; }
#app .improvements-view .hub-log-guide .hub-status-key { margin:14px 0 18px; }
#app .improvements-view .hub-log-guide .hub-status-key strong { font-size:20px; line-height:1.1; margin-bottom:6px; }

/* Playtests are mission tickets; their dates and signup action lead the card. */
#app .hub-playtest-ticket { position:relative; border:1px solid var(--poster-ink); border-left:6px solid var(--poster-red); background:var(--poster-paper); }
#app .hub-playtest-ticket .hub-card-meta { padding-bottom:12px; border-bottom:1px dashed color-mix(in srgb,var(--poster-ink) 45%,transparent); }
#app .hub-playtest-ticket .hub-test-time { gap:9px; padding:18px 0; margin:20px 0; border-top:2px solid var(--poster-ink); border-bottom:1px dashed var(--poster-ink); }
#app .hub-playtest-ticket .hub-test-time>strong { font-size:22px; font-weight:900; line-height:1.15; }
#app .hub-playtest-ticket .hub-test-time>span { font-size:14px; }
#app .hub-playtest-ticket .hub-card-bottom { margin-top:18px; }
#app .home-view .dispatch-playtest .hub-playtest-ticket { border-left:0; background:transparent; }
#app .home-view .dispatch-playtest .hub-playtest-ticket .hub-test-time { padding:12px 0; margin:14px 0; }
#app .home-view .dispatch-playtest .hub-playtest-ticket .hub-test-time>strong { font-size:19px; }

/* Quiet print stamps: no blinking, tilted labels or decorative fake metadata. */
#app .hub-stamp { display:inline-flex; align-items:center; gap:6px; padding:4px 7px; border:1px solid currentColor; color:var(--poster-ink); font-size:10px; font-weight:900; line-height:1.2; letter-spacing:.07em; text-transform:uppercase; vertical-align:middle; }
#app .hub-unread { display:inline-flex; align-items:center; gap:6px; padding:4px 7px; border:1px solid var(--poster-ink); background:var(--poster-red); color:var(--poster-ink); font-size:10px; font-weight:900; line-height:1.2; letter-spacing:.05em; text-transform:uppercase; vertical-align:middle; }

/* A separate approval tray, kept compact beside the private work board. */
#app .hub-review-queue { margin:28px 0; border:1px solid var(--poster-ink); background:var(--poster-paper-deep); box-shadow:3px 3px 0 color-mix(in srgb,var(--poster-ink) 16%,transparent); }
#app .hub-review-heading { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:16px; padding:20px 22px; border-bottom:1px solid var(--poster-ink); background:var(--poster-ink); color:var(--site-inverse); }
#app .hub-review-heading h2 { margin:0; color:var(--site-inverse); font-size:30px; line-height:1.05; }
#app .hub-review-heading p { margin:6px 0 0; color:var(--site-inverse); font-size:14px; line-height:1.4; }
#app .hub-review-heading .dispatch-label { margin-bottom:8px; color:var(--poster-red); font-size:10px; }
#app .hub-review-heading .hub-stamp { color:var(--poster-red); }
#app .hub-review-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:18px; padding:22px; }
#app .hub-review-grid>.hub-card { min-width:0; margin:0; background:var(--poster-paper); border:1px solid var(--poster-ink); }
#app .hub-review-grid .hub-task-open { min-height:180px; }
#app .hub-review-group { border-bottom:1px solid color-mix(in srgb,var(--poster-ink) 25%,transparent); }
#app .hub-review-group>summary { padding:18px 22px; cursor:pointer; font-size:20px; font-weight:800; }
#app .hub-review-group>summary>span { display:inline-block; min-width:24px; margin-left:10px; padding:2px 6px; background:var(--poster-ink); color:var(--site-inverse); font-size:12px; text-align:center; }
#app .hub-review-group .hub-review-grid { padding-top:0; }
.hub-review-actions { margin-top:24px; padding-top:20px; border-top:2px solid var(--poster-ink); }
.hub-review-actions form { margin-top:20px; }
.hub-review-actions textarea { display:block; width:100%; margin:8px 0 12px; }
.hub-test-joining,.hub-playtest-results { margin:20px 0; padding-top:16px; border-top:1px dashed var(--poster-ink); }
.hub-test-joining h4,.hub-playtest-results h4 { margin:8px 0; font-size:22px; }
#app .hub-review-grid>.hub-empty { grid-column:1/-1; margin:0; padding:16px 0; border:0; background:transparent; }
#app .hub-review-status { display:inline-block; padding:4px 7px; border:1px solid color-mix(in srgb,var(--poster-ink) 45%,transparent); background:var(--poster-red); color:var(--poster-ink); font-size:10px; font-weight:800; line-height:1.3; text-transform:uppercase; letter-spacing:.04em; }

/* One press rhythm across the programme; theme and individual editor rules win. */
#app .community-page .command.command,
.hub-task-dialog .command {
  border-radius:0;
  transition:transform .14s ease,box-shadow .14s ease,background-color .16s ease;
}

#app .community-page :is(button,a):focus-visible {
  outline:3px solid var(--poster-muted);
  outline-offset:3px;
}

#app .hub-review-heading :is(button,a):focus-visible { outline-color:var(--site-inverse); }

#app .community-page .command.command:active:not(:disabled),
.hub-task-dialog .command:active:not(:disabled) {
  transform:translate(2px,2px)!important;
  box-shadow:none!important;
}

@media(max-width:1050px) {
  #app .home-view .dispatch-layout { grid-template-columns:minmax(0,1.5fr) minmax(0,1fr); gap:24px; }
  #app .home-view .dispatch-layout>.dispatch-main,#app .home-view .dispatch-layout>.dispatch-side { gap:24px; }
  #app .home-view .dispatch-lead .hub-hero-copy { grid-template-columns:minmax(0,1fr); gap:14px; padding:22px; }
  #app .home-view .dispatch-lead .hub-hero-copy :is(h2,p,.hub-hero-actions) { grid-column:1; grid-row:auto; }
  #app .home-view .dispatch-lead .hub-hero-copy h2 { font-size:44px; max-width:14ch; }
  #app .home-view .dispatch-playtest,#app .home-view .dispatch-note { padding:20px; }
  #app .improvements-view .hub-workbench { grid-template-columns:minmax(0,1fr) 210px; gap:22px; }
  #app .improvements-view .hub-log-entry { grid-template-columns:54px minmax(0,1fr); gap:14px; }
  #app .hub-review-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}

@media(max-width:760px) {
  #app .home-view .hub-heading { flex-direction:column; align-items:flex-start; gap:16px; }
  #app .home-view .hub-tools { align-self:flex-start; max-width:none; }
  #app .home-view .dispatch-layout { grid-template-columns:minmax(0,1fr); gap:24px; }
  #app .home-view .dispatch-layout>.dispatch-main,#app .home-view .dispatch-layout>.dispatch-side { display:contents; }
  #app .home-view .dispatch-layout :is(.dispatch-lead,.dispatch-updates,.dispatch-sidebar,.dispatch-archive) { grid-column:1; grid-row:auto; }
  #app .home-view .dispatch-lead { order:0; }
  #app .home-view .dispatch-sidebar { order:1; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; }
  #app .home-view .dispatch-updates { order:2; }
  #app .home-view .dispatch-archive { order:3; }
  #app .home-view .dispatch-lead .hub-hero-copy { grid-template-columns:minmax(0,1.1fr) minmax(0,1fr); gap:12px 22px; }
  #app .home-view .dispatch-lead .hub-hero-copy h2 { grid-column:1; grid-row:2/4; }
  #app .home-view .dispatch-lead .hub-hero-copy :is(p,.hub-hero-actions) { grid-column:2; }
  #app .home-view .dispatch-archive .hub-photo-note-media { aspect-ratio:16/8.6; }
  #app .improvements-view .hub-workbench { grid-template-columns:minmax(0,1fr); }
  #app .improvements-view .hub-log-guide .hub-status-key { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }
  #app .improvements-view .hub-log-guide .hub-status-key p { padding:0; border:0; }
}

@media(max-width:560px) {
  #app .home-view .hub-heading { margin:20px 0 18px; }
  #app .home-view .hub-heading h1 { font-size:clamp(46px,11.5vw,62px); }
  #app .home-view .hub-heading p { font-size:16px!important; }
  #app .home-view .dispatch-dateline { margin-bottom:20px; font-size:9px; }
  #app .home-view .dispatch-dateline>span:last-child { display:none; }
  #app .home-view .dispatch-lead .hub-hero-photo { aspect-ratio:16/10; }
  #app .home-view .dispatch-lead .hub-hero-copy { display:block; padding:20px; }
  #app .home-view .dispatch-lead .hub-hero-copy h2 { max-width:none; font-size:40px; margin:16px 0 14px; }
  #app .home-view .dispatch-lead .hub-hero-actions { margin-top:18px; }
  #app .home-view .dispatch-sidebar { grid-template-columns:minmax(0,1fr); }
  #app .home-view .dispatch-updates { padding:20px; }
  #app .home-view .dispatch-updates .hub-section-title { align-items:flex-start; }
  #app .home-view .dispatch-updates .hub-section-title .command { min-height:36px; padding:8px 10px; font-size:12px; }
  #app .improvements-view .hub-log-entry { grid-template-columns:minmax(0,1fr); gap:10px; padding-bottom:24px; }
  #app .improvements-view .hub-log-entry>time { display:flex; align-items:baseline; flex-wrap:wrap; gap:6px; padding:0; font-size:12px; }
  #app .improvements-view .hub-log-entry>time strong { display:inline; font-size:18px; margin:0; }
  #app .improvements-view .hub-log-entry>time span { display:inline; }
  #app .improvements-view .hub-log-entry>.hub-card { padding:20px; }
  #app .improvements-view .hub-log-entry>.hub-card h3 { font-size:28px; }
  #app .improvements-view .hub-log-guide .hub-status-key { gap:12px; }
  #app .improvements-view .hub-log-guide .hub-status-key strong { font-size:17px; }
  #app .hub-review-heading { padding:20px; }
  #app .hub-review-grid { grid-template-columns:minmax(0,1fr); padding:20px; }
  #app .hub-review-grid .hub-task-open { min-height:160px; }
}

@media(prefers-reduced-motion:reduce) {
  #app .community-page .command.command,.hub-task-dialog .command { transition:none; }
  #app .community-page .command.command:active:not(:disabled),.hub-task-dialog .command:active:not(:disabled) { transform:none!important; }
}
