@font-face {
  font-family: "UltimaOnline";
  src: url("ultima-online-border.ttf") format("truetype");
  font-weight: normal;
  font-style: normal;
}

:root {
  --ink: #201610;
  --paper: #ead7ad;
  --paper-light: #f6e9c8;
  --paper-dark: #b99862;
  --red: #8f241e;
  --red-bright: #c34a35;
  --gold: #c9a24f;
  --brown: #39241a;
  --night: #11151a;
  --night-soft: #1b232b;
  --line: rgba(53, 34, 23, 0.24);
  --shadow: 0 24px 60px rgba(0,0,0,.35);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  color: var(--paper-light);
  background:
    radial-gradient(circle at 15% 15%, rgba(167, 77, 49, .14), transparent 24rem),
    linear-gradient(180deg, #101419, #17120f 55%, #0e0d0c);
  font-family: Georgia, 'Times New Roman', serif;
  line-height: 1.55;
}

body::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  background-image: linear-gradient(rgba(255,255,255,.012) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.012) 1px, transparent 1px);
  background-size: 4px 4px;
  opacity: .45;
}

.noise {
  position: fixed;
  inset: 0;
  opacity: .08;
  pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.7'/%3E%3C/svg%3E");
  z-index: 20;
}

.shell { width: min(1180px, calc(100% - 40px)); margin: 0 auto; }
a { color: inherit; }

.site-header {
  position: sticky;
  top: 0;
  z-index: 30;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  padding: 14px max(24px, calc((100vw - 1180px)/2));
  background: rgba(14, 15, 15, .86);
  backdrop-filter: blur(14px);
  border-bottom: 1px solid rgba(234, 215, 173, .12);
}

