/* ALF97+ BOOK — signbook door. Tokens match plus/alf-plus.css. Geometry from FTP table-set. */
@import url('https://fonts.googleapis.com/css2?family=Darker+Grotesque:wght@700;800;900&family=Outfit:wght@800;900&family=JetBrains+Mono:wght@400;700;800&display=swap');

:root {
  --paper: #fafafa; --ink: #000; --dim: #222; --faint: #555;
  --red: #ff3300; --blue: #0033ff; --yellow: #ffaa00; --hi: #faff00;
  --mono: "JetBrains Mono", ui-monospace, monospace;
  --disp: "Darker Grotesque", system-ui, sans-serif;
  --outfit: "Outfit", var(--disp), sans-serif;
}

* { box-sizing: border-box; }
html, body { height: 100%; margin: 0; }
body { background: var(--paper); color: var(--ink); font-family: var(--mono); overflow: hidden; }
a { color: var(--ink); text-decoration: none; }
a:hover { background: var(--hi); }
::selection { background: var(--red); color: #fff; }

.crop {
  position: absolute; width: 14px; height: 14px; z-index: 12; pointer-events: none;
  border: 2px solid var(--red);
}
.crop.tl { top: 6px; left: 6px; border-right: 0; border-bottom: 0; }
.crop.tr { top: 6px; right: 6px; border-left: 0; border-bottom: 0; }
.crop.bl { bottom: 6px; left: 6px; border-right: 0; border-top: 0; }
.crop.br { bottom: 6px; right: 6px; border-left: 0; border-top: 0; }

.app {
  position: absolute; inset: 14px;
  border: 2px solid var(--ink);
  display: flex; flex-direction: column;
  background: var(--paper);
}

.bar {
  display: flex; align-items: stretch; flex: none; height: 42px;
  border-bottom: 2px solid var(--ink);
  font-size: 11px; letter-spacing: .04em; text-transform: uppercase;
}
.bar .l {
  padding: 0 14px; border-right: 2px solid var(--ink);
  background: var(--red); color: #000; font-weight: 700;
  display: flex; align-items: center; white-space: nowrap;
}
.bar .m {
  flex: 1; padding: 0 14px; display: flex; align-items: center; gap: 16px;
  color: var(--dim); min-width: 0;
}
.bar .m b { color: var(--ink); }
.bar .stamps { display: flex; align-items: stretch; flex: none; }
.bar .stamps span {
  display: flex; align-items: center; padding: 0 12px;
  border-left: 2px solid var(--ink); font-weight: 700; white-space: nowrap;
}
.bar .stamps .blk-red { background: var(--red); color: #000; }
.bar .stamps .blk-blue { background: var(--blue); color: #fff; }
.bar .plus {
  display: flex; align-items: center; padding: 0 14px;
  border-left: 2px solid var(--ink); background: var(--blue); color: #fff;
  font-weight: 700; letter-spacing: .04em;
}
.bar .plus:hover { background: var(--ink); color: var(--paper); }

table.set {
  width: 100%; flex: 1; height: auto;
  border-collapse: collapse; background: var(--paper);
}
table.set > tbody > tr > td { border: 2px solid var(--ink); border-top: 0; padding: 0; }
table.set > tbody > tr:first-child > td { border-top: 0; }

td.nav { width: 200px; background: #fff; vertical-align: top; }
table.cmd { width: 100%; border-collapse: collapse; }
table.cmd th {
  padding: 9px 12px; font-size: 9px; letter-spacing: .2em;
  text-transform: uppercase; color: var(--faint); text-align: left;
  border-bottom: 2px solid var(--ink);
}
table.cmd td {
  padding: 11px 12px; font-size: 12px; letter-spacing: .04em;
  border-bottom: 1px solid #0000001f; cursor: pointer;
}
table.cmd td.k { width: 22px; font-weight: 800; color: var(--blue); }
table.cmd tr:hover td { background: var(--hi); }
table.cmd tr.on td { background: var(--blue); color: #fff; }
table.cmd tr.on td.k { color: var(--yellow); }

td.stage { position: relative; vertical-align: top; overflow: hidden; background: var(--paper); }
.color-block-red {
  position: absolute; right: 18px; top: 18px; width: 48px; height: 48px;
  background: var(--red); z-index: 0; pointer-events: none;
}
.color-block-blue {
  position: absolute; right: 38px; top: 52px; width: 28px; height: 72px;
  background: var(--blue); z-index: 0; pointer-events: none;
}
.watermark {
  position: absolute; left: 12px; bottom: 8px; font-family: var(--outfit);
  font-size: 72px; font-weight: 900; letter-spacing: -.06em; line-height: .8;
  pointer-events: none; z-index: 0; opacity: .08;
}
.watermark .outline { color: transparent; -webkit-text-stroke: 2px var(--ink); }
.watermark .filled { color: var(--ink); }

.sheet {
  position: relative; z-index: 2;
  margin: 18px 18px 14px 40px;
  border: 2px solid var(--ink);
  background: rgba(250,250,250,.92);
  box-shadow: 8px 8px 0 var(--ink);
  display: flex; flex-direction: column;
  height: calc(100% - 32px);
  min-height: 0;
}
.sheet .titleblk {
  display: flex; align-items: flex-end; gap: 18px;
  padding: 12px 16px 10px;
  border-bottom: 2px solid var(--ink);
  border-left: 8px solid var(--ink);
}
.sheet .titleblk .no {
  font-family: var(--outfit); font-weight: 900; font-size: 28px; line-height: .8;
  letter-spacing: -.03em; text-transform: uppercase;
}
.sheet .titleblk .no i { font-style: normal; color: var(--red); }
.sheet .titleblk .meta {
  flex: 1; font-size: 10px; letter-spacing: .14em; text-transform: uppercase; color: var(--dim);
  padding-bottom: 2px;
}
.sheet .titleblk .meta b { color: var(--ink); }
.sheet .titleblk .xfer {
  font-weight: 800; font-size: 10px; letter-spacing: .16em;
  border: 2px solid var(--ink); padding: 4px 8px;
}
.scroll { flex: 1; overflow: auto; min-height: 0; padding: 10px 12px; }

.card {
  border: 2px solid var(--ink); margin: 0 0 10px; background: #fff;
  box-shadow: 4px 4px 0 var(--ink);
}
.card .ban { padding: 8px 10px 4px; min-height: 28px; background: var(--yellow); border-bottom: 2px solid var(--ink); }
.card .ban img { image-rendering: pixelated; height: 16px; }
.card .who {
  padding: 8px 10px 4px; font-size: 12px; font-weight: 800;
}
.card .who em { font-style: normal; font-weight: 400; color: var(--dim); font-size: 10px; }
.card .who .mood { color: var(--red); font-size: 9px; letter-spacing: .12em; text-transform: uppercase; }
.card .tx { padding: 4px 10px 10px; font-size: 12px; line-height: 1.45; }
.card .tx img { vertical-align: middle; }

td.foot { background: #fff; }
table.go { width: 100%; border-collapse: collapse; }
table.go td { padding: 6px 8px; font-size: 11px; vertical-align: middle; }
table.go td.lbl { width: 56px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; font-size: 9px; color: var(--faint); }
table.go input, table.go select, table.go textarea {
  width: 100%; border: 2px solid var(--ink); padding: 5px 7px;
  font: 400 12px/1.3 var(--mono); background: #fff;
}
table.go textarea { min-height: 44px; resize: vertical; }
table.go .act {
  width: 88px; text-align: center; font-weight: 800; letter-spacing: .14em;
  background: var(--red); color: #000; cursor: pointer; user-select: none;
}
table.go .act:hover { background: var(--ink); color: var(--paper); }
table.go .stamps { display: flex; flex-wrap: wrap; gap: 3px; }
table.go .stamps img { cursor: pointer; image-rendering: pixelated; }
#flash { font-size: 10px; letter-spacing: .08em; min-height: 14px; }
#flash.ok { color: var(--blue); }
#flash.bad { color: var(--red); }

@media (max-width: 720px) {
  td.nav { width: 120px; }
  .sheet { margin: 10px; }
  .watermark { display: none; }
}
