/* PaperHawk world: the Control Room itself. Near-black green panels, a single alive green,
   amber and red for warnings, JetBrains Mono everywhere a terminal would use it. */
body.world-paperhawk {
  --ink: #0b0f0d; --night: #0e1411; --plate: #111814; --plate-2: #16201a;
  --line: #22302a; --line-2: #2c3d35;
  --paper: #e6efe9; --dim: #8fa397; --mute: #5d6f64; --ivory: #e6efe9;
  --accent: #2fd27a; --accent-hi: #8ff0b8; --brass: #2fd27a; --brass-hi: #8ff0b8; --brass-lo: #1b7a48;
  --amber: #f2b23a; --red: #ff5a52;
  --serif: "JetBrains Mono", ui-monospace, monospace;
  --sans: "Space Grotesk", system-ui, sans-serif;
  --mono: "JetBrains Mono", ui-monospace, monospace;
  --radius: 6px;
  background: radial-gradient(900px 600px at 85% 20%, rgba(47, 210, 122, .06), transparent 60%), #0b0f0d;
}
.world-paperhawk .display { font-weight: 700; letter-spacing: -.05em; line-height: .95; font-size: clamp(40px, 7.4vw, 104px); }
.world-paperhawk .h2 { font-weight: 600; letter-spacing: -.04em; line-height: 1.02; font-size: clamp(30px, 4.4vw, 58px); }
.world-paperhawk em { font-style: normal; color: var(--accent); }
.world-paperhawk .display em::after, .world-paperhawk .h2 em::after { content: "_"; animation: blink 1.1s steps(1) infinite; }
@keyframes blink { 50% { opacity: 0; } }
html[data-calm] .world-paperhawk em::after { animation: none; }
.world-paperhawk .h3, .world-paperhawk .shot h3 { font-family: var(--mono); font-weight: 600; font-size: 17px; letter-spacing: -.01em; }
.world-paperhawk .eyebrow { color: var(--accent); font-size: 11px; }
.world-paperhawk .eyebrow::before { content: ">"; width: auto; height: auto; background: none; opacity: 1; }
.world-paperhawk .btn { border-radius: 6px; font-family: var(--mono); font-size: 14px; font-weight: 600; text-transform: lowercase; }
.world-paperhawk .btn-key { color: #04140b; background: var(--accent); box-shadow: 0 0 0 1px #8ff0b8 inset, 0 0 30px -6px rgba(47, 210, 122, .7); }
.world-paperhawk .btn-glass { background: #111814; border: 1px solid #22302a; }
.world-paperhawk .card, .world-paperhawk .shot { background: #111814; border-color: #22302a; }
.world-paperhawk .card::after, .world-paperhawk .shot::after { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 2px; background: linear-gradient(90deg, var(--accent), transparent 70%); opacity: .7; }
.world-paperhawk .shot .tag { color: var(--accent); }
.world-paperhawk .chip { border-radius: 4px; font-family: var(--mono); font-size: 12px; background: #111814; border-color: #22302a; }
.world-paperhawk .hero::after { background: linear-gradient(180deg, rgba(11, 15, 13, .55) 0%, transparent 30%, rgba(11, 15, 13, .2) 55%, #0b0f0d 100%), linear-gradient(90deg, rgba(11, 15, 13, .8) 0%, transparent 62%); }
.world-paperhawk .layers { display: grid; gap: 8px; counter-reset: layer; }
.world-paperhawk .layers li { list-style: none; display: grid; grid-template-columns: 56px 1fr; gap: 16px; align-items: start; padding: 16px 18px; border: 1px solid #22302a; border-radius: 6px; background: #111814; counter-increment: layer; transition: border-color .3s, background .3s; }
.world-paperhawk .layers li::before { content: "L" counter(layer); font-family: var(--mono); font-weight: 700; color: var(--accent); font-size: 20px; }
.world-paperhawk .layers li:hover { border-color: #1b7a48; background: #16201a; }
.world-paperhawk .layers b { font-family: var(--mono); font-weight: 600; display: block; margin-bottom: 4px; }
.world-paperhawk .layers p { margin: 0; color: var(--dim); font-size: 15.5px; }
/* Chronicle as a run log. */
.world-paperhawk .chron::before { left: 23px; background: #22302a; }
.world-paperhawk .chron::after { left: 23px; background: var(--accent); box-shadow: 0 0 10px var(--accent); }
.world-paperhawk .chron .node { border-radius: 4px; font-family: var(--mono); background: #0b0f0d; border-color: #2c3d35; }
.world-paperhawk .chron li.lit .node { background: #0b0f0d; color: var(--accent); border-color: var(--accent); box-shadow: 0 0 18px rgba(47, 210, 122, .35); }
.world-paperhawk .chron .stage { font-family: var(--mono); color: var(--accent); }
.world-paperhawk .chron .stage::before { content: "[ ok ] "; }
.world-paperhawk .chron li.next .stage::before { content: "[ .. ] "; color: var(--amber); }
.world-paperhawk .chron h3 { font-family: var(--mono); font-weight: 600; }
.world-paperhawk .cta-band { background: #111814; border: 1px solid #22302a; border-radius: 8px; }
.world-paperhawk .next-app { border-color: #22302a; }
.world-paperhawk .dev { box-shadow: 0 0 0 1px rgba(255, 255, 255, .06) inset, 0 40px 90px -30px rgba(0, 0, 0, .8), 0 0 80px -30px rgba(47, 210, 122, .5); }
/* Data flow: three nodes joined by wires with a packet running along each. */
.world-paperhawk .flowmap { display: grid; grid-template-columns: 1fr 120px 1fr 120px 1fr; align-items: stretch; gap: 0; }
.world-paperhawk .fm-node { border: 1px solid #22302a; border-radius: 8px; background: #111814; padding: 20px; position: relative; }
.world-paperhawk .fm-node::before { content: ""; position: absolute; top: 18px; right: 18px; width: 9px; height: 9px; border-radius: 50%; background: var(--accent); box-shadow: 0 0 10px var(--accent); }
.world-paperhawk .fm-k { font-family: var(--mono); font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--accent); }
.world-paperhawk .fm-node b { display: block; font-family: var(--mono); font-weight: 600; font-size: 17px; margin: 10px 0 8px; }
.world-paperhawk .fm-node p { margin: 0; color: var(--dim); font-size: 15px; }
.world-paperhawk .fm-wire { position: relative; display: grid; place-items: center; }
.world-paperhawk .fm-wire::before { content: ""; position: absolute; left: 0; right: 0; top: 50%; border-top: 1px dashed #2c3d35; }
.world-paperhawk .fm-wire i { position: absolute; top: calc(50% - 3px); left: 0; width: 18px; height: 6px; border-radius: 3px; background: var(--accent); box-shadow: 0 0 12px var(--accent); animation: packet 2.4s linear infinite; }
.world-paperhawk .fm-wire span { position: relative; top: 26px; font-family: var(--mono); font-size: 10.5px; line-height: 1.35; color: var(--mute); text-align: center; padding: 0 6px; }
@keyframes packet { from { left: 0; opacity: 0; } 15% { opacity: 1; } 85% { opacity: 1; } to { left: calc(100% - 18px); opacity: 0; } }
html[data-calm] .world-paperhawk .fm-wire i { animation: none; left: calc(50% - 9px); }
@media (max-width: 900px) {
  .world-paperhawk .flowmap { grid-template-columns: 1fr; }
  .world-paperhawk .fm-wire { height: 86px; }
  .world-paperhawk .fm-wire::before { left: 50%; right: auto; top: 0; bottom: 0; border-top: 0; border-left: 1px dashed #2c3d35; }
  .world-paperhawk .fm-wire i { width: 6px; height: 18px; left: calc(50% - 3px); top: 0; animation-name: packetv; }
  .world-paperhawk .fm-wire span { top: 0; left: 0; background: var(--ink); padding: 4px 8px; }
  @keyframes packetv { from { top: 0; opacity: 0; } 15% { opacity: 1; } 85% { opacity: 1; } to { top: calc(100% - 18px); opacity: 0; } }
}