.brand { display: flex; align-items: center; gap: 12px; text-decoration: none; }
.brand-mark {
  display: grid; place-items: center;
  width: 44px; height: 44px;
  border-radius: 50%;
  color: var(--ink);
  background: var(--paper);
  border: 3px double var(--brown);
  font-weight: 900;
  transform: rotate(-6deg);
}
.brand strong { display: block; font-size: 1.05rem; letter-spacing: .03em; }
.brand small { display: block; color: #bfae8c; font-size: .72rem; }
nav { display: flex; gap: 24px; }
nav a { text-decoration: none; color: #d7c8ab; font-size: .92rem; }
nav a:hover { color: white; }

.hero {
  min-height: 720px;
  display: grid;
  grid-template-columns: 1.02fr .98fr;
  align-items: center;
  gap: 54px;
  padding: 90px 0 70px;
}

.eyebrow {
  margin: 0 0 12px;
  color: #d6aa56;
  text-transform: uppercase;
  letter-spacing: .16em;
  font: 700 .76rem/1.2 Arial, sans-serif;
}

h1, h2, h3 { line-height: 1.08; margin-top: 0; }
h1 { font-size: clamp(3.3rem, 7vw, 6.6rem); letter-spacing: -.055em; margin-bottom: 22px; }
h1 span { display: inline-block; color: #d5bb84; font-size: .43em; letter-spacing: -.02em; max-width: 720px; }
h2 { font-size: clamp(2.4rem, 4vw, 4.4rem); letter-spacing: -.04em; }
.lede { max-width: 650px; font-size: 1.2rem; color: #c8bda9; }
.hero-actions { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 30px; }

.button {
  appearance: none;
  border: 0;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 48px;
  padding: 0 20px;
  border-radius: 6px;
  text-decoration: none;
  text-transform: uppercase;
  letter-spacing: .08em;
  font: 800 .78rem Arial, sans-serif;
  transition: transform .18s ease, filter .18s ease, background .18s ease;
}
.button:hover { transform: translateY(-2px); filter: brightness(1.07); }
.button.primary { color: #fff7e4; background: linear-gradient(#b53a2c, #7d1f1b); border: 1px solid #d46a4e; box-shadow: inset 0 1px rgba(255,255,255,.18), 0 8px 22px rgba(90, 12, 6, .34); }
.button.secondary { color: var(--paper-light); background: rgba(255,255,255,.045); border: 1px solid rgba(234,215,173,.3); }
.button.ghost { color: #4d3725; background: transparent; border: 1px solid rgba(64, 42, 27, .3); }
.button.full { width: 100%; }

.bank-scene {
  position: relative;
  min-height: 500px;
  overflow: hidden;
  border: 1px solid rgba(235, 220, 187, .18);
  border-radius: 18px;
  background: linear-gradient(#1a2732 0 54%, #2c241d 54% 100%);
  box-shadow: var(--shadow);
}
.bank-scene::after {
  content: "";
  position: absolute; inset: 54% 0 0;
  background: repeating-linear-gradient(12deg, rgba(255,255,255,.025) 0 3px, transparent 3px 12px), linear-gradient(#33271e, #17120f);
}
.moon { position: absolute; width: 110px; height: 110px; right: 42px; top: 38px; border-radius: 50%; background: #efe1b6; box-shadow: 0 0 40px rgba(239,225,182,.28); }
.bank-building { position: absolute; z-index: 2; left: 13%; right: 10%; bottom: 31%; height: 245px; background: linear-gradient(90deg, #4a473f, #6c675c 48%, #3e3b35); clip-path: polygon(8% 20%, 50% 0, 92% 20%, 92% 100%, 8% 100%); }
.bank-sign { position: absolute; top: 58px; left: 50%; transform: translateX(-50%); padding: 8px 14px; color: #24170f; background: #d5b56d; border: 3px double #3a271b; font-weight: 800; font-size: .84rem; white-space: nowrap; }
.columns { position: absolute; inset: 105px 12% 0; display: flex; justify-content: space-between; }
.columns i { width: 17%; background: repeating-linear-gradient(90deg, rgba(255,255,255,.08) 0 3px, transparent 3px 7px), #8e897c; border: 4px solid #58544d; }
.bank-door { position: absolute; z-index: 3; width: 78px; height: 110px; left: 50%; bottom: 0; transform: translateX(-50%); background: #1a1410; border: 6px solid #69625a; border-bottom: 0; border-radius: 40px 40px 0 0; }

.crier { position: absolute; z-index: 6; left: 13%; bottom: 8%; width: 130px; height: 230px; filter: drop-shadow(0 12px 12px rgba(0,0,0,.45)); }
.crier .head { position: absolute; left: 45px; top: 48px; width: 45px; height: 50px; background: #c5976a; border-radius: 48% 48% 43% 43%; }
.crier .hat { position: absolute; z-index: 2; left: 26px; top: 30px; width: 82px; height: 28px; border-radius: 50%; background: #75271f; box-shadow: inset 0 -8px #4c1815; }
.crier .plume { position: absolute; z-index: 3; left: 76px; top: 2px; width: 20px; height: 54px; background: #d7b45f; border-radius: 100% 0 100% 0; transform: rotate(22deg); }
.crier .body { position: absolute; left: 26px; top: 91px; width: 88px; height: 112px; background: linear-gradient(90deg, #6d201c, #ad3f2e 46%, #5d1b18); clip-path: polygon(15% 0, 85% 0, 100% 100%, 0 100%); }
.crier .body::after { content:""; position:absolute; left: 42px; top:0; bottom:0; width:6px; background:#d2ae59; }
.crier .arm { position: absolute; left: 94px; top: 97px; width: 72px; height: 21px; transform: rotate(-22deg); transform-origin: left center; background: #8a2e24; border-radius: 20px; }
.crier .scroll { position: absolute; left: 139px; top: 62px; width: 44px; height: 72px; background: #e6d4a5; border: 5px solid #98733c; border-width: 5px 0; transform: rotate(-10deg); }

.speech { position: absolute; z-index: 7; right: 5%; top: 8%; width: 53%; padding: 20px 22px; color: #21160f; background: var(--paper-light); border: 4px double #5f432a; border-radius: 12px; box-shadow: 0 12px 30px rgba(0,0,0,.3); transform: rotate(1deg); }
.speech::after { content:""; position:absolute; left: 22px; bottom: -28px; border: 15px solid transparent; border-top-color: #5f432a; transform: rotate(18deg); }
.speech strong { display: block; margin-bottom: 5px; color: var(--red); text-transform: uppercase; font: 900 .84rem Arial,sans-serif; letter-spacing: .14em; }
.speech span { font-size: 1.15rem; font-weight: 700; }
.news-crate { position:absolute; z-index:7; right: 8%; bottom: 8%; width: 142px; min-height: 105px; padding: 14px; display:flex; justify-content:space-between; gap:8px; color:#291b12; background: #9a653b; border: 4px solid #432b1c; box-shadow: inset 0 0 0 2px rgba(255,255,255,.1); transform: rotate(-2deg); }
.news-crate span { font-size: 1.08rem; font-weight: 900; line-height: .95; }
.news-crate small { font: 800 .63rem/1.2 Arial,sans-serif; text-align:right; }

.ticker { display: grid; grid-template-columns: auto 1fr; align-items: center; background: #0a0b0c; border-block: 1px solid rgba(255,255,255,.09); overflow: hidden; }
.ticker > span { position: relative; z-index: 2; padding: 15px 22px; background: var(--red); font: 900 .8rem Arial,sans-serif; letter-spacing: .15em; }
.ticker-window { overflow: hidden; }
.ticker p { width:max-content; margin:0; padding-left:100%; animation: ticker 20s linear infinite; color:#d7c9ae; white-space:nowrap; }
@keyframes ticker { to { transform: translateX(-100%); } }

.reports { padding: 95px 0; }
.section-heading { display:grid; grid-template-columns: 1fr .8fr; gap:40px; align-items:end; margin-bottom:34px; }
.section-heading p:last-child { color:#bfb29e; font-size:1.05rem; }
.report-grid { display:grid; grid-template-columns: 1.2fr 1fr 1fr; gap:18px; }
.report-card { position:relative; min-height:330px; padding:30px; display:flex; flex-direction:column; color:var(--ink); background: linear-gradient(145deg, var(--paper-light), #d7bd86); border:1px solid #f5e3bc; box-shadow: 0 14px 30px rgba(0,0,0,.22); transform: rotate(.35deg); }
.report-card:nth-child(2) { transform:rotate(-.5deg); }
.report-card h3 { font-size:2rem; margin-bottom:16px; }
.report-card p { color:#564331; }
.report-card footer { display:flex; justify-content:space-between; gap:12px; margin-top:auto; padding-top:20px; border-top:1px solid var(--line); color:#6c5540; font:700 .7rem Arial,sans-serif; text-transform:uppercase; letter-spacing:.06em; }
.category { margin:0 0 14px; color:var(--red)!important; font:900 .72rem Arial,sans-serif; text-transform:uppercase; letter-spacing:.13em; }
.stamp { position:absolute; right:16px; top:16px; padding:5px 8px; color:var(--red); border:3px solid currentColor; font:900 .67rem Arial,sans-serif; transform:rotate(8deg); opacity:.68; }

.generator-wrap { padding:100px 0; color:var(--ink); background: linear-gradient(180deg, #d9c18b, #b99762); border-block:6px double #5b3f28; }
.generator-layout { display:grid; grid-template-columns:.9fr 1.1fr; gap:70px; align-items:start; }
.generator-copy p:not(.eyebrow) { color:#5d4734; font-size:1.08rem; }
.check-list { padding:0; margin:28px 0 0; list-style:none; }
.check-list li { position:relative; margin:10px 0; padding-left:26px; }
.check-list li::before { content:"✦"; position:absolute; left:0; color:var(--red); }
.generator-panel { padding:26px; border:4px double #5b3f28; background:rgba(255,248,226,.65); box-shadow:0 14px 30px rgba(54,34,21,.18); }
.generator-panel label { display:block; margin-bottom:17px; color:#3d2b1d; font:800 .74rem Arial,sans-serif; text-transform:uppercase; letter-spacing:.08em; }
.generator-panel input,.generator-panel select { width:100%; margin-top:8px; padding:13px 14px; color:#2c1d13; background:#f8edcf; border:1px solid rgba(70,47,31,.35); border-radius:3px; font:1rem Georgia,serif; outline:none; }
.generator-panel input:focus,.generator-panel select:focus { border-color:var(--red); box-shadow:0 0 0 3px rgba(143,36,30,.12); }
.result-card-wrap { margin-top:60px; }
.generated-report { width:min(850px,100%); margin:0 auto; color:#21160f; background:var(--paper-light); border:7px double #563b26; box-shadow:0 20px 40px rgba(59,35,19,.28); }
.generated-topline,.generated-footer { display:flex; justify-content:space-between; gap:20px; padding:12px 18px; color:#f9e8c7; background:#342219; font:800 .72rem Arial,sans-serif; text-transform:uppercase; letter-spacing:.09em; }
.generated-body { padding:38px 42px 48px; text-align:center; background:radial-gradient(circle at 50% 0, rgba(125,78,39,.11), transparent 56%), repeating-linear-gradient(0deg, rgba(75,48,31,.025) 0 1px, transparent 1px 4px); }
.generated-body .breaking { color:var(--red); font:900 .78rem Arial,sans-serif; letter-spacing:.18em; }
.generated-body h3 { max-width:690px; margin:18px auto; font-size:clamp(2.2rem,4.5vw,4.4rem); }
.generated-body p:last-child { max-width:650px; margin:0 auto; color:#5b4634; font-size:1.08rem; }
.result-actions { display:flex; justify-content:center; gap:12px; flex-wrap:wrap; margin-top:22px; }

.voting { display:grid; grid-template-columns:.9fr 1.1fr; align-items:center; gap:60px; padding:100px 0; }
.voting p:not(.eyebrow) { color:#bfae91; }
.vote-box { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.vote { cursor:pointer; min-height:160px; padding:22px; color:var(--paper-light); background:#17191b; border:1px solid rgba(234,215,173,.2); border-radius:10px; transition:.2s ease; }
.vote:hover { transform:translateY(-4px); border-color:#d6a64e; }
.vote strong { display:block; font-size:2.8rem; }
.vote span { color:#baad98; text-transform:uppercase; font:800 .75rem Arial,sans-serif; letter-spacing:.1em; }

.invicta { padding:80px 0; background: radial-gradient(circle at 20% 0, rgba(179,74,45,.22), transparent 35rem), #19110e; border-block:1px solid rgba(255,255,255,.08); }
.invicta-inner { display:flex; justify-content:space-between; gap:40px; align-items:center; }
.invicta-inner h2 { margin-bottom:10px; }
.invicta-inner p:not(.eyebrow) { max-width:690px; color:#c7b9a5; }
.invicta-actions { display:flex; gap:12px; flex-wrap:wrap; }
.site-footer { display:flex; justify-content:space-between; gap:30px; padding:34px 0 46px; color:#8f8372; font-size:.82rem; }

@media (max-width: 900px) {
  nav { display:none; }
  .hero { grid-template-columns:1fr; padding-top:60px; }
  .bank-scene { min-height:480px; }
  .section-heading,.generator-layout,.voting { grid-template-columns:1fr; }
  .report-grid { grid-template-columns:1fr; }
  .report-card { min-height:260px; }
  .invicta-inner,.site-footer { align-items:flex-start; flex-direction:column; }
}

@media (max-width: 560px) {
  .shell { width:min(100% - 24px,1180px); }
  .site-header { padding:10px 12px; }
  .brand small { display:none; }
  h1 { font-size:3.2rem; }
  .hero { min-height:auto; gap:30px; padding-bottom:40px; }
  .bank-scene { min-height:410px; }
  .speech { width:70%; right:3%; top:4%; padding:14px; }
  .speech span { font-size:.94rem; }
  .crier { transform:scale(.82); transform-origin:left bottom; }
  .news-crate { right:5%; bottom:5%; transform:scale(.82) rotate(-2deg); transform-origin:right bottom; }
  .report-card h3 { font-size:1.65rem; }
  .generated-body { padding:28px 20px 36px; }
  .vote-box { grid-template-columns:1fr; }
  .ticker p { animation-duration:15s; }
}

/* Authentic Invicta bank scene and in-game town crier sprites */
.bank-scene {
  min-height: 500px;
  isolation: isolate;
  background: #111;
}
.bank-photo {
  position: absolute;
  inset: 0;
  z-index: 0;
  background-image: url('assets/invicta-bank.png');
  background-position: 52% 52%;
  background-size: cover;
  filter: saturate(.92) contrast(1.03) brightness(.78);
  transform: scale(1.015);
}
.bank-vignette {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background:
    linear-gradient(90deg, rgba(8,8,8,.18), transparent 48%, rgba(8,8,8,.28)),
    linear-gradient(180deg, rgba(8,8,8,.08), transparent 48%, rgba(8,8,8,.34));
  box-shadow: inset 0 0 85px rgba(0,0,0,.55);
}
.bank-scene::after { display:none; }
.moon,.bank-building,.crier { display:none; }
.crier-sprite {
  position: absolute;
  z-index: 6;
  left: 16%;
  bottom: 9%;
  width: auto;
  height: 112px;
  image-rendering: pixelated;
  filter: drop-shadow(0 8px 5px rgba(0,0,0,.72));
  transform-origin: center bottom;
  animation: crier-idle 2.4s steps(2,end) infinite;
}
@keyframes crier-idle {
  0%,100% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
}
.speech {
  right: 4%;
  top: 6%;
  width: 58%;
  background: rgba(246,233,200,.97);
}
.speech::after {
  left: 15%;
  bottom: -28px;
}
.news-crate {
  right: 5%;
  bottom: 6%;
}
.scene-label {
  position:absolute;
  z-index:7;
  left:18px;
  top:16px;
  padding:7px 10px;
  color:#f3e2ba;
  background:rgba(19,14,10,.82);
  border:1px solid rgba(234,215,173,.35);
  font:800 .67rem Arial,sans-serif;
  letter-spacing:.12em;
  text-transform:uppercase;
  box-shadow:0 5px 15px rgba(0,0,0,.35);
}
.crier-sprite.is-changing {
  animation: crier-change .34s ease-out;
}
@keyframes crier-change {
  0% { opacity:0; transform:translateY(8px) scale(.88); }
  100% { opacity:1; transform:translateY(0) scale(1); }
}
@media (max-width:560px) {
  .bank-photo { background-position: 49% 52%; }
  .crier-sprite { left:8%; bottom:7%; height:94px; }
  .speech { width:74%; right:3%; }
  .scene-label { font-size:.55rem; }
}

/* Supplied Ultima-style display lettering, rasterized from the user's font. */
.brand {
  min-width: 0;
}
.brand-logo {
  display: block;
  width: 230px;
  max-width: 32vw;
  height: auto;
  image-rendering: auto;
  filter: drop-shadow(0 3px 0 rgba(0,0,0,.45));
}
.brand > small {
  color: #bfae8c;
  font-size: .72rem;
  white-space: nowrap;
}
.hero h1 {
  margin-bottom: 22px;
  letter-spacing: 0;
}
.hero-title {
  display: block;
  width: min(100%, 660px);
  height: auto;
  margin: 0 0 14px;
  filter: drop-shadow(0 7px 0 rgba(0,0,0,.3));
}
.hero h1 > span {
  display: block;
  color: #d5bb84;
  font-size: clamp(1.45rem, 2.7vw, 2.45rem);
  letter-spacing: -.02em;
  max-width: 720px;
}
.bank-photo {
  filter: saturate(.98) contrast(1.035) brightness(.94);
}
.crier-duty {
  position: absolute;
  z-index: 7;
  left: 18px;
  top: 54px;
  width: 190px;
  padding: 9px 10px 10px;
  color: #efe0bd;
  background: rgba(18,13,10,.84);
  border: 1px solid rgba(234,215,173,.34);
  box-shadow: 0 8px 20px rgba(0,0,0,.36);
}
.crier-duty > span {
  display: block;
  margin-bottom: 4px;
  color: #d6aa56;
  font: 900 .62rem Arial,sans-serif;
  letter-spacing: .15em;
}
.crier-duty small {
  display: block;
  margin-top: 3px;
  color: #c3b394;
  font: 700 .58rem/1.25 Arial,sans-serif;
}
.crier-miniatures {
  height: 45px;
  display: flex;
  align-items: flex-end;
  gap: 9px;
}
.crier-miniatures img {
  width: auto;
  height: 40px;
  image-rendering: pixelated;
  opacity: .88;
  filter: drop-shadow(0 3px 2px rgba(0,0,0,.8));
}
.crier-miniatures img:nth-child(2) { height: 42px; }
.crier-miniatures img:nth-child(3) { height: 41px; }
.crier-miniatures img:nth-child(4) { height: 43px; }

@media (max-width: 900px) {
  .brand-logo { width: 205px; max-width: 48vw; }
}
@media (max-width: 560px) {
  .brand-logo { width: 176px; max-width: 62vw; }
  .brand > small { display: none; }
  .hero-title { width: min(100%, 520px); }
  .hero h1 > span { font-size: 1.45rem; }
  .crier-duty { display: none; }
  .bank-photo { filter: saturate(.98) contrast(1.03) brightness(.92); }
}

/* Corrected hero composition: crier, connected speech tail, and contained news box. */
.bank-scene,
.bank-scene * {
  -webkit-user-select: none;
  user-select: none;
}

.crier-sprite {
  left: 44%;
  bottom: 15%;
  height: 104px;
}

.speech {
  right: 4%;
  top: 14%;
  width: 58%;
  overflow: visible;
}

/* Outer tail border. */
.speech::before {
  content: "";
  position: absolute;
  left: 17%;
  bottom: -38px;
  width: 0;
  height: 0;
  border-style: solid;
  border-width: 38px 28px 0 8px;
  border-color: #5f432a transparent transparent transparent;
  transform: rotate(9deg);
  transform-origin: 0 0;
  z-index: -1;
}

/* Inner parchment fill, inset so the tail is visibly attached to the bubble. */
.speech::after {
  content: "";
  position: absolute;
  left: calc(17% + 4px);
  bottom: -30px;
  width: 0;
  height: 0;
  border-style: solid;
  border-width: 31px 22px 0 7px;
  border-color: rgba(246,233,200,.97) transparent transparent transparent;
  transform: rotate(9deg);
  transform-origin: 0 0;
  z-index: 1;
}

.news-crate {
  right: 5%;
  bottom: 6%;
  width: 145px;
  min-height: 108px;
  padding: 10px 11px 9px;
  display: grid;
  grid-template-rows: 1fr auto;
  align-items: center;
  justify-items: center;
  gap: 3px;
  overflow: hidden;
}
.news-crate img {
  display: block;
  width: 112px;
  max-width: 100%;
  height: auto;
  object-fit: contain;
  image-rendering: auto;
  filter: drop-shadow(0 1px 0 rgba(255,255,255,.12));
}
.news-crate small {
  width: 100%;
  display: flex;
  justify-content: center;
  align-items: baseline;
  gap: 7px;
  color: #2b1b12;
  text-align: center;
  white-space: nowrap;
  font: 800 .56rem/1 Arial,sans-serif;
  letter-spacing: .02em;
}
.news-crate small b {
  font-size: .72rem;
}
.news-crate small span {
  font: inherit;
  line-height: 1;
}

@media (max-width: 900px) {
  .crier-sprite { left: 42%; bottom: 14%; height: 100px; }
}

@media (max-width: 560px) {
  .crier-sprite { left: 34%; bottom: 13%; height: 86px; }
  .speech { width: 74%; right: 3%; }
  .speech::before { left: 18%; bottom: -34px; border-width: 34px 24px 0 7px; }
  .speech::after { left: calc(18% + 4px); bottom: -27px; border-width: 27px 19px 0 6px; }
  .news-crate { right: 4%; bottom: 5%; transform: scale(.78) rotate(-2deg); }
}


/* Rollback: original Town Crier styling, with Ultima Online font used everywhere.
   Put ultima-online-border.ttf in the same folder as index.html/styles.css. */
html,
body,
button,
input,
select,
textarea,
a,
p,
span,
small,
strong,
label,
li,
h1,
h2,
h3,
.brand,
.brand small,
nav a,
.eyebrow,
.button,
.report-card,
.report-card footer,
.generator-panel label,
.generator-panel input,
.generator-panel select,
.generated-topline,
.generated-footer,
.generated-body .breaking,
.vote span,
.scene-label,
.crier-duty,
.crier-duty small,
.news-crate small {
  font-family: "UltimaOnline", Georgia, "Times New Roman", serif !important;
  font-weight: normal;
}


/* Readability pass: keep the big headings UO-styled, but make tiny/paragraph text solid. */
.eyebrow,
.category,
.stamp,
.breaking,
.ticker span,
.generated-topline,
.generated-footer,
.report-card footer,
.report-card footer span,
.news-crate small,
.news-crate small b,
.news-crate small span,
.crier-duty > span,
.crier-duty small,
.scene-label,
.vote span,
.generator-panel label,
.button,
nav a,
.brand small {
  font-family: Arial, Helvetica, sans-serif !important;
  font-weight: 800 !important;
  letter-spacing: 0.08em;
  line-height: 1.15;
}

.report-card > p:not(.category),
.section-heading > p,
.generator-copy > p:not(.eyebrow),
.check-list,
.check-list li,
.voting p:not(.eyebrow),
.invicta-inner p:not(.eyebrow),
.site-footer,
.site-footer p,
.generated-body p:last-child,
.speech span,
.speech strong,
.generator-panel input,
.generator-panel select {
  font-family: Georgia, "Times New Roman", serif !important;
  font-weight: 600 !important;
  letter-spacing: 0;
  line-height: 1.45;
}

.section-heading > p,
.voting p:not(.eyebrow),
.invicta-inner p:not(.eyebrow),
.site-footer {
  font-size: 1rem;
}

.report-card footer {
  font-size: .72rem;
}

.generator-copy .eyebrow {
  color: #8f241e !important;
  font-size: .9rem;
  opacity: 1;
}

.generator-panel input,
.generator-panel select {
  color: #21160f !important;
  text-shadow: none !important;
  font-size: 1.05rem;
}

.generator-panel input::placeholder {
  color: #655647;
  opacity: 1;
}

.news-crate small {
  font-size: .64rem !important;
  color: #2b1b12 !important;
}

.news-crate small b {
  font-size: .82rem !important;
}

.invicta-logo {
  display: block;
  width: min(430px, 90vw);
  height: auto;
  margin: 0 0 18px;
  filter: drop-shadow(0 14px 18px rgba(0,0,0,.45));
}

.invicta-inner h2 {
  display: none;
}

@media (max-width: 560px) {
  .invicta-logo {
    width: min(330px, 86vw);
  }
}


/* 2026-07-31 requested readability size tweaks */
.lede {
  font-family: Georgia, "Times New Roman", serif !important;
  font-size: 1rem !important;
  line-height: 1.45 !important;
  font-weight: 600 !important;
  max-width: 620px;
}

.generator-panel input,
.generator-panel select {
  font-size: .9rem !important;
  line-height: 1.25 !important;
  padding: 11px 14px !important;
}

.generator-panel input::placeholder {
  font-size: .9rem !important;
}

.site-footer,
.site-footer p {
  font-size: .68rem !important;
  line-height: 1.25 !important;
}

.invicta-logo-link {
  display: inline-block;
  text-decoration: none;
}

.invicta-logo-link:hover .invicta-logo {
  filter: drop-shadow(0 14px 18px rgba(0,0,0,.45)) brightness(1.06);
}


/* 2026-07-31 expanded report generator controls */
.generator-panel textarea {
  width: 100%;
  min-height: 78px;
  margin-top: 8px;
  padding: 11px 14px;
  color: #21160f;
  background: #f8edcf;
  border: 1px solid rgba(70,47,31,.35);
  border-radius: 3px;
  font: .9rem/1.35 Georgia, "Times New Roman", serif;
  resize: vertical;
  outline: none;
}

.generator-panel textarea:focus {
  border-color: var(--red);
  box-shadow: 0 0 0 3px rgba(143,36,30,.12);
}

.generator-panel textarea::placeholder {
  color: #655647;
  opacity: 1;
}

.generator-panel .button + .button {
  margin-top: 10px;
}


/* 2026-07-31 custom/generate cleanup and readable small text */
.generated-options[hidden],
.custom-report-field[hidden] {
  display: none !important;
}

.generator-panel textarea,
.generator-panel input,
.generator-panel select {
  font-family: Georgia, "Times New Roman", serif !important;
  font-size: .88rem !important;
  line-height: 1.3 !important;
  font-weight: 600 !important;
  text-shadow: none !important;
}

.generator-panel textarea::placeholder,
.generator-panel input::placeholder {
  font-family: Georgia, "Times New Roman", serif !important;
  font-size: .88rem !important;
  color: #655647 !important;
  opacity: 1 !important;
}

/* Generated card labels: stop using the decorative UO font here */
.generated-report .generated-topline,
.generated-report .generated-topline span,
.generated-report .generated-footer,
.generated-report .generated-footer span,
.generated-report .generated-body .breaking {
  font-family: Arial, Helvetica, sans-serif !important;
  font-weight: 900 !important;
  letter-spacing: .1em !important;
  line-height: 1.15 !important;
  text-shadow: none !important;
}

.generated-report .generated-topline,
.generated-report .generated-footer {
  font-size: .68rem !important;
}

.generated-report .generated-body .breaking {
  font-size: .72rem !important;
  color: #9b241e !important;
}

/* Scrolling news bar back to normal readable text */
.ticker > span,
.ticker p,
.ticker-window p,
#tickerText {
  font-family: Arial, Helvetica, sans-serif !important;
  font-weight: 800 !important;
  letter-spacing: .08em !important;
  text-shadow: none !important;
}

.ticker p,
.ticker-window p,
#tickerText {
  font-size: .78rem !important;
  color: #d7c9ae !important;
}

.site-footer,
.site-footer p,
.site-footer span {
  font-family: Arial, Helvetica, sans-serif !important;
  font-size: .66rem !important;
  font-weight: 700 !important;
  letter-spacing: .02em !important;
  text-shadow: none !important;
}


/* 2026-07-31 v4: Generated headline readable + hide character name in custom mode */
#characterNameField[hidden] {
  display: none !important;
}

/* The big generated report headline should NOT use the pixel/UO font. */
.generated-report .generated-body h3,
#generatedHeadline {
  font-family: Georgia, "Times New Roman", serif !important;
  font-size: clamp(2rem, 3.5vw, 3.35rem) !important;
  line-height: 1.08 !important;
  font-weight: 900 !important;
  letter-spacing: -0.025em !important;
  color: #2b1d13 !important;
  text-shadow: none !important;
}

.generated-report .generated-body p,
#generatedStory {
  font-family: Georgia, "Times New Roman", serif !important;
  font-size: 1.02rem !important;
  line-height: 1.38 !important;
  font-weight: 700 !important;
  text-shadow: none !important;
}




/* 2026 08 04 player report news cycle */
.vote,
.vote strong,
.vote span,
#confirmedCount,
#poopCount {
  font-family: Arial, Helvetica, sans-serif !important;
  font-weight: 900 !important;
  text-shadow: none !important;
}

.vote span {
  letter-spacing: .1em !important;
}

.report-help,
.save-status {
  margin: 10px 0 16px;
  color: #5d4734;
  font-family: Arial, Helvetica, sans-serif !important;
  font-size: .78rem;
  font-weight: 700;
  line-height: 1.4;
  letter-spacing: .02em;
  text-transform: none;
}

.save-status {
  min-height: 1.2em;
  margin-bottom: 0;
  color: #6f211c;
  text-align: center;
}

.report-story[hidden],
#generatedStory[hidden] {
  display: none !important;
}

.report-empty {
  grid-column: 1 / -1;
  min-height: 250px;
}

#reportGrid .report-card {
  transition: opacity .25s ease, transform .25s ease;
}

.generator-panel button:disabled {
  cursor: progress;
  opacity: .72;
}

@media (prefers-reduced-motion: reduce) {
  .ticker p {
    animation-duration: 30s;
  }
}

/* 2026 08 04 Britannian tabloid cleanup */
.reports[hidden] {
  display: none !important;
}

.reports {
  padding: 42px 0 54px;
}

.report-grid {
  align-items: start;
}

.report-card {
  min-height: 260px;
}

.generator-copy h2 {
  max-width: 590px;
}

#customReport::placeholder {
  color: #6b5038;
  opacity: .82;
}
