@font-face {
  font-family: "Special Elite";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/special-elite-latin-ext.woff2) format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Special Elite";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/special-elite-latin.woff2) format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
:root {
  --desk: #3a4034;
  --desk-dark: #272b22;
  --paper: #ddd6bf;
  --paper-light: #e7e1ce;
  --ink: #1d1c18;
  --faded: #5f5b4c;
  --rule: #8a846f;
  --stamp: #7a2a22;
  --ok: #2f5a2a;
  --warn: #8a6516;
  --field: rgba(255, 255, 255, 0.3);
  --font: "Special Elite", "Courier New", Courier, monospace;
}

@media (prefers-color-scheme: dark) {
  :root {
    --desk: #1c1f19;
    --desk-dark: #11130e;
    --paper: #c9c2aa;
    --paper-light: #d3ccb4;
  }
}

* { box-sizing: border-box; }

html { scroll-padding-top: 12px; }

body {
  margin: 0;
  min-height: 100vh;
  background: var(--desk);
  color: var(--ink);
  font-family: var(--font);
  line-height: 1.5;
}

a { color: var(--stamp); }

button, input, select, textarea { font: inherit; color: inherit; }

:focus-visible { outline: 2px solid var(--stamp); outline-offset: 2px; }

.topbar {
  background: var(--desk-dark);
  color: var(--paper);
  border-bottom: 3px double var(--rule);
}

.topbar-inner {
  max-width: 1100px;
  margin: 0 auto;
  padding: 10px 16px;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 22px;
}

.brand {
  display: flex;
  flex-direction: column;
  line-height: 1.15;
  color: var(--paper);
  text-decoration: none;
}

.brand strong { font-size: 1.05rem; font-weight: normal; letter-spacing: 0.06em; }
.brand small { font-size: 0.72rem; opacity: 0.75; letter-spacing: 0.08em; }

.nav { display: flex; flex-wrap: wrap; gap: 4px 6px; flex: 1; }

.nav a {
  color: var(--paper);
  text-decoration: none;
  padding: 6px 12px;
  border: 1px solid transparent;
  font-size: 0.92rem;
}

.nav a:hover { border-color: var(--rule); }
.nav a[aria-current="page"] { border-color: var(--paper); background: rgba(255, 255, 255, 0.08); }

.nav .count {
  display: inline-block;
  min-width: 1.4em;
  margin-left: 6px;
  padding: 0 5px;
  background: var(--stamp);
  color: var(--paper);
  text-align: center;
  font-size: 0.75rem;
  border-radius: 9px;
}

.userchip { display: flex; align-items: center; gap: 10px; font-size: 0.82rem; }
.userchip img, .avatar-fallback {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  border: 1px solid var(--rule);
  background: var(--desk);
  object-fit: cover;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.userchip .who { display: flex; flex-direction: column; line-height: 1.2; }
.userchip .who small { opacity: 0.7; }

.page { max-width: 1100px; margin: 0 auto; padding: 20px 16px 60px; }
.page.narrow { max-width: 860px; }

.panel {
  position: relative;
  background: var(--paper);
  padding: 24px 28px 28px;
  margin-bottom: 20px;
  box-shadow: 0 2px 0 #0003, 0 14px 30px #0004;
  border-top: 6px solid var(--stamp);
}

.panel > h1, .panel > h2:first-child { margin-top: 0; }

h1 { font-size: 1.5rem; font-weight: normal; letter-spacing: 0.04em; margin: 0 0 6px; }
h2 { font-size: 1.15rem; font-weight: normal; margin: 28px 0 10px; padding-bottom: 4px; border-bottom: 1px solid var(--ink); }
h2 small { color: var(--faded); font-size: 0.85rem; margin-left: 8px; }
h3 { font-size: 1rem; font-weight: normal; margin: 18px 0 8px; }

.lead { color: var(--faded); margin: 0 0 14px; }
.muted { color: var(--faded); }
.small { font-size: 0.85rem; }
.right { text-align: right; }
.hidden { display: none !important; }

.btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: var(--paper);
  color: var(--ink);
  border: 2px solid var(--ink);
  padding: 7px 14px;
  cursor: pointer;
  text-decoration: none;
  font-size: 0.95rem;
}

.btn:hover:not(:disabled) { background: var(--ink); color: var(--paper); }
.btn:disabled { opacity: 0.5; cursor: not-allowed; }
.btn.primary { background: var(--stamp); border-color: var(--stamp); color: var(--paper); }
.btn.primary:hover:not(:disabled) { background: var(--ink); border-color: var(--ink); }
.btn.danger { border-color: var(--stamp); color: var(--stamp); }
.btn.danger:hover:not(:disabled) { background: var(--stamp); color: var(--paper); }
.btn.small { padding: 3px 9px; font-size: 0.82rem; }
.btn.discord { background: #5865f2; border-color: #5865f2; color: #fff; padding: 12px 22px; font-size: 1.05rem; }
.btn.discord:hover { background: #3c45a5; border-color: #3c45a5; color: #fff; }

.actions { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.actions.end { justify-content: flex-end; }

.bar {
  position: sticky;
  bottom: 0;
  z-index: 5;
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
  padding: 12px 16px;
  background: var(--desk-dark);
  border-top: 2px solid var(--rule);
  color: var(--paper);
}

.bar .btn { background: var(--paper); }
.bar .btn.primary { background: var(--stamp); }
.bar .btn.danger { background: var(--paper); }
.bar .status { margin-left: auto; font-size: 0.85rem; opacity: 0.85; }

label { display: block; font-size: 0.85rem; color: var(--faded); }

input[type="text"], input[type="number"], input[type="date"], input[type="time"], input[type="search"], select, textarea {
  width: 100%;
  margin-top: 2px;
  background: var(--field);
  border: 0;
  border-bottom: 1px dashed var(--rule);
  border-radius: 0;
  padding: 7px 8px;
  color: var(--ink);
}

textarea {
  resize: vertical;
  min-height: 5.5em;
  border: 1px dashed var(--rule);
  field-sizing: content;
  overflow-wrap: anywhere;
}

textarea.reason { min-height: 4.5em; }
input.invalid, textarea.invalid, select.invalid { border-bottom: 2px solid var(--stamp); outline: 1px solid var(--stamp); }

input[readonly], .locked {
  background: rgba(0, 0, 0, 0.06);
  color: var(--faded);
}

input[type="checkbox"], input[type="radio"] { accent-color: var(--stamp); width: 18px; height: 18px; flex: none; }

.grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 20px; }
.grid.three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.wide { grid-column: 1 / -1; }

.check {
  display: flex;
  align-items: center;
  gap: 8px;
  color: var(--ink);
  font-size: 0.92rem;
}

.checkrow { display: flex; flex-wrap: wrap; gap: 8px 22px; padding: 10px 12px; border: 1px dashed var(--rule); }
.checkrow legend, .checkgroup-title { font-size: 0.85rem; color: var(--faded); }
fieldset { border: 0; padding: 0; margin: 0; min-width: 0; }

.value { margin-top: 2px; padding: 5px 2px; border-bottom: 1px dotted var(--rule); white-space: pre-wrap; overflow-wrap: anywhere; min-height: 1.6em; }
.value.block { border: 1px dashed var(--rule); padding: 6px 8px; min-height: 3em; }

.stamp {
  display: inline-block;
  border: 3px solid var(--stamp);
  color: var(--stamp);
  padding: 3px 12px;
  transform: rotate(6deg);
  font-size: 0.92rem;
  opacity: 0.85;
  letter-spacing: 0.04em;
}

.stamp.ok { border-color: var(--ok); color: var(--ok); }

.trainer-stamp {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  margin: 0 0 10px;
  border: 3px double var(--stamp);
  color: var(--stamp);
  padding: 5px 12px;
  transform: rotate(-3deg);
  font-size: 0.95rem;
  text-align: center;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}

.trainer-stamp small { font-size: 0.7rem; letter-spacing: 0.08em; }

.sheet {
  position: relative;
  max-width: 860px;
  margin: 20px auto;
  padding: 36px 44px 44px;
  background: var(--paper);
  border-top: 7px solid var(--stamp);
  box-shadow: 0 2px 0 #0003, 0 18px 40px #0005;
}

.sheet::before {
  content: "";
  position: absolute;
  inset: 12px;
  border: 1px solid var(--stamp);
  opacity: 0.3;
  pointer-events: none;
}

.sheet > * { position: relative; }

.sheet header {
  text-align: center;
  border-bottom: 3px double var(--ink);
  padding-bottom: 16px;
  margin-bottom: 20px;
}

.sheet header p { margin: 0; }
.sheet .reg { font-size: 1.02rem; letter-spacing: 0.04em; }
.sheet .abt { font-size: 1.65rem; margin: 6px 0 2px; letter-spacing: 0.06em; font-weight: normal; }
.sheet .doc { color: var(--faded); }
.sheet .stamp-wrap { margin-top: 10px; }
.sheet h2 { border-bottom-color: var(--stamp); }

.row {
  display: grid;
  grid-template-columns: 34px 1fr 96px;
  gap: 8px 12px;
  padding: 12px 0;
  border-bottom: 1px dotted var(--rule);
  align-items: start;
}

.row .n { padding-top: 6px; color: var(--faded); }
.row .body { display: grid; gap: 6px; min-width: 0; }
.row .ok { display: flex; align-items: center; gap: 6px; padding-top: 6px; font-size: 0.85rem; color: var(--ink); }
.row.good { background: rgba(47, 90, 42, 0.07); }
.row .ref { font-size: 0.8rem; color: var(--faded); font-style: italic; }
.row .q { font-size: 0.95rem; overflow-wrap: anywhere; }
.row .a { white-space: pre-wrap; }

.shot { grid-template-columns: 34px 90px 1fr 96px; align-items: center; }

.score { margin-top: 14px; text-align: right; font-size: 1.1rem; }
.score b { font-weight: normal; border: 2px solid var(--stamp); color: var(--stamp); padding: 2px 12px; margin-left: 8px; }
.pass { color: var(--ok); }
.fail { color: var(--stamp); }
.wait { color: var(--warn); }

.attempt { margin-top: 20px; padding: 12px 14px; border: 1px dashed var(--rule); }
.attempt.done { background: rgba(0, 0, 0, 0.04); }
.attempt-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 8px; }
.attempt-head h3 { margin: 0; }

.result-box { margin-top: 10px; padding: 12px 16px; border: 2px solid var(--stamp); }
.result-box .total { font-size: 1.25rem; }
.result-box .decision { font-size: 1.3rem; margin-top: 4px; }
.result-box ul { margin: 8px 0 0; padding-left: 20px; font-size: 0.88rem; color: var(--faded); }
.result-box.pass { border-color: var(--ok); }

.sign { margin-top: 36px; display: grid; grid-template-columns: 1fr 1fr; gap: 30px; }
.sign > div { border-top: 1px solid var(--ink); padding-top: 4px; font-size: 0.85rem; color: var(--faded); min-height: 70px; }

.footer-note { text-align: center; margin-top: 26px; padding-top: 10px; border-top: 1px dotted var(--rule); font-size: 0.8rem; color: var(--faded); }

.tabs { display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 14px; border-bottom: 2px solid var(--ink); }

.tab {
  padding: 7px 14px;
  background: transparent;
  border: 2px solid transparent;
  border-bottom: 0;
  cursor: pointer;
}

.tab[aria-selected="true"] { background: var(--paper-light); border-color: var(--ink); margin-bottom: -2px; }

.filters { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px 14px; margin-bottom: 14px; }

.table-wrap { overflow-x: auto; }

table.list { width: 100%; border-collapse: collapse; font-size: 0.9rem; }
table.list th { text-align: left; font-weight: normal; color: var(--faded); border-bottom: 2px solid var(--ink); padding: 6px 8px; white-space: nowrap; }
table.list td { padding: 8px; border-bottom: 1px dotted var(--rule); vertical-align: top; }
table.list tr.clickable { cursor: pointer; }
table.list tr.clickable:hover td { background: rgba(255, 255, 255, 0.3); }
table.list td a { text-decoration: none; }
table.list .ref { font-size: 0.8rem; color: var(--faded); }

.pill {
  display: inline-block;
  padding: 1px 9px;
  border: 1px solid var(--rule);
  font-size: 0.78rem;
  white-space: nowrap;
  background: rgba(255, 255, 255, 0.25);
}

.pill.ok { border-color: var(--ok); color: var(--ok); }
.pill.bad { border-color: var(--stamp); color: var(--stamp); }
.pill.wait { border-color: var(--warn); color: var(--warn); }
.pill.muted { color: var(--faded); }

.empty { color: var(--faded); padding: 14px 0; text-align: center; }

.banner { border: 2px solid var(--stamp); padding: 12px 16px; margin-bottom: 20px; background: linear-gradient(rgba(122, 42, 34, 0.07), rgba(122, 42, 34, 0.07)), var(--paper); box-shadow: 0 14px 30px #0004; }
.banner h2 { margin: 0 0 8px; border: 0; padding: 0; font-size: 1.05rem; color: var(--stamp); }
.banner ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.banner li { display: flex; gap: 10px; align-items: baseline; }
.banner li::before { content: "●"; color: var(--stamp); font-size: 0.7rem; animation: blink 1.6s infinite; }
.banner li .meta { color: var(--faded); font-size: 0.78rem; margin-left: auto; white-space: nowrap; }

@keyframes blink { 50% { opacity: 0.25; } }

.tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 12px; margin: 12px 0; }
.tile { border: 1px solid var(--rule); padding: 10px 14px; background: rgba(255, 255, 255, 0.2); text-decoration: none; color: var(--ink); display: block; }
.tile strong { display: block; font-size: 1.7rem; font-weight: normal; color: var(--stamp); }
.tile span { font-size: 0.82rem; color: var(--faded); }
a.tile:hover { background: rgba(255, 255, 255, 0.45); }

.choice-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }

.choice-card {
  display: grid;
  grid-template-columns: 20px 1fr;
  gap: 0 10px;
  align-content: start;
  padding: 14px;
  background: rgba(255, 255, 255, 0.2);
  border: 1px solid var(--rule);
  border-left: 6px solid var(--card, var(--rule));
  cursor: pointer;
  color: var(--ink);
}

.choice-card:hover { background: rgba(255, 255, 255, 0.45); }
.choice-card:has(input:checked) { background: rgba(255, 255, 255, 0.5); border-color: var(--card, var(--stamp)); outline: 2px solid var(--card, var(--stamp)); }
.choice-card input { grid-row: 1 / 3; margin-top: 3px; }
.choice-name { font-size: 1rem; }
.choice-desc { font-size: 0.8rem; color: var(--faded); margin-top: 3px; }

.callout { padding: 10px 14px; border-left: 4px solid var(--warn); background: rgba(138, 101, 22, 0.12); margin: 12px 0; font-size: 0.92rem; }
.callout.bad { border-color: var(--stamp); background: rgba(122, 42, 34, 0.1); }
.callout.ok { border-color: var(--ok); background: rgba(47, 90, 42, 0.1); }
.callout ul { margin: 6px 0 0; padding-left: 20px; }

.person { border: 1px dotted var(--stamp); padding: 12px; margin: 10px 0; }
.person-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }

.history { list-style: none; margin: 0; padding: 0; font-size: 0.85rem; }
.history li { padding: 6px 0; border-bottom: 1px dotted var(--rule); display: grid; grid-template-columns: 150px 1fr; gap: 4px 12px; }
.history .when { color: var(--faded); }
.history .detail { color: var(--faded); display: block; overflow-wrap: anywhere; }

.login { max-width: 560px; margin: 8vh auto 0; text-align: center; }
.login .stamp { margin: 14px 0 20px; }

.avatar-lg { width: 64px; height: 64px; border-radius: 50%; border: 2px solid var(--rule); }

dialog.modal {
  box-sizing: border-box;
  max-width: 560px;
  width: calc(100% - 32px);
  background: var(--paper);
  color: var(--ink);
  border: 3px double var(--ink);
  padding: 22px 24px;
  font-family: var(--font);
}

dialog.modal::backdrop { background: rgba(0, 0, 0, 0.6); }
dialog.modal h2 { margin-top: 0; }
.modal-text { white-space: pre-wrap; }
.modal-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 16px; flex-wrap: wrap; }

#toasts { position: fixed; right: 16px; top: 16px; z-index: 50; display: grid; gap: 8px; max-width: 360px; }

.toast {
  background: var(--paper);
  border: 2px solid var(--ink);
  border-left: 8px solid var(--rule);
  padding: 9px 14px;
  box-shadow: 0 6px 18px #0006;
  transition: opacity 0.4s, transform 0.4s;
}

.toast.ok { border-left-color: var(--ok); }
.toast.bad { border-left-color: var(--stamp); }
.toast.leaving { opacity: 0; transform: translateX(20px); }

.spinner { text-align: center; padding: 30px 0; color: var(--faded); }

.link-btn { background: none; border: 0; padding: 0; color: var(--stamp); text-decoration: underline; cursor: pointer; }

@media (max-width: 720px) {
  .sheet { margin: 0 -16px; padding: 24px 16px 34px; max-width: none; }
  .panel { padding: 18px 16px 22px; }
  .grid, .grid.three, .choice-grid, .sign { grid-template-columns: 1fr; }
  .row { grid-template-columns: 28px 1fr; }
  .row > .ok { grid-column: 2; padding-top: 0; }
  .shot { grid-template-columns: 28px 70px 1fr; }
  .shot > .ok { grid-column: 2 / -1; }
  .history li { grid-template-columns: 1fr; }
  .userchip { width: 100%; }
}

.print-only { display: none; }

@media print {
  @page { size: A4; margin: 0; }

  *, *::before, *::after { -webkit-print-color-adjust: exact; print-color-adjust: exact; }

  html, body { background: var(--paper) !important; }

  .topbar, .navbar, .bar, .no-print, #toasts, .page > .back, .tabs, .filters { display: none !important; }

  .page { padding: 0; max-width: none; }

  .sheet {
    margin: 0;
    max-width: none;
    box-shadow: none;
    padding: 12mm 14mm;
    border-top-width: 7px;
  }

  .sheet::before { display: none; }

  .print-only { display: block; }

  h2 { break-after: avoid; page-break-after: avoid; }
  .row, .shot, .person, .result-box, .sign { break-inside: avoid; page-break-inside: avoid; }

  input, select, textarea { background: transparent !important; }
  textarea { resize: none; overflow: visible; }
}

.vfield { min-width: 0; }
.vlabel { display: block; font-size: 0.85rem; color: var(--faded); }
.vfield.wide { grid-column: 1 / -1; }
.back { margin-bottom: 12px; }
.inline-form { display: flex; flex-wrap: wrap; gap: 10px 14px; align-items: end; }
.inline-form > * { flex: 1 1 180px; }
.avatar-cell { display: flex; gap: 10px; align-items: center; }
.avatar-cell img { width: 30px; height: 30px; border-radius: 50%; border: 1px solid var(--rule); }
.spec-list { display: flex; flex-wrap: wrap; gap: 4px; }
.kv { display: grid; grid-template-columns: 170px 1fr; gap: 6px 14px; margin: 8px 0; }
.kv dt { color: var(--faded); }
.kv dd { margin: 0; overflow-wrap: anywhere; }
.review-box { border: 2px solid var(--ink); padding: 14px 16px; margin-top: 24px; background: rgba(255, 255, 255, 0.25); }
.review-box h2 { margin-top: 0; }
@media (max-width: 720px) { .kv { grid-template-columns: 1fr; } }

.back a { color: var(--paper); }
.back { color: var(--paper); }
@media print { .back { display: none !important; } }

.doc-list { list-style: none; margin: 8px 0 0; padding: 0; }
.doc-list li { padding: 7px 0; border-bottom: 1px dotted var(--rule); }

.chips { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }
.chip { display: inline-flex; align-items: center; gap: 6px; padding: 4px 6px 4px 10px; border: 1px solid var(--ink); background: var(--paper-light); font-size: 0.9rem; }
.chip button { border: 0; background: transparent; cursor: pointer; font-size: 1.1rem; line-height: 1; padding: 0 4px; color: var(--stamp); }
.groups { border: 1px solid var(--rule); padding: 10px 14px; }
.group-row { display: grid; grid-template-columns: 1fr 150px; gap: 10px; align-items: center; margin: 6px 0; }
.site-footer { max-width: 980px; margin: 30px auto 0; padding: 14px 18px 28px; border-top: 1px dotted var(--rule); text-align: center; font-size: 0.78rem; color: var(--paper); opacity: 0.75; line-height: 1.5; }
.site-footer p { margin: 4px 0; }
@media print { .site-footer { display: none; } }

@media (max-width: 720px) {
  html { font-size: 16px; }
  html, body { overflow-x: hidden; }
  .topbar, .topbar-inner, .page, .panel, .nav, .tabs, main { min-width: 0; max-width: 100%; }
  .topbar-inner { flex-direction: column; align-items: stretch; gap: 8px; padding: 10px 12px; }
  .brand strong { font-size: 0.95rem; }
  .nav { display: flex; flex-wrap: nowrap; overflow-x: auto; overflow-y: hidden; gap: 4px; padding: 0; overscroll-behavior-x: contain; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
  .nav::-webkit-scrollbar, .tabs::-webkit-scrollbar { display: none; }
  .nav a { flex: 0 0 auto; white-space: nowrap; padding: 10px 12px; }
  .userchip { justify-content: space-between; }
  .page { padding: 12px 10px 24px; }
  input, select, textarea { font-size: 16px; min-height: 44px; }
  .btn { min-height: 44px; padding: 10px 14px; }
  .btn.small { min-height: 38px; }
  .actions { flex-wrap: wrap; }
  .actions > .btn { flex: 1 1 140px; text-align: center; }
  .filters { grid-template-columns: 1fr; }
  .tabs { flex-wrap: nowrap; overflow-x: auto; overflow-y: hidden; overscroll-behavior-x: contain; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
  .tab { flex: 0 0 auto; white-space: nowrap; padding: 10px 12px; }
  .group-row { grid-template-columns: 1fr; gap: 4px; }
  dialog.modal { width: calc(100vw - 20px); max-width: none; max-height: calc(100vh - 20px); overflow-y: auto; padding: 16px; margin: 10px auto; }
  .modal-actions { flex-wrap: wrap; }
  .modal-actions .btn { flex: 1 1 120px; }
  .table-wrap { overflow: visible; }
  table.list, table.list tbody, table.list tr, table.list td { display: block; width: 100%; }
  table.list thead { display: none; }
  table.list tr { border: 1px solid var(--rule); background: rgba(255, 255, 255, 0.25); padding: 8px 10px; margin-bottom: 10px; }
  table.list td { display: block; padding: 5px 0; border: 0; text-align: left; overflow-wrap: anywhere; }
  table.list td::before { content: attr(data-label); display: block; color: var(--faded); font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.04em; }
  table.list td:empty { display: none; }
  table.list td.right { text-align: left; }
  table.list td.right::before { display: none; }
  table.list td.right .btn { width: 100%; }
  .site-footer { padding: 14px 12px 28px; }
}

dialog.modal:has(.user-edit-dialog) { max-width: min(980px, 96vw); width: min(980px, 96vw); }
dialog.modal:has(.pdf-preview) { max-width: min(980px, 96vw); width: min(980px, 96vw); }
.pdf-toolbar { display: flex; justify-content: space-between; align-items: center; gap: 10px; margin-bottom: 8px; }
.pdf-zoom { display: flex; align-items: center; gap: 8px; }
.pdf-zoom-label { min-width: 52px; text-align: center; font-size: 0.85rem; }
.pdf-pages { height: 70vh; overflow: auto; background: #4a4a46; padding: 8px; -webkit-overflow-scrolling: touch; touch-action: pan-x pan-y pinch-zoom; overscroll-behavior: contain; }
.pdf-page { display: block; width: max-content; min-width: 100%; margin: 0 0 8px; color: #ddd; text-align: center; }
.pdf-canvas { display: block; background: #fff; max-width: none; margin: 0 auto; }
.pdf-sheet { position: relative; margin: 0 auto; }
.pdf-sheet .textLayer { position: absolute; inset: 0; overflow: clip; opacity: 1; line-height: 1; text-align: initial; -webkit-text-size-adjust: none; text-size-adjust: none; forced-color-adjust: none; transform-origin: 0 0; caret-color: CanvasText; z-index: 1; width: 100%; height: 100%; }
.pdf-sheet .textLayer :is(span, br) { color: transparent; position: absolute; white-space: pre; cursor: text; transform-origin: 0% 0%; }
.pdf-sheet .textLayer > :not(.markedContent), .pdf-sheet .textLayer .markedContent span:not(.markedContent) { z-index: 1; }
.pdf-sheet .textLayer ::selection { background: rgba(60, 110, 220, 0.35); color: transparent; }
.pdf-sheet .textLayer br::selection { background: transparent; }
.pdf-sheet .textLayer .endOfContent { display: block; position: absolute; inset: 100% 0 0; z-index: 0; cursor: default; user-select: none; }
.pdf-sheet .textLayer.selecting .endOfContent { top: 0; }
@media (max-width: 720px) { .pdf-pages { height: 62vh; padding: 4px; } }

.sheet > .recipient-stamp {
  position: absolute;
  top: 26px;
  left: 30px;
  max-width: 34%;
  display: flex;
  flex-direction: column;
  align-items: center;
  border: 3px double var(--stamp);
  color: var(--stamp);
  padding: 4px 10px;
  transform: rotate(-4deg);
  font-size: 0.85rem;
  text-align: center;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  line-height: 1.25;
  opacity: 0.92;
  z-index: 1;
}
.recipient-stamp small { font-size: 0.62rem; letter-spacing: 0.1em; }

.sheet > .balkenkreuz {
  position: absolute;
  top: 24px;
  right: 34px;
  width: 64px;
  height: 64px;
  background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-3 -3 106 106'><polygon points='42,42 30,0 70,0 58,42 100,30 100,70 58,58 70,100 30,100 42,58 0,70 0,30' fill='%231d1c18' stroke='%23e7e1ce' stroke-width='3' stroke-linejoin='round'/></svg>") center / contain no-repeat;
  opacity: 0.55;
  pointer-events: none;
}

@media (max-width: 720px) {
  .sheet > .recipient-stamp { position: static; align-self: flex-start; display: inline-flex; max-width: 70%; margin: 0 0 12px 6px; }
  .sheet > .balkenkreuz { width: 44px; height: 44px; top: 16px; right: 16px; }
}

.back .pill, .page > .pill, .bar .pill {
  background: var(--paper-light);
  color: var(--ink);
  border-width: 1px;
  font-weight: 700;
}
.back .pill.ok { background: #cfe0c8; color: var(--ok); }
.back .pill.bad { background: #ecd0cb; color: var(--stamp); }
.back .pill.wait { background: #ecdcb4; color: var(--warn); }
.back .pill.muted { background: var(--paper-light); color: var(--faded); }


:root {
  --cross-light: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 108 108'><polygon points='42,42 30,0 70,0 58,42 100,30 100,70 58,58 70,100 30,100 42,58 0,70 0,30' fill='%23ddd6bf' stroke='%23272b22' stroke-width='5' stroke-linejoin='round'/></svg>");
  --cross-ink: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 108 108'><polygon points='42,42 30,0 70,0 58,42 100,30 100,70 58,58 70,100 30,100 42,58 0,70 0,30' fill='%231d1c18'/></svg>");
  --cross-rust: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 108 108'><polygon points='42,42 30,0 70,0 58,42 100,30 100,70 58,58 70,100 30,100 42,58 0,70 0,30' fill='%237a2a22'/></svg>");
}

body {
  background-color: var(--desk);
  background-image:
    repeating-linear-gradient(45deg, rgba(255, 255, 255, 0.018) 0 2px, transparent 2px 7px),
    radial-gradient(ellipse at top, rgba(255, 255, 255, 0.05), transparent 60%);
  background-attachment: fixed;
}

.topbar { position: relative; border-bottom: 0; background: linear-gradient(180deg, #14170f, var(--desk-dark)); }
.topbar::before {
  content: "";
  display: block;
  height: 7px;
  background:
    linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.12) 50%, transparent),
    linear-gradient(180deg, var(--stamp) 0 3px, #0d0f0a 3px 4px, #8a846f 4px 5px, #0d0f0a 5px 7px);
}
.topbar-inner { flex-wrap: nowrap; justify-content: space-between; padding: 14px 16px; gap: 16px; }
.brand { flex-direction: row; align-items: center; gap: 14px; }
.brand-text { display: flex; flex-direction: column; line-height: 1.2; }
.brand strong { font-size: 1.15rem; letter-spacing: 0.08em; }
.brand-cross {
  flex: 0 0 auto;
  width: 46px;
  height: 46px;
  background: var(--cross-light) center / contain no-repeat;
  filter: drop-shadow(0 1px 0 #0008);
}
.navbar { border-top: 1px solid rgba(221, 214, 191, 0.18); border-bottom: 3px double var(--rule); background: rgba(0, 0, 0, 0.28); }
.navbar-inner { max-width: 1100px; margin: 0 auto; padding: 0 16px; }
.nav { flex: none; flex-wrap: wrap; justify-content: flex-start; gap: 0; }
.nav a {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 11px 16px;
  border: 0;
  border-bottom: 3px solid transparent;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  font-size: 0.82rem;
}
.nav a:hover { background: rgba(255, 255, 255, 0.05); border-bottom-color: var(--rule); }
.nav a[aria-current="page"] { background: rgba(255, 255, 255, 0.08); border-bottom-color: var(--stamp); }
.nav .count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 20px;
  height: 20px;
  margin: 0;
  padding: 0 6px;
  line-height: 1;
  border-radius: 10px;
  font-size: 0.72rem;
  font-variant-numeric: tabular-nums;
}
.userchip { flex: 0 0 auto; }

.panel > h1::after, .sheet h2::after { content: none; }
.panel > h1:first-child::after {
  content: "";
  display: block;
  width: 180px;
  height: 14px;
  margin-top: 8px;
  background:
    var(--cross-ink) center / 12px no-repeat,
    linear-gradient(var(--rule), var(--rule)) left center / calc(50% - 14px) 1px no-repeat,
    linear-gradient(var(--rule), var(--rule)) right center / calc(50% - 14px) 1px no-repeat;
  opacity: 0.7;
}
.panel::after {
  content: "";
  position: absolute;
  right: 14px;
  bottom: 12px;
  width: 96px;
  height: 96px;
  background: var(--cross-ink) center / contain no-repeat;
  opacity: 0.05;
  pointer-events: none;
}
.panel::before {
  content: "";
  position: absolute;
  inset: 8px;
  border: 1px solid var(--rule);
  opacity: 0.25;
  pointer-events: none;
}
.panel > * { position: relative; z-index: 1; }

.footer-ornament {
  height: 18px;
  margin: 0 auto 8px;
  max-width: 260px;
  background:
    var(--cross-light) center / 16px no-repeat,
    linear-gradient(var(--rule), var(--rule)) left center / calc(50% - 16px) 1px no-repeat,
    linear-gradient(var(--rule), var(--rule)) right center / calc(50% - 16px) 1px no-repeat;
}

.sheet::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 52%;
  width: 360px;
  height: 360px;
  transform: translate(-50%, -50%);
  background: var(--cross-ink) center / contain no-repeat;
  opacity: 0.035;
  pointer-events: none;
}

@media (max-width: 720px) {
  .topbar-inner { flex-direction: row; flex-wrap: wrap; align-items: center; padding: 10px 12px; gap: 8px; }
  .brand { gap: 10px; }
  .brand-cross { width: 34px; height: 34px; }
  .brand strong { font-size: 0.88rem; }
  .brand small { font-size: 0.62rem; }
  .navbar-inner { padding: 0 6px; }
  .nav { flex-wrap: nowrap; overflow-x: auto; overflow-y: hidden; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
  .nav::-webkit-scrollbar { display: none; }
  .nav a { padding: 12px 12px; flex: 0 0 auto; white-space: nowrap; }
  .panel::after { width: 64px; height: 64px; }
}

.announce-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; }
.announce-head h2 { margin: 0; }
.announce-list { display: grid; gap: 10px; margin-top: 12px; }
.announce { border: 1px solid var(--rule); border-left: 5px solid var(--faded); padding: 10px 14px; background: rgba(255, 255, 255, 0.25); }
.announce.pinned { border-left-color: var(--stamp); background: rgba(122, 42, 34, 0.08); }
.announce-top { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.announce-body { white-space: pre-wrap; margin: 6px 0; overflow-wrap: anywhere; }
.announce-foot { display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap; }

.booklet-section { margin-bottom: 22px; }
.booklet-id { display: grid; grid-template-columns: 64px 1fr; gap: 16px; align-items: start; }
.booklet-id img:not(.crest-img), .booklet-id .avatar-fallback { width: 64px; height: 64px; }
.booklet-list { list-style: none; margin: 8px 0 0; padding: 0; }
.booklet-list li { display: grid; grid-template-columns: 120px 1fr; gap: 12px; padding: 6px 0; border-bottom: 1px dotted var(--rule); }
.booklet-list .when { color: var(--faded); font-size: 0.85rem; }
@media (max-width: 720px) {
  .booklet-list li { grid-template-columns: 1fr; gap: 2px; }
  .booklet-id { grid-template-columns: 1fr; }
}

.places { display: grid; gap: 6px; }
.place-faction { font-size: 0.88rem; }
.place-subs { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 3px; padding-left: 12px; border-left: 2px solid var(--rule); }

.tpl-items { display: grid; gap: 12px; margin: 12px 0; }
.tpl-item { border: 1px solid var(--rule); padding: 10px 12px; background: rgba(255, 255, 255, 0.2); display: grid; gap: 8px; }
.tpl-item-head { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.tpl-item-head select { width: auto; }

.tpl-import { margin: 12px 0; padding: 8px 12px; border: 1px dashed var(--rule); }
.tpl-import summary { cursor: pointer; }
.tpl-import .btn { margin-top: 8px; }

.modal-text { white-space: pre-line; }

.trainee-row { display: grid; grid-template-columns: 1fr 1fr auto; gap: 12px; align-items: end; margin-bottom: 10px; }
@media (max-width: 640px) { .trainee-row { grid-template-columns: 1fr; } }
.check { display: flex; align-items: center; gap: 8px; margin: 12px 0; }
.check input { width: auto; }

.live-panel {
  background: var(--paper-light);
  border: 1px solid var(--rule);
  border-left: 4px solid var(--stamp);
  padding: 12px 14px;
  margin: 0 0 14px;
  display: grid;
  gap: 8px;
}
.live-panel[hidden] { display: none; }
@media (min-width: 1380px) {
  .live-panel { position: fixed; right: 18px; top: 150px; width: 270px; margin: 0; z-index: 20; box-shadow: 0 6px 18px rgba(0, 0, 0, 0.35); }
}
.live-title { letter-spacing: 0.08em; text-transform: uppercase; font-size: 0.8rem; color: var(--stamp); }
.live-viewers { display: flex; flex-wrap: wrap; gap: 6px; }
.live-chip { display: inline-flex; align-items: center; gap: 6px; font-size: 0.8rem; padding: 2px 8px; border: 1px solid var(--rule); background: var(--field); }
.live-chip .dot { width: 8px; height: 8px; border-radius: 50%; background: var(--faded); display: inline-block; }
.live-chip.edit .dot { background: var(--ok); }
.live-chip.view .dot { background: var(--warn); }
.live-note { border: 1px dashed var(--stamp); background: rgba(122, 42, 34, 0.08); padding: 8px 10px; }
.live-note p { margin: 4px 0 0; white-space: pre-wrap; }
.live-note-from { font-size: 0.75rem; color: var(--stamp); text-transform: uppercase; letter-spacing: 0.06em; }
.live-label { display: block; font-size: 0.78rem; letter-spacing: 0.06em; text-transform: uppercase; color: var(--faded); margin-bottom: 4px; }
.live-composer textarea { width: 100%; }

.shots { margin-top: 18px; }
.cap-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 12px; margin: 10px 0; }
.cap { margin: 0; border: 1px solid var(--rule); background: var(--paper-light); padding: 6px; break-inside: avoid; }
.cap-open { display: block; width: 100%; padding: 0; border: 0; background: none; cursor: zoom-in; }
.cap img { display: block; width: 100%; height: 150px; object-fit: cover; }
.cap figcaption { display: grid; gap: 6px; padding-top: 6px; font-size: 0.85rem; }
.cap-caption { width: 100%; }
.cap-full img { max-width: 100%; max-height: 70vh; display: block; margin: 0 auto; }
@media print { .cap img { height: auto; max-height: 260px; object-fit: contain; } }

.backup-box { display: grid; gap: 6px; border: 1px dashed var(--rule); padding: 10px 14px; margin: 12px 0; background: var(--field); }

.journal-filters { display: grid; gap: 12px; margin: 14px 0 6px; }
.chips { display: flex; flex-wrap: wrap; gap: 6px; }
.chip { font: inherit; font-size: 0.82rem; padding: 4px 10px; border: 1px solid var(--rule); background: var(--field); color: var(--ink); cursor: pointer; }
.chip:hover { border-color: var(--stamp); }
.chip.on { background: var(--ink); color: var(--paper-light); border-color: var(--ink); }
.timeline { display: grid; gap: 0; margin-top: 8px; }
.day { margin: 18px 0 6px; font-size: 0.9rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--stamp); border-bottom: 1px solid var(--rule); padding-bottom: 4px; }
.event { display: grid; grid-template-columns: 34px 1fr; gap: 12px; padding: 10px 0; border-bottom: 1px dotted var(--rule); }
.event-mark { width: 30px; height: 30px; border: 2px solid var(--ink); border-radius: 50%; display: grid; place-items: center; font-weight: bold; font-size: 0.8rem; background: var(--paper-light); }
.event-line { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.event-details { list-style: none; margin: 6px 0 0; padding: 6px 10px; border-left: 3px solid var(--rule); display: grid; gap: 2px; font-size: 0.82rem; background: var(--field); }
.event-details .k { color: var(--faded); margin-right: 6px; text-transform: capitalize; }
.event-details .k::after { content: ' :'; }
.pill.info { color: var(--ink); }

.help {
  position: relative;
  display: inline-grid;
  place-items: center;
  width: 17px;
  height: 17px;
  margin-left: 6px;
  border: 1px solid var(--faded);
  border-radius: 50%;
  font-size: 0.7rem;
  line-height: 1;
  color: var(--faded);
  background: var(--paper-light);
  cursor: help;
  vertical-align: 1px;
  user-select: none;
}
.help:hover, .help:focus-visible, .help.open { border-color: var(--stamp); color: var(--stamp); outline: none; }
.help::after {
  content: attr(data-tip);
  position: absolute;
  z-index: 40;
  left: 50%;
  bottom: calc(100% + 8px);
  transform: translateX(-50%) translateY(4px);
  width: max-content;
  max-width: min(270px, 78vw);
  padding: 8px 10px;
  background: var(--ink);
  color: var(--paper-light);
  border-left: 3px solid var(--stamp);
  font-size: 0.78rem;
  line-height: 1.35;
  text-align: left;
  letter-spacing: 0;
  text-transform: none;
  white-space: normal;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.14s ease, transform 0.14s ease;
}
.help:hover::after, .help:focus-visible::after, .help.open::after { opacity: 1; transform: translateX(-50%) translateY(0); }

.spinner { display: flex; align-items: center; justify-content: center; gap: 12px; }
.spin-cross {
  width: 26px;
  height: 26px;
  background: var(--cross-ink) center / contain no-repeat;
  animation: cross-spin 1.6s cubic-bezier(0.6, 0.1, 0.3, 0.9) infinite;
}
@keyframes cross-spin { 0% { transform: rotate(0); } 60%, 100% { transform: rotate(360deg); } }

body {
  background-image:
    linear-gradient(rgba(255, 255, 255, 0.032) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255, 255, 255, 0.032) 1px, transparent 1px),
    repeating-linear-gradient(45deg, rgba(255, 255, 255, 0.018) 0 2px, transparent 2px 7px),
    radial-gradient(ellipse at top, rgba(255, 255, 255, 0.05), transparent 60%);
  background-size: 96px 96px, 96px 96px, auto, auto;
}

.sheet {
  background-color: var(--paper);
  background-image:
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='260' height='260'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.36  0 0 0 0 0.27  0 0 0 0 0.12  0 0 0 0.1 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>"),
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='600' height='600'><filter id='m'><feTurbulence type='fractalNoise' baseFrequency='0.012' numOctaves='2' seed='4'/><feColorMatrix values='0 0 0 0 0.55  0 0 0 0 0.4  0 0 0 0 0.15  0 0 0 0.16 0'/></filter><rect width='100%' height='100%' filter='url(%23m)'/></svg>"),
    linear-gradient(180deg, transparent calc(33.3% - 1px), rgba(0, 0, 0, 0.05) 33.3%, rgba(255, 255, 255, 0.22) calc(33.3% + 1px), transparent calc(33.3% + 2px)),
    linear-gradient(180deg, transparent calc(66.6% - 1px), rgba(0, 0, 0, 0.045) 66.6%, rgba(255, 255, 255, 0.2) calc(66.6% + 1px), transparent calc(66.6% + 2px));
  box-shadow:
    inset 0 0 70px rgba(150, 105, 38, 0.24),
    inset 0 0 14px rgba(120, 80, 25, 0.22),
    0 2px 0 #0003,
    0 18px 40px #0005;
}

.sheet::after {
  content: "";
  position: absolute;
  left: 16px;
  top: 0;
  bottom: 0;
  width: 20px;
  pointer-events: none;
  background:
    radial-gradient(circle at 10px 28%, #1c1f19 0 5.5px, rgba(0, 0, 0, 0.4) 5.5px 7px, transparent 7.5px),
    radial-gradient(circle at 10px 72%, #1c1f19 0 5.5px, rgba(0, 0, 0, 0.4) 5.5px 7px, transparent 7.5px);
}

.waffen-band {
  position: absolute !important;
  left: 0;
  top: 0;
  bottom: 0;
  width: 9px;
  background: var(--w);
  box-shadow: inset -2px 0 0 rgba(0, 0, 0, 0.25), inset 1px 0 0 rgba(255, 255, 255, 0.3);
  z-index: 2;
}
.waffen-label {
  position: absolute;
  left: 14px;
  bottom: 18px;
  transform-origin: left bottom;
  transform: rotate(-90deg) translateX(0);
  font-size: 0.62rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--faded);
  white-space: nowrap;
  opacity: 0;
}

.received-stamp {
  position: absolute !important;
  right: 40px;
  top: 98px;
  width: 112px;
  height: 112px;
  color: #2c4a86;
  opacity: 0.78;
  transform: rotate(12deg);
  mix-blend-mode: multiply;
  pointer-events: none;
  z-index: 1;
  animation: stamp-press 0.7s cubic-bezier(0.2, 0.8, 0.3, 1.1) both;
}
.received-svg { display: block; width: 100%; height: 100%; }

.decision-stamp {
  position: absolute !important;
  right: 26px;
  bottom: 178px;
  border: 4px solid currentColor;
  padding: 4px 16px;
  font-size: 1.45rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  transform: rotate(-13deg);
  opacity: 0.72;
  mix-blend-mode: multiply;
  pointer-events: none;
  z-index: 1;
  box-shadow: inset 0 0 0 2px var(--paper), inset 0 0 0 3px currentColor;
  animation: stamp-press 0.75s cubic-bezier(0.2, 0.8, 0.3, 1.1) 0.25s both;
}
.decision-stamp.ok { color: var(--ok); }
.decision-stamp.bad { color: var(--stamp); }
.decision-stamp.muted { color: var(--faded); }

@keyframes stamp-press {
  0% { opacity: 0; filter: blur(2px); translate: 0 -26px; scale: 2.3; }
  58% { opacity: 0.95; filter: blur(0); translate: 0 0; scale: 0.9; }
  76% { scale: 1.05; }
  100% { opacity: var(--rest, 0.78); scale: 1; }
}

.sheet .stamp.ok {
  mix-blend-mode: multiply;
  opacity: 0.88;
  animation: stamp-press-flat 0.7s cubic-bezier(0.2, 0.8, 0.3, 1.1) both;
  text-shadow: 0 0 1px currentColor;
}
@keyframes stamp-press-flat {
  0% { opacity: 0; filter: blur(2px); transform: rotate(-10deg) translateY(-24px) scale(2.4); }
  58% { opacity: 1; filter: blur(0); transform: rotate(6deg) translateY(0) scale(0.9); }
  76% { transform: rotate(6deg) scale(1.06); }
  100% { opacity: 0.88; transform: rotate(6deg) scale(1); }
}

@media (prefers-reduced-motion: reduce) {
  .received-stamp, .decision-stamp, .sheet .stamp.ok, .spin-cross { animation: none; }
}

.collar-patch {
  display: inline-flex;
  flex-direction: column;
  justify-content: center;
  gap: 4px;
  width: 38px;
  height: 22px;
  margin-right: 12px;
  padding: 0 4px;
  background: var(--w);
  border: 1px solid rgba(0, 0, 0, 0.55);
  clip-path: polygon(0 0, 100% 14%, 100% 86%, 0 100%);
  vertical-align: 3px;
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.25);
}
.collar-patch i { display: block; height: 3px; background: repeating-linear-gradient(90deg, #cfcab6 0 5px, #8d8873 5px 6px); opacity: 0.95; }
.welcome-title { display: block; }

.resume {
  display: flex;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
  max-width: 1100px;
  margin: 14px auto 0;
  padding: 12px 18px;
  background: var(--paper-light);
  border: 1px solid var(--rule);
  border-left: 6px solid var(--stamp);
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.3);
  position: relative;
}
.resume[hidden] { display: none; }
.resume::after {
  content: "";
  position: absolute;
  left: 22px;
  top: -9px;
  width: 54px;
  height: 18px;
  background: rgba(214, 197, 150, 0.8);
  transform: rotate(-3deg);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);
}
.resume-tag { text-transform: uppercase; letter-spacing: 0.16em; font-size: 0.78rem; color: var(--stamp); }
.resume-text { flex: 1; min-width: 200px; display: grid; gap: 2px; }

.announce {
  position: relative;
  border: 1px solid var(--rule);
  border-left: 1px solid var(--rule);
  padding: 12px 16px 12px 40px;
  background:
    repeating-linear-gradient(0deg, transparent 0 25px, rgba(60, 50, 20, 0.07) 25px 26px),
    #e9e2c8;
  box-shadow: 0 2px 0 rgba(0, 0, 0, 0.12);
}
.announce::before {
  content: "Funkspruch · Eingang";
  display: block;
  margin-bottom: 4px;
  font-size: 0.66rem;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--faded);
}
.announce::after {
  content: "";
  position: absolute;
  left: 9px;
  top: 8px;
  bottom: 8px;
  width: 14px;
  background: radial-gradient(circle at 7px 7px, rgba(0, 0, 0, 0.5) 0 3px, transparent 3.5px) 0 0 / 14px 16px repeat-y;
}
.announce.pinned { border-color: var(--stamp); background: repeating-linear-gradient(0deg, transparent 0 25px, rgba(122, 42, 34, 0.08) 25px 26px), #ebdfc7; }
.announce.pinned::before { content: "Dringend · Befehl"; color: var(--stamp); }

.login-stage {
  min-height: calc(100vh - 160px);
  display: grid;
  place-items: center;
  padding: 30px 14px 50px;
}
.login-cover {
  position: relative;
  width: min(480px, 100%);
  padding: 34px 34px 28px;
  text-align: center;
  color: #d9c995;
  background:
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 0.28 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>"),
    linear-gradient(160deg, #3c4333, #262b20 70%);
  border-radius: 6px;
  box-shadow: 0 0 0 1px #0007, 0 24px 60px rgba(0, 0, 0, 0.6), inset 0 0 0 1px rgba(255, 255, 255, 0.07);
}
.login-stitch { position: absolute; inset: 10px; border: 1.5px dashed rgba(217, 201, 149, 0.45); border-radius: 3px; pointer-events: none; }
.login-top { margin: 0; font-size: 0.74rem; letter-spacing: 0.22em; text-transform: uppercase; opacity: 0.8; }
.login-emblem { width: 190px; height: 190px; margin: 18px auto 14px; padding: 8px; border-radius: 50%; background: #1b1e16; box-shadow: 0 0 0 2px rgba(217, 201, 149, 0.55), 0 8px 24px rgba(0, 0, 0, 0.55); display: grid; place-items: center; }
.login-emblem img { width: 168px; height: 168px; border-radius: 50%; display: block; object-fit: cover; }
.login-cover h1 { margin: 6px 0 4px; font-size: 1.7rem; font-weight: normal; letter-spacing: 0.08em; color: #ecdca6; text-shadow: 0 1px 0 #000, 0 -1px 0 rgba(255, 255, 255, 0.18); border: 0; }
.login-tagline { margin: 0; font-style: italic; opacity: 0.85; }
.login-rule { display: flex; align-items: center; justify-content: center; gap: 10px; margin: 16px 0; }
.login-rule i { flex: 1; height: 1px; background: linear-gradient(90deg, transparent, rgba(217, 201, 149, 0.6)); }
.login-rule i:last-child { background: linear-gradient(90deg, rgba(217, 201, 149, 0.6), transparent); }
.login-rule b { width: 18px; height: 18px; background: var(--cross-light) center / contain no-repeat; }
.login-text { margin: 0 0 16px; opacity: 0.88; }
.login-button { display: inline-block; }
.login-seal { display: block; width: max-content; margin: 18px auto 4px; padding: 3px 12px; border: 2px solid #b7473a; color: #d9695a; transform: rotate(-4deg); letter-spacing: 0.08em; font-size: 0.82rem; opacity: 0.85; }
.login-doc { margin: 14px 0 0; font-size: 0.8rem; opacity: 0.8; }
.login-doc a { color: #ecdca6; }
.login-cover .callout { text-align: left; }

@media (max-width: 720px) {
  .sheet::after, .waffen-band { display: none; }
  .received-stamp { right: 10px; top: 70px; width: 78px; height: 78px; }
  .received-stamp svg { width: 78px; height: 78px; }
  .decision-stamp { right: 12px; bottom: 150px; font-size: 1.05rem; border-width: 3px; }
  .resume::after { display: none; }
}

@media print {
  .sheet {
    box-shadow: inset 0 0 70px rgba(150, 105, 38, 0.24), inset 0 0 14px rgba(120, 80, 25, 0.22);
  }
  .waffen-band { position: fixed !important; left: 0; top: 0; bottom: 0; width: 9px; z-index: 5; }
  .received-stamp, .decision-stamp { animation: none; opacity: 0.85; }
  .insignia { filter: none; }
  .sheet .stamp.ok { animation: none; }
  .sheet::before { display: block; inset: 4mm; }
}

.insignia { display: inline-flex; vertical-align: middle; flex: 0 0 auto; filter: drop-shadow(0 1px 1px rgba(0, 0, 0, 0.35)); }
.insignia svg { display: block; width: 100%; height: auto; }
.insignia.sm { width: 28px; }
.insignia.md { width: 42px; }
.insignia.lg { width: 62px; }
.welcome-title .insignia, .welcome-title .collar-patch { margin-right: 14px; vertical-align: middle; }
.welcome-title .insignia { width: 58px; }
.userchip .insignia { width: 40px; margin-right: 2px; }
.booklet-id .insignia { margin-top: 8px; }
.grade-line { display: inline-flex; align-items: center; gap: 10px; }
.booklet-list .insignia { margin: 0 4px 0 2px; }
.booklet-portrait { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; }
@media (max-width: 720px) {
  .userchip .insignia { display: none; }
}
.kv { align-items: center; }
.insignia.k-disc svg { width: 62%; margin: 0 auto; }
.insignia.k-chevron svg { width: 82%; margin: 0 auto; }
.insignia.k-disc, .insignia.k-chevron { justify-content: center; }
.pager { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 8px; margin-top: 18px; }
.pager[hidden] { display: none; }
.pager-info { padding: 0 10px; font-size: 0.9rem; color: var(--faded); }
.journal-size select { width: auto; min-width: 140px; }

.rot-field { position: relative; }
.rot-add {
  position: absolute;
  top: -2px;
  right: 0;
  width: 26px;
  height: 26px;
  padding: 0;
  border: 1px solid transparent;
  border-radius: 50%;
  background: transparent;
  color: #b3262a;
  font-size: 1rem;
  line-height: 1;
  cursor: pointer;
  opacity: 0;
  transition: opacity 0.15s, background 0.15s;
}
.rot-field:hover > .rot-add, .rot-field:focus-within > .rot-add, .rot-add:focus-visible { opacity: 1; }
.rot-add:hover { background: rgba(179, 38, 42, 0.12); border-color: rgba(179, 38, 42, 0.4); }
@media (hover: none) { .rot-add { opacity: 0.7; } }
.rot-flag::before {
  content: "";
  position: absolute;
  left: -13px;
  top: 3px;
  bottom: 3px;
  width: 3px;
  border-radius: 2px;
  background: #b3262a;
  box-shadow: 0 0 0 1px rgba(179, 38, 42, 0.15);
}
.rot-flag > .vlabel, label.rot-flag { text-decoration: underline wavy rgba(179, 38, 42, 0.55); text-decoration-thickness: 1px; text-underline-offset: 4px; }
.rot-flag input, .rot-flag select, .rot-flag textarea, .rot-flag .value { border-color: rgba(179, 38, 42, 0.55); }

.rot-notes { grid-column: 1 / -1; display: grid; gap: 8px; margin: 2px 0 6px; }
.rot-note, .rot-compose, .rot-summary {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 8px 12px;
  color: #a31f24;
  background: rgba(179, 38, 42, 0.07);
  border-left: 3px solid #b3262a;
  border-radius: 2px 6px 6px 2px;
  font-family: "Segoe Script", "Bradley Hand", "Lucida Handwriting", "Comic Sans MS", cursive;
  transform: rotate(-0.4deg);
}
.rot-note:nth-child(even) { transform: rotate(0.35deg); }
.rot-note p { margin: 0; font-size: 0.98rem; line-height: 1.35; overflow-wrap: anywhere; }
.rot-note small, .rot-summary small { display: block; margin-top: 3px; font-family: inherit; font-size: 0.72rem; opacity: 0.75; }
.rot-note.done { color: #7b7a6c; background: rgba(0, 0, 0, 0.04); border-left-color: #8d8873; }
.rot-note.done p { text-decoration: line-through; text-decoration-color: rgba(179, 38, 42, 0.5); }
.rot-pencil { flex: 0 0 auto; font-size: 1.15rem; line-height: 1.2; }
.rot-body { flex: 1 1 auto; min-width: 0; }
.rot-actions { display: flex; flex-wrap: wrap; gap: 6px; align-items: flex-start; font-family: var(--font-body, inherit); }
.rot-compose { transform: none; background: rgba(255, 255, 255, 0.35); }
.rot-compose textarea { flex: 1 1 auto; min-height: 52px; font-family: inherit; color: #8f1a1f; background: transparent; border: 1px dashed rgba(179, 38, 42, 0.5); resize: vertical; }
.rot-summary { transform: none; align-items: center; margin-bottom: 10px; }
.rot-summary.ok { color: #3d5a27; background: rgba(61, 90, 39, 0.08); border-left-color: #3d5a27; }
.rot-top { margin: 0 0 8px; }
.rot-general { margin-bottom: 8px; color: #a31f24; }
@media print { .rot-top, .rot-notes, .rot-add { display: none !important; } .rot-flag::before { display: none; } .rot-flag > .vlabel, label.rot-flag { text-decoration: none; } }

.dock-toggle {
  position: fixed;
  right: 0;
  top: 46%;
  z-index: 60;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  padding: 12px 7px;
  background: var(--desk-dark, #20231a);
  color: var(--paper, #e9e2cd);
  border: 1px solid var(--rule, #8a846f);
  border-right: 0;
  border-radius: 8px 0 0 8px;
  cursor: pointer;
  font-family: inherit;
  box-shadow: -2px 2px 10px rgba(0, 0, 0, 0.35);
}
.dock-toggle b { writing-mode: vertical-rl; font-weight: normal; font-size: 0.78rem; letter-spacing: 0.12em; text-transform: uppercase; }
.dock-toggle span { font-size: 1.1rem; }
.dock-toggle.on { display: none; }
.dock {
  position: fixed;
  right: 0;
  top: 0;
  bottom: 0;
  width: 340px;
  z-index: 70;
  display: none;
  flex-direction: column;
  background: var(--paper, #e9e2cd);
  border-left: 2px solid var(--stamp, #8f2d2d);
  box-shadow: -6px 0 24px rgba(0, 0, 0, 0.4);
}
.dock.open { display: flex; }
.dock-head { display: flex; align-items: center; justify-content: space-between; padding: 12px 14px; border-bottom: 1px solid var(--rule, #8a846f); letter-spacing: 0.06em; text-transform: uppercase; }
.dock-close { border: 1px solid var(--rule, #8a846f); background: transparent; width: 28px; height: 28px; cursor: pointer; font-size: 1.1rem; line-height: 1; }
.dock-undo { padding: 0 14px; }
.dock-undo:not(:empty) { padding: 10px 14px 0; }
.dock-body { flex: 1 1 auto; overflow-y: auto; padding: 4px 14px 24px; }
.dock-day { margin: 16px 0 6px; font-size: 0.74rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--faded, #6b6652); }
.dock-entry { display: flex; gap: 10px; padding: 9px 8px; border-radius: 6px; border: 1px solid transparent; }
.dock-entry:hover { background: rgba(0, 0, 0, 0.04); border-color: rgba(0, 0, 0, 0.08); }
.dock-entry.current { background: rgba(143, 45, 45, 0.06); border-color: rgba(143, 45, 45, 0.2); }
.dock-avatar { flex: 0 0 auto; width: 28px; height: 28px; border-radius: 50%; display: grid; place-items: center; color: #f3ecd6; font-size: 0.8rem; }
.dock-avatar.flag { background: transparent; color: var(--stamp, #8f2d2d); border: 1px solid currentColor; font-size: 0.7rem; }
.dock-main { min-width: 0; flex: 1 1 auto; }
.dock-who { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px; font-size: 0.9rem; }
.dock-badge { margin-left: 6px; padding: 0 6px; font-size: 0.66rem; letter-spacing: 0.08em; text-transform: uppercase; background: var(--stamp, #8f2d2d); color: #f3ecd6; border-radius: 3px; }
.dock-sum { margin-top: 2px; font-size: 0.86rem; overflow-wrap: anywhere; }
.dock-actions { display: flex; flex-wrap: wrap; gap: 4px 12px; margin-top: 4px; }
.dock-link { border: 0; padding: 0; background: none; color: var(--stamp, #8f2d2d); text-decoration: underline; cursor: pointer; font: inherit; font-size: 0.8rem; }
.dock-diff { list-style: none; margin: 8px 0 0; padding: 8px 10px; background: rgba(255, 255, 255, 0.4); border: 1px dashed var(--rule, #8a846f); font-size: 0.8rem; }
.dock-diff[hidden] { display: none; }
.dock-diff li + li { margin-top: 6px; }
.dock-diff .k { display: block; color: var(--faded, #6b6652); font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.04em; }
.dock-diff del { color: #a31f24; text-decoration-thickness: 1px; overflow-wrap: anywhere; }
.dock-diff ins { color: #35602a; text-decoration: none; font-weight: bold; overflow-wrap: anywhere; }
@media (min-width: 1360px) { body.dock-open main { padding-right: 350px; } }
@media (max-width: 720px) { .dock { width: 100%; } .dock-toggle { top: auto; bottom: 74px; } }
@media print { .dock, .dock-toggle { display: none !important; } body.dock-open main { padding-right: 0; } }
.dock-quote { margin-top: 4px; font-size: 0.8rem; font-style: italic; color: #a31f24; overflow-wrap: anywhere; }

.toast.undo { display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 8px 12px; position: relative; overflow: hidden; border-left-color: var(--warn); padding-bottom: 14px; }
.toast.undo .undo-bar { position: absolute; left: 0; bottom: 0; height: 4px; width: 100%; background: var(--stamp); transform-origin: left; animation: undo-run linear forwards; }
@keyframes undo-run { from { transform: scaleX(1); } to { transform: scaleX(0); } }

.typed-input { width: 100%; margin-top: 6px; font-family: var(--font); letter-spacing: 0.12em; text-transform: uppercase; }
.typed-word { letter-spacing: 0.12em; color: var(--stamp); }
dialog.modal .btn:disabled { opacity: 0.45; cursor: not-allowed; }

.maint-banner { background: var(--stamp); color: #f3ead2; text-align: center; padding: 9px 16px; font-size: 0.95rem; letter-spacing: 0.02em; border-bottom: 3px solid #14170f; }
.maint-banner[hidden] { display: none; }

.status.offline { color: var(--stamp); font-weight: bold; }

.stat-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 16px; margin-bottom: 16px; }
.stat-card h2 { margin-top: 0; font-size: 1.05rem; }
.stat-row { display: flex; justify-content: space-between; gap: 14px; padding: 6px 0; border-bottom: 1px dotted var(--rule); }
.stat-row:last-of-type { border-bottom: 0; }
.stat-label { color: var(--faded); }
.stat-value { text-align: right; font-weight: bold; overflow-wrap: anywhere; }
.stat-value.ok { color: var(--ok); }
.stat-value.warn { color: var(--warn); }
.stat-value.bad { color: var(--stamp); }
.meter { height: 12px; border: 2px solid var(--ink); background: var(--field); margin: 8px 0 4px; }
.meter i { display: block; height: 100%; background: var(--ok); }
.meter i.warn { background: var(--warn); }
.meter i.bad { background: var(--stamp); }
.maint-panel.on { border-color: var(--stamp); }

@media (max-width: 640px) {
  .stat-row { flex-direction: column; gap: 2px; }
  .stat-value { text-align: left; }
}

.error-list { list-style: none; margin: 8px 0 0; padding: 0; display: grid; gap: 8px; }
.error-list li { border-left: 4px solid var(--stamp); padding: 2px 0 2px 10px; overflow-wrap: anywhere; }
.check-row { display: flex; gap: 10px; align-items: flex-start; padding: 6px 0; border-bottom: 1px dotted var(--rule); }
.check-row .pill { flex: none; margin-top: 2px; }
.check-row .small { overflow-wrap: anywhere; }
.stat-card code { overflow-wrap: anywhere; word-break: break-all; }

.role-pick { display: grid; gap: 2px; max-height: 360px; overflow: auto; margin: 10px 0; border: 1px solid var(--rule); padding: 6px; }
.role-line { display: grid; grid-template-columns: auto 1fr; gap: 2px 10px; padding: 5px 4px; border-bottom: 1px dotted var(--rule); cursor: pointer; }
.role-line .small { grid-column: 2; }
.role-line.done { opacity: 0.55; cursor: default; }
.role-name { font-weight: bold; overflow-wrap: anywhere; }
tr.row-bad td { background: rgba(122, 42, 34, 0.14); }
.table-wrap { overflow-x: auto; }

.profile-list { display: grid; gap: 14px; margin: 14px 0; }
.profile-card { border: 1px solid var(--rule); background: var(--field); padding: 12px 14px; }
.profile-card.main { border-color: var(--ink); box-shadow: inset 4px 0 0 var(--stamp); }
.profile-card-head { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin-bottom: 10px; }
.profile-card-head .check-inline { margin-left: auto; display: inline-flex; align-items: center; gap: 6px; font-size: 0.9rem; cursor: pointer; }
.profile-add summary { display: inline-block; cursor: pointer; }
.soldbuch-profiles { display: grid; gap: 10px; margin: 12px 0; }
.soldbuch-profile { border: 1px solid var(--rule); padding: 10px 12px; background: var(--field); display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.soldbuch-profile.main { border-color: var(--ink); }

.navbar-inner { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.search-box { position: relative; margin-left: auto; flex: 0 1 220px; min-width: 150px; }
.search-input { width: 100%; padding: 6px 10px; font: inherit; font-size: 0.85rem; border: 1px solid var(--rule); background: rgba(255, 255, 255, 0.08); color: var(--paper); }
.search-input::placeholder { color: rgba(255, 255, 255, 0.55); }
.search-panel { position: absolute; right: 0; top: calc(100% + 4px); width: min(420px, 92vw); max-height: 70vh; overflow: auto; z-index: 40; background: var(--paper-light, #ebe6d2); color: var(--ink); border: 1px solid var(--ink); box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35); }
.search-group h4 { margin: 0; padding: 6px 12px; font-size: 0.72rem; letter-spacing: 0.08em; text-transform: uppercase; background: rgba(0, 0, 0, 0.08); }
.search-group a { display: flex; flex-direction: column; padding: 8px 12px; color: inherit; text-decoration: none; border-bottom: 1px dashed var(--rule); }
.search-group a:hover, .search-group a:focus { background: rgba(0, 0, 0, 0.07); }
.search-group a small { color: var(--ink-soft, #6b6757); }
.search-empty { margin: 0; padding: 12px; font-size: 0.9rem; }
@media (max-width: 720px) { .search-box { flex: 1 1 100%; margin-left: 0; order: 3; } }

.event-body { min-width: 0; }
.event-details li { overflow-wrap: anywhere; word-break: break-word; }
.event-details { max-width: 100%; }
.navbar-inner .nav { flex: 1 1 520px; min-width: 0; }

.rate-cell { width: 30%; }
.rate { display: block; height: 8px; background: rgba(0, 0, 0, 0.12); border: 1px solid var(--rule); }
.rate i { display: block; height: 100%; background: #4f6b2f; }
.bars { display: grid; grid-template-columns: repeat(12, 1fr); gap: 6px; align-items: end; height: 190px; padding: 8px 0 0; border-bottom: 1px solid var(--ink); }
.bars-col { display: flex; flex-direction: column; justify-content: flex-end; align-items: stretch; height: 100%; min-width: 0; }
.bars-stack { flex: 1; display: flex; align-items: flex-end; gap: 2px; }
.bars-stack i { flex: 1; min-height: 2px; display: block; }
.bars-col span { text-align: center; font-size: 0.68rem; color: var(--faded); margin-top: 4px; white-space: nowrap; }
.bars-legend { display: flex; flex-wrap: wrap; gap: 14px; margin: 6px 0 10px; font-size: 0.82rem; }
.bars-legend i { display: inline-block; width: 11px; height: 11px; margin-right: 6px; vertical-align: -1px; }
.s1 { background: #2b4a8a; }
.s2 { background: #8a2a2a; }
.s3 { background: #4f6b2f; }
.bars-table { margin-top: 12px; }
.bars-table summary { cursor: pointer; font-size: 0.85rem; }

.admin-page .page { padding: 0; max-width: none; }

.cal-form label.wide { grid-column: 1 / -1; }
.cal-form input, .cal-form select, .cal-form textarea { width: 100%; box-sizing: border-box; }
@media (max-width: 560px) { .cal-form { grid-template-columns: minmax(0, 1fr); } }
.cal-bar { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 10px; margin: 10px 0; }
.cal-bar .actions { align-items: center; margin: 0; }
.cal-title { margin-left: 8px; text-transform: capitalize; }
.cal-grid { display: grid; grid-template-columns: 44px repeat(7, minmax(0, 1fr)); border: 1px solid var(--ink); background: var(--paper-light); }
.cal-head { height: 30px; display: flex; align-items: center; justify-content: center; font-size: 0.8rem; font-weight: 700; text-transform: capitalize; border-bottom: 1px solid var(--ink); background: var(--paper); }
.cal-axis { position: relative; }
.cal-axis span { position: absolute; right: 4px; transform: translateY(-50%); font-size: 0.7rem; color: var(--faded); }
.cal-day { border-left: 1px solid rgba(0, 0, 0, 0.25); min-width: 0; }
.cal-day.today .cal-head { background: var(--ink); color: var(--paper-light); }
.cal-col { position: relative; overflow: hidden; background-image: repeating-linear-gradient(to bottom, transparent 0, transparent calc(var(--hour, 36px) - 1px), rgba(0, 0, 0, 0.12) calc(var(--hour, 36px) - 1px), rgba(0, 0, 0, 0.12) var(--hour, 36px)); }
.cal-off { position: absolute; left: 0; right: 0; background: repeating-linear-gradient(45deg, rgba(0, 0, 0, 0.12) 0 4px, rgba(0, 0, 0, 0.04) 4px 8px); }
.cal-margin { position: absolute; left: 0; right: 0; background: rgba(0, 0, 0, 0.07); }
.cal-event { position: absolute; box-sizing: border-box; display: flex; flex-direction: column; gap: 1px; padding: 2px 4px; overflow: hidden; text-align: left; font: inherit; font-size: 0.72rem; line-height: 1.15; color: #fff; background: var(--c); border: 1px solid rgba(0, 0, 0, 0.5); border-left: 4px solid rgba(0, 0, 0, 0.45); cursor: pointer; }
.cal-event strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cal-event.ended { opacity: 0.55; }
.cal-event.mine { outline: 2px solid #f2c94c; outline-offset: -2px; }
.cal-agenda { display: none; }
.cal-agenda .cal-event { position: static; width: 100%; height: auto; margin: 4px 0; padding: 8px 10px; font-size: 0.9rem; }
.cal-agenda-day h3 { margin: 12px 0 4px; text-transform: capitalize; }
.cal-agenda-day.today h3 { text-decoration: underline; }
.cal-legend { display: flex; flex-wrap: wrap; gap: 6px 14px; margin-top: 10px; font-size: 0.8rem; }
.cal-dot { display: inline-block; width: 10px; height: 10px; margin-right: 6px; border: 1px solid rgba(0, 0, 0, 0.5); vertical-align: middle; }
.cal-signups { list-style: none; margin: 0; padding: 0; }
.cal-signups li { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 3px 0; border-bottom: 1px dotted rgba(0, 0, 0, 0.3); }
.cal-desc { white-space: pre-wrap; }
@media (max-width: 720px) {
  .cal-grid { display: none; }
  .cal-agenda { display: block; }
}
.cal-axis span:first-child { transform: none; }
.cal-axis span:last-child { transform: translateY(-100%); }
.cal-bar .btn { flex: 0 0 auto; width: auto; }
@media (max-width: 720px) {
  .cal-bar { flex-direction: column; align-items: stretch; }
  .cal-bar .actions { flex-wrap: wrap; gap: 8px; }
  .cal-title { flex: 1 0 100%; margin: 4px 0 0; }
}

.topbar-inner .search-box + .userchip { margin-left: 0; }
.admin-page > .tabs { border-bottom-color: var(--rule); }
.admin-page > .tabs .tab { color: var(--paper); }
.admin-page > .tabs .tab[aria-selected="true"] { color: var(--ink); }
@media (min-width: 721px) and (max-width: 1000px) { .nav a { padding-left: 8px; padding-right: 8px; font-size: 0.84rem; } }
.pending-steps { list-style: none; margin: 16px 0; padding: 0; display: grid; gap: 14px; }
.pending-step { display: grid; grid-template-columns: 28px 1fr; gap: 10px; align-items: start; }
.pending-step p { margin: 2px 0 6px; }
.pending-mark { width: 24px; height: 24px; display: inline-flex; align-items: center; justify-content: center; border: 2px solid var(--ink); font-weight: 700; }
.pending-step.done .pending-mark { background: var(--ok); color: var(--paper-light); border-color: var(--ok); }
.pending-contacts { margin: 4px 0 0; padding-left: 18px; }
.cand-list { display: grid; gap: 8px; }
.cand-row { display: flex; align-items: stretch; gap: 8px; }
.cand-row .cand-card { flex: 1 1 auto; }
.cand-card { display: flex; justify-content: space-between; align-items: center; gap: 12px; width: 100%; text-align: left; font: inherit; color: inherit; padding: 10px 12px; background: var(--field); border: 1px solid var(--rule); cursor: pointer; }
.cand-card:hover { border-color: var(--ink); }
.cand-meta { display: flex; align-items: center; gap: 10px; flex: 0 0 auto; }
.cand-text { white-space: pre-wrap; overflow-wrap: anywhere; }
.cand-opinions { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.cand-detail h3 { margin: 12px 0 2px; font-size: 0.95rem; }

.bell { position: relative; display: inline-flex; align-items: center; }
.bell-button {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  padding: 0;
  background: transparent;
  color: var(--paper);
  border: 1px solid rgba(221, 214, 191, 0.3);
  border-radius: 50%;
  cursor: pointer;
}
.bell-button:hover, .bell-button[aria-expanded="true"] { background: rgba(221, 214, 191, 0.12); }
.bell-count {
  position: absolute;
  top: -5px;
  right: -5px;
  min-width: 18px;
  padding: 0 5px;
  background: var(--stamp);
  color: var(--paper-light);
  font-size: 0.7rem;
  line-height: 18px;
  text-align: center;
  border-radius: 9px;
  border: 1px solid var(--desk-dark);
}
.bell-count[hidden], .bell-panel[hidden] { display: none; }
.bell-panel {
  position: absolute;
  top: calc(100% + 10px);
  right: 0;
  z-index: 60;
  width: 360px;
  max-width: calc(100vw - 16px);
  max-height: min(70vh, 520px);
  display: flex;
  flex-direction: column;
  background: var(--paper);
  color: var(--ink);
  border: 1px solid var(--rule);
  border-top: 3px solid var(--stamp);
  box-shadow: 0 10px 28px rgba(0, 0, 0, 0.5);
}
.bell-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 4px 12px;
  padding: 10px 12px;
  border-bottom: 1px solid var(--rule);
}
.bell-tools { display: flex; flex-wrap: wrap; gap: 4px 12px; }
.linklike {
  background: none;
  border: 0;
  padding: 0;
  color: var(--stamp);
  font-size: 0.78rem;
  text-decoration: underline;
  cursor: pointer;
}
.linklike:disabled { color: var(--faded); opacity: 0.55; cursor: default; text-decoration: none; }
.bell-list { list-style: none; margin: 0; padding: 0; overflow-y: auto; }
.bell-item { display: flex; align-items: stretch; border-bottom: 1px solid rgba(138, 132, 111, 0.4); }
.bell-item:last-child { border-bottom: 0; }
.bell-item.unread { background: rgba(122, 42, 34, 0.09); box-shadow: inset 3px 0 0 var(--stamp); }
.bell-open {
  flex: 1 1 auto;
  display: flex;
  gap: 10px;
  align-items: flex-start;
  min-width: 0;
  padding: 10px 6px 10px 12px;
  background: none;
  border: 0;
  text-align: left;
  cursor: pointer;
  color: inherit;
}
.bell-open:hover { background: rgba(0, 0, 0, 0.05); }
.bell-glyph {
  flex: 0 0 auto;
  width: 28px;
  height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--desk-dark);
  color: var(--paper);
  font-size: 0.85rem;
  border-radius: 50%;
}
.bell-glyph.k-candidature { background: #2b4a8a; }
.bell-glyph.k-rapport { background: var(--stamp); }
.bell-glyph.k-seance { background: var(--ok); }
.bell-glyph.k-formation { background: var(--warn); }
.bell-text { display: flex; flex-direction: column; min-width: 0; gap: 1px; font-size: 0.85rem; line-height: 1.3; }
.bell-body { color: var(--faded); overflow-wrap: anywhere; }
.bell-text small { color: var(--faded); font-size: 0.72rem; }
.bell-del {
  flex: 0 0 auto;
  width: 32px;
  background: none;
  border: 0;
  color: var(--faded);
  font-size: 1.2rem;
  cursor: pointer;
}
.bell-del:hover { color: var(--stamp); }
.bell-empty { margin: 0; padding: 22px 14px; text-align: center; color: var(--faded); }
@media (max-width: 720px) {
  .userchip .bell { margin-right: 6px; }
  .bell-panel { position: fixed; left: 8px; right: 8px; top: 64px; width: auto; max-width: none; }
}

.integrity-box { margin-bottom: 16px; }
.integrity-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; }
.integrity-head h2 { margin: 0; }
.integrity-list { list-style: none; margin: 12px 0 0; padding: 0; }
.integrity-item { border-top: 1px solid var(--rule); padding: 8px 0; }
.integrity-item summary { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; cursor: pointer; }
.integrity-n { margin-left: auto; min-width: 1.6em; padding: 0 6px; text-align: center; background: var(--desk-dark); color: var(--paper); border-radius: 9px; font-size: 0.78rem; }
.integrity-item.bad .integrity-n { background: var(--stamp); }
.integrity-detail { padding: 6px 0 4px 8px; }
.integrity-detail ul { margin: 4px 0 0; padding-left: 20px; }

.topbar { box-shadow: inset 0 -3px 0 var(--faction, transparent); }
.navbar-inner .nav { flex: 1 1 auto; min-width: 0; }
.brand { min-width: 0; flex: 1 1 auto; }
.brand-text { min-width: 0; }
.brand strong, .brand small { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.icon-btn {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  padding: 0;
  background: transparent;
  color: var(--paper);
  border: 1px solid rgba(221, 214, 191, 0.3);
  border-radius: 50%;
  cursor: pointer;
  transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.icon-btn:hover, .icon-btn:focus-visible, .fmenu.open .icon-btn { background: rgba(221, 214, 191, 0.14); border-color: rgba(221, 214, 191, 0.6); }
.icon-btn[aria-label="Déconnexion"]:hover { background: var(--stamp); border-color: var(--stamp); color: var(--paper-light); }
.icon-btn[data-tip]::after {
  content: attr(data-tip);
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  z-index: 70;
  width: max-content;
  max-width: 260px;
  padding: 5px 9px;
  background: var(--desk-dark);
  color: var(--paper);
  border: 1px solid rgba(221, 214, 191, 0.35);
  font-size: 0.74rem;
  line-height: 1.3;
  pointer-events: none;
  opacity: 0;
  transform: translateY(-3px);
  transition: opacity 0.12s, transform 0.12s;
}
.icon-btn[data-tip]:hover::after, .icon-btn[data-tip]:focus-visible::after { opacity: 1; transform: none; }
.fmenu.open .icon-btn::after { display: none; }
.fmenu { position: relative; display: inline-flex; }
.fmenu-dot { position: absolute; right: 1px; bottom: 1px; width: 10px; height: 10px; border-radius: 50%; border: 2px solid var(--desk-dark); }
.fmenu-panel {
  display: none;
  position: absolute;
  top: calc(100% + 10px);
  right: 0;
  z-index: 60;
  min-width: 250px;
  background: var(--paper);
  color: var(--ink);
  border: 1px solid var(--rule);
  box-shadow: 0 8px 22px rgba(0, 0, 0, 0.45);
}
.fmenu.open .fmenu-panel { display: block; }
.fmenu-title { margin: 0; padding: 8px 12px; font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.08em; color: var(--faded); border-bottom: 1px solid var(--rule); }
.fmenu-list { list-style: none; margin: 0; padding: 4px 0; }
.fmenu-list button { display: flex; align-items: center; gap: 8px; width: 100%; padding: 8px 12px; text-align: left; background: none; border: 0; cursor: pointer; }
.fmenu-list button:hover { background: rgba(0, 0, 0, 0.08); }
.fmenu-list button.current { font-weight: bold; cursor: default; }
.fmenu-check { width: 1em; color: var(--ok); }
@media (max-width: 720px) {
  .fmenu-panel { position: fixed; left: 8px; right: 8px; top: 64px; min-width: 0; }
  .userchip { gap: 8px; }
}

.suggest { position: relative; }
.suggest > input { width: 100%; }
.suggest-list {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  z-index: 40;
  margin: 2px 0 0;
  padding: 3px 0;
  list-style: none;
  background: var(--paper-light);
  color: var(--ink);
  border: 1px solid var(--rule);
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.35);
  max-height: 220px;
  overflow: auto;
}
.suggest-list[hidden] { display: none; }
.suggest-list li { padding: 8px 12px; cursor: pointer; }
.suggest-list li:hover, .suggest-list li.active { background: rgba(122, 42, 34, 0.14); }

.cal-bar-right { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.cal-views { display: inline-flex; border: 1px solid var(--ink); }
.cal-view-btn { padding: 8px 14px; background: transparent; border: 0; cursor: pointer; }
.cal-view-btn + .cal-view-btn { border-left: 1px solid var(--ink); }
.cal-view-btn[aria-pressed="true"] { background: var(--ink); color: var(--paper-light); }
.cal-filter { display: inline-flex; align-items: center; gap: 2px; padding: 3px 10px 3px 6px; background: transparent; border: 1px solid var(--rule); border-radius: 999px; cursor: pointer; font-size: 0.8rem; }
.cal-filter.off { opacity: 0.45; text-decoration: line-through; }
.cal-filter:hover { background: rgba(0, 0, 0, 0.06); }
.cal-agenda .cal-event, .cal-mday .cal-event {
  position: static;
  width: 100%;
  height: auto;
  margin: 4px 0;
  padding: 8px 10px;
  font-size: 0.9rem;
  color: var(--ink);
  background: color-mix(in srgb, var(--c) 16%, var(--paper-light));
  border: 1px solid color-mix(in srgb, var(--c) 45%, transparent);
  border-left: 7px solid var(--c);
}
.cal-month { margin-top: 4px; }
.cal-mhead, .cal-mgrid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.cal-mhead span { padding: 4px 0; text-align: center; font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.06em; color: var(--faded); }
.cal-mgrid { gap: 3px; }
.cal-mcell {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 4px;
  min-height: 92px;
  padding: 5px 6px;
  text-align: left;
  font: inherit;
  color: var(--ink);
  background: var(--paper-light);
  border: 1px solid var(--rule);
  cursor: pointer;
}
.cal-mcell:hover { background: #fff8; }
.cal-mcell.out { opacity: 0.45; }
.cal-mcell.today .cal-mnum { background: var(--stamp); color: var(--paper-light); }
.cal-mcell.sel { outline: 2px solid var(--ink); outline-offset: -2px; }
.cal-mcell.mine { box-shadow: inset 0 -3px 0 #f2c94c; }
.cal-mnum { align-self: flex-start; min-width: 1.7em; padding: 0 5px; text-align: center; font-weight: bold; border-radius: 10px; }
.cal-mdots { display: none; flex-wrap: wrap; gap: 3px; align-items: center; }
.cal-mdots i { width: 8px; height: 8px; border-radius: 50%; border: 1px solid rgba(0, 0, 0, 0.4); }
.cal-mdots b { font-size: 0.65rem; }
.cal-mtitles { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.cal-mtitles span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; padding: 1px 4px; font-size: 0.68rem; color: #fff; background: var(--c); }
.cal-mtitles em { font-size: 0.68rem; color: var(--faded); }
.cal-mday { margin-top: 12px; padding-top: 4px; border-top: 1px solid var(--rule); }
.cal-mday h3 { margin: 8px 0 4px; text-transform: capitalize; }
.cal-mhint { text-align: center; }
@media (max-width: 720px) {
  .cal-bar-right { justify-content: space-between; width: 100%; }
  .cal-mcell { min-height: 52px; align-items: center; padding: 4px 2px; }
  .cal-mnum { align-self: center; }
  .cal-mdots { display: flex; justify-content: center; }
  .cal-mtitles { display: none; }
  .cal-mgrid { gap: 2px; }
}

.kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 12px; margin: 0 0 16px; }
.kpi {
  display: flex;
  align-items: center;
  gap: 14px;
  min-width: 0;
  padding: 14px 16px;
  text-align: left;
  font: inherit;
  color: var(--ink);
  text-decoration: none;
  background: var(--paper);
  border: 1px solid var(--rule);
  border-left: 6px solid var(--faction, var(--rule));
  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.12);
  cursor: pointer;
  transition: transform 0.12s, box-shadow 0.12s, background 0.12s;
}
.kpi[hidden] { display: none; }
.kpi:hover, .kpi:focus-visible { transform: translateY(-2px); box-shadow: 0 6px 14px rgba(0, 0, 0, 0.25); background: var(--paper-light); }
.kpi-icon { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 50%; color: var(--paper-light); background: var(--desk); }
.kpi-body { display: flex; flex-direction: column; min-width: 0; }
.kpi-n { font-size: 1.9rem; font-weight: normal; line-height: 1; color: var(--ink); }
.kpi-label { margin-top: 2px; font-size: 0.82rem; color: var(--faded); }
.kpi-sub { margin-top: 3px; font-size: 0.74rem; color: var(--faded); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.kpi.zero .kpi-icon { background: var(--rule); }
.kpi.zero .kpi-n { color: var(--faded); }
.kpi.alert { border-left-color: var(--stamp); }
.kpi.alert .kpi-icon { background: var(--stamp); }
.kpi.alert .kpi-n { color: var(--stamp); }
@media (max-width: 560px) { .kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; } .kpi { padding: 10px; gap: 8px; } .kpi-icon { width: 34px; height: 34px; } .kpi-icon svg { width: 20px; height: 20px; } .kpi-n { font-size: 1.5rem; } }

.crest { display: inline-flex; flex: 0 0 auto; filter: drop-shadow(0 1px 0 rgba(0, 0, 0, 0.55)); }
.crest-img { width: 100%; height: 100%; object-fit: contain; display: block; }
.crest-brand { width: 44px; height: 44px; }
.crest-sm { width: 36px; height: 36px; }
.crest-xs { width: 24px; height: 24px; }
.kg-title { display: flex; align-items: center; gap: 6px; }

:root { --accent: var(--stamp); }
.panel { border-top-color: var(--accent); }
.btn.primary, .bar .btn.primary { background: var(--accent); border-color: var(--accent); }
.btn.primary:hover:not(:disabled) { background: var(--ink); border-color: var(--ink); }
.nav a[aria-current="page"] { border-bottom-color: var(--accent); }
.topbar { background: linear-gradient(180deg, color-mix(in srgb, var(--desk-dark) 62%, #000), var(--desk-dark)); }
.footer-ornament { border-bottom: 2px solid var(--faction, transparent); }
.paper-crest { display: flex; justify-content: center; margin-bottom: 6px; }
.crest-paper { width: 64px; height: 64px; }
.panel.welcome .stamp-mark {
  position: absolute;
  top: 16px;
  right: 22px;
  max-width: 46%;
  padding: 4px 12px;
  font-size: 0.78rem;
  letter-spacing: 0.14em;
  text-align: center;
  text-transform: uppercase;
  color: var(--accent);
  border: 3px double var(--accent);
  opacity: 0.6;
  transform: rotate(-6deg);
  pointer-events: none;
  mix-blend-mode: multiply;
}
.panel.welcome .stamp-mark::before { content: var(--stamp-text, "Nur für den Dienstgebrauch"); }
@media (max-width: 560px) { .panel.welcome .stamp-mark { position: static; display: inline-block; margin-bottom: 8px; transform: rotate(-2deg); font-size: 0.68rem; max-width: none; } }

:root[data-faction="panzer"] {
  --desk: #232428;
  --desk-dark: #141518;
  --accent: #a24d6d;
  --paper: #d6cfba;
  --paper-light: #e2dcc9;
}
:root[data-faction="panzer"] body {
  background-image:
    repeating-linear-gradient(90deg, rgba(255, 255, 255, 0.035) 0 5px, transparent 5px 12px),
    repeating-linear-gradient(0deg, rgba(0, 0, 0, 0.25) 0 2px, transparent 2px 24px),
    radial-gradient(ellipse at top, rgba(217, 140, 166, 0.07), transparent 60%);
  background-size: auto;
}
:root[data-faction="luftwaffe"] {
  --desk: #34465a;
  --desk-dark: #1f2c3b;
  --accent: #9c7a00;
  --paper: #dbd8c6;
  --paper-light: #e6e3d2;
}
:root[data-faction="luftwaffe"] body {
  background-image:
    linear-gradient(180deg, rgba(255, 255, 255, 0.09), transparent 45%),
    repeating-linear-gradient(0deg, rgba(255, 255, 255, 0.03) 0 1px, transparent 1px 9px),
    radial-gradient(ellipse at 80% 0%, rgba(230, 184, 0, 0.08), transparent 55%);
  background-size: auto;
}
:root[data-faction="feldgendarmerie"] {
  --desk: #3a3c33;
  --desk-dark: #24261f;
  --accent: #b2560f;
  --paper: #ddd4b8;
  --paper-light: #e8e0c8;
}
:root[data-faction="feldgendarmerie"] body {
  background-image:
    repeating-linear-gradient(45deg, rgba(224, 123, 26, 0.045) 0 3px, transparent 3px 14px),
    repeating-linear-gradient(-45deg, rgba(255, 255, 255, 0.025) 0 3px, transparent 3px 14px),
    radial-gradient(ellipse at top, rgba(255, 255, 255, 0.05), transparent 60%);
  background-size: auto;
}
:root[data-faction="pzgren"] {
  --desk: #3a4034;
  --desk-dark: #272b22;
}
@media (prefers-color-scheme: dark) {
  :root[data-faction="panzer"] { --desk: #17181b; --desk-dark: #0c0d0f; }
  :root[data-faction="luftwaffe"] { --desk: #243342; --desk-dark: #141d28; }
  :root[data-faction="feldgendarmerie"] { --desk: #2a2c25; --desk-dark: #181a14; }
}

.sheet::before {
  inset: 8px;
  border: 12px solid transparent;
  border-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='36' height='36' viewBox='0 0 36 36'><g fill='none' stroke='%237a6a45' stroke-width='0.8'><circle cx='6' cy='6' r='5.6'/><circle cx='6' cy='6' r='3.4'/><ellipse cx='6' cy='6' rx='5.6' ry='2.2'/><ellipse cx='6' cy='6' rx='2.2' ry='5.6'/><circle cx='18' cy='6' r='5.6'/><circle cx='18' cy='6' r='3.4'/><ellipse cx='18' cy='6' rx='5.6' ry='2.2'/><ellipse cx='18' cy='6' rx='2.2' ry='5.6'/><circle cx='30' cy='6' r='5.6'/><circle cx='30' cy='6' r='3.4'/><ellipse cx='30' cy='6' rx='5.6' ry='2.2'/><ellipse cx='30' cy='6' rx='2.2' ry='5.6'/><circle cx='6' cy='18' r='5.6'/><circle cx='6' cy='18' r='3.4'/><ellipse cx='6' cy='18' rx='5.6' ry='2.2'/><ellipse cx='6' cy='18' rx='2.2' ry='5.6'/><circle cx='30' cy='18' r='5.6'/><circle cx='30' cy='18' r='3.4'/><ellipse cx='30' cy='18' rx='5.6' ry='2.2'/><ellipse cx='30' cy='18' rx='2.2' ry='5.6'/><circle cx='6' cy='30' r='5.6'/><circle cx='6' cy='30' r='3.4'/><ellipse cx='6' cy='30' rx='5.6' ry='2.2'/><ellipse cx='6' cy='30' rx='2.2' ry='5.6'/><circle cx='18' cy='30' r='5.6'/><circle cx='18' cy='30' r='3.4'/><ellipse cx='18' cy='30' rx='5.6' ry='2.2'/><ellipse cx='18' cy='30' rx='2.2' ry='5.6'/><circle cx='30' cy='30' r='5.6'/><circle cx='30' cy='30' r='3.4'/><ellipse cx='30' cy='30' rx='5.6' ry='2.2'/><ellipse cx='30' cy='30' rx='2.2' ry='5.6'/></g></svg>") 12 round;
  opacity: 0.55;
}
.sheet {
  background-image:
    radial-gradient(ellipse 140px 90px at 86% 14%, rgba(120, 78, 28, 0.13), transparent 70%),
    radial-gradient(circle 46px at 78% 88%, transparent 30px, rgba(110, 70, 25, 0.16) 33px, transparent 40px),
    linear-gradient(90deg, transparent calc(50% - 1px), rgba(0, 0, 0, 0.05) 50%, rgba(255, 255, 255, 0.2) calc(50% + 1px), transparent calc(50% + 2px)),
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='260' height='260'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.36  0 0 0 0 0.27  0 0 0 0 0.12  0 0 0 0.1 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>"),
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='600' height='600'><filter id='m'><feTurbulence type='fractalNoise' baseFrequency='0.012' numOctaves='2' seed='4'/><feColorMatrix values='0 0 0 0 0.55  0 0 0 0 0.4  0 0 0 0 0.15  0 0 0 0.16 0'/></filter><rect width='100%' height='100%' filter='url(%23m)'/></svg>"),
    linear-gradient(180deg, transparent calc(33.3% - 1px), rgba(0, 0, 0, 0.05) 33.3%, rgba(255, 255, 255, 0.22) calc(33.3% + 1px), transparent calc(33.3% + 2px)),
    linear-gradient(180deg, transparent calc(66.6% - 1px), rgba(0, 0, 0, 0.045) 66.6%, rgba(255, 255, 255, 0.2) calc(66.6% + 1px), transparent calc(66.6% + 2px));
}
.sheet > .sheet-mark {
  position: absolute;
  right: 36px;
  bottom: 70px;
  width: 340px;
  color: var(--stamp);
  opacity: 0.07;
  pointer-events: none;
  z-index: 0;
}
.sheet-mark svg { display: block; width: 100%; height: auto; }
.sheet > .sheet-clip {
  position: absolute;
  top: -16px;
  right: 74px;
  width: 26px;
  z-index: 3;
  pointer-events: none;
  filter: drop-shadow(1px 3px 2px rgba(0, 0, 0, 0.35));
  transform: rotate(4deg);
}
.sheet-clip svg { display: block; width: 100%; height: auto; }
.sheet > .sheet-postmark {
  position: absolute;
  right: 44px;
  top: 128px;
  width: 176px;
  color: #3b3a35;
  opacity: 0.4;
  transform: rotate(-9deg);
  mix-blend-mode: multiply;
  pointer-events: none;
  z-index: 1;
}
.sheet-postmark svg { display: block; width: 100%; height: auto; }
.paper-crest { position: relative; width: 112px; height: 112px; margin: 0 auto 6px; align-items: center; }
.paper-crest .orn-wreath { position: absolute; inset: -4px; width: 120px; height: 120px; color: #5f6b3e; opacity: 0.8; left: -4px; top: -4px; }
.paper-crest .crest { position: relative; margin: auto; }
.orn-line { display: flex; justify-content: center; color: var(--faded); margin-top: 4px; }
.orn-line .orn-divider { width: 260px; height: 22px; }
.ribbon-bar { display: flex; flex-wrap: wrap; gap: 14px 24px; align-items: center; }
.ribbon-row { display: flex; gap: 2px; padding: 4px; background: #6b6450; border-radius: 2px; box-shadow: 0 2px 3px rgba(0, 0, 0, 0.35); }
.ribbon-item svg { display: block; width: 38px; height: 14px; }
.ribbon-wrap { display: flex; flex-direction: column; gap: 10px; }
.ribbon-row { max-width: 100%; flex-wrap: wrap; }
.ribbon-item svg { width: 46px; height: 17px; }
.ribbon-tier { letter-spacing: 0.03em; }
.ribbon-tier.tier-1 { color: #8a4f22; }
.ribbon-tier.tier-2 { color: #5d6670; }
.ribbon-tier.tier-3 { color: #9a7410; }
.ribbon-progress { color: var(--faded); font-size: 0.78rem; }
.ribbon-todo summary { cursor: pointer; font-size: 0.88rem; }
.ribbon-todo-list { list-style: none; margin: 8px 0 0; padding: 0; display: grid; gap: 6px; font-size: 0.82rem; }
.ribbon-todo-list li { display: flex; align-items: center; gap: 10px; }
.ribbon-item.dim { opacity: 0.4; filter: grayscale(0.7); }
.ribbon-legend { margin: 0; padding-left: 18px; font-size: 0.82rem; color: var(--faded); }
.fanion { display: inline-flex; margin-left: 6px; align-self: center; flex: 0 0 auto; }
.fanion .orn-pennant { width: 46px; height: 22px; display: block; filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.5)); transform-origin: left center; animation: fanion-wave 4.5s ease-in-out infinite; }
@keyframes fanion-wave { 0%, 100% { transform: skewY(0deg); } 50% { transform: skewY(-3deg) scaleX(0.97); } }
@media (max-width: 720px) {
  .fanion { display: none; }
  .sheet > .sheet-postmark { width: 92px; right: 8px; top: 205px; opacity: 0.32; }
  .sheet > .sheet-mark { width: 220px; right: 20px; }
  .sheet > .sheet-clip { right: 40px; }
}
@media (prefers-reduced-motion: reduce) { .fanion .orn-pennant { animation: none; } }
@media print {
  .sheet > .sheet-clip, .fanion { display: none; }
}

.orn-pennant-fill { fill: var(--faction, #6d7a3a); }

.bell-glyph.k-groupe { background: #3d5a2a; }
.kg-badge { display: inline-flex; align-items: center; gap: 2px; padding: 2px 8px; border: 1px solid #3d5a2a; background: rgba(120, 160, 90, 0.18); color: var(--ink); font-size: 0.82rem; }
.kg-badge em { font-style: normal; opacity: 0.75; }

@media (max-width: 720px) { .kg-row { grid-template-columns: 1fr; } }

.roster-controls { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: 12px 0; }
.roster-controls select, .roster-controls .roster-search { width: auto; min-width: 150px; flex: 0 1 auto; }
.roster-controls .roster-search { flex: 1 1 240px; }
.roster-top { display: flex; flex-wrap: wrap; gap: 18px; align-items: flex-start; margin-bottom: 16px; }
.personnel { border: 2px solid var(--ink); border-collapse: collapse; background: rgba(255, 255, 255, 0.35); min-width: 190px; font-size: 0.85rem; }
.personnel caption { caption-side: top; background: var(--ink); color: var(--paper-light, #efe8d2); padding: 4px 10px; text-transform: uppercase; letter-spacing: 0.1em; font-size: 0.78rem; }
.personnel caption small { display: block; letter-spacing: 0.06em; opacity: 0.75; text-transform: none; }
.personnel th, .personnel td { padding: 3px 10px; border-top: 1px solid var(--rule); text-align: left; font-weight: normal; }
.personnel td { text-align: right; }
.personnel tr.total th, .personnel tr.total td { font-weight: bold; border-top: 2px solid var(--ink); }

.org { display: grid; gap: 26px; }
.org-faction > header { display: flex; align-items: center; gap: 14px; border: 2px solid var(--ink); border-bottom-width: 4px; border-color: var(--ink); border-bottom-color: var(--faction, var(--accent, var(--ink))); padding: 8px 14px; background: rgba(255, 255, 255, 0.3); }
.org-faction > header h2 { margin: 0; font-size: 1.15rem; letter-spacing: 0.04em; }
.org-faction > header small { color: var(--faded); }
.org-company { margin-top: 16px; }
.org-company > h3 { margin: 0 0 8px; font-size: 0.95rem; letter-spacing: 0.1em; text-transform: uppercase; border-bottom: 1px solid var(--rule); padding-bottom: 4px; }
.org-company > h3 small { text-transform: none; letter-spacing: 0; color: var(--faded); font-weight: normal; }
.kg-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 14px; }
.kg-card { border: 2px solid var(--ink); background: rgba(255, 255, 255, 0.4); display: flex; flex-direction: column; }
.kg-card > header { background: #b9d6a6; border-bottom: 2px solid var(--ink); padding: 5px 10px; display: flex; flex-direction: column; color: #1c2a14; }
.kg-card > header strong { font-size: 0.88rem; text-transform: uppercase; letter-spacing: 0.04em; }
.kg-card > header small { font-size: 0.72rem; opacity: 0.75; }
.kg-card ul { list-style: none; margin: 0; padding: 0; }
.kg-card li { display: flex; align-items: center; gap: 8px; padding: 3px 10px; border-bottom: 1px solid var(--rule); font-size: 0.86rem; }
.kg-card li:nth-child(even) { background: rgba(0, 0, 0, 0.035); }
.kg-card li.leader { background: rgba(185, 214, 166, 0.35); font-weight: bold; }
.kg-card li a { flex: 1; color: inherit; text-decoration: none; overflow-wrap: anywhere; }
.kg-card li a:hover { text-decoration: underline; }
.kg-card footer { display: flex; gap: 8px; padding: 8px 10px; margin-top: auto; border-top: 1px solid var(--rule); }
.kg-empty { padding: 8px 10px; margin: 0; }
.kg-lead { font-style: normal; font-size: 0.7rem; letter-spacing: 0.08em; text-transform: uppercase; color: #3d5a2a; border: 1px solid #3d5a2a; padding: 0 5px; }
.who-rank { display: inline-flex; align-items: center; gap: 6px; min-width: 70px; }
.who-rank small { color: var(--faded); }
.struct-row { display: grid; grid-template-columns: 1fr minmax(120px, 0.8fr) auto auto; gap: 6px; align-items: center; margin: 4px 0; }
.struct-row > input:only-of-type { grid-column: auto; }
.structure-editor h4 { margin: 12px 0 4px; }
@media (max-width: 720px) {
  .struct-row { grid-template-columns: 1fr 1fr; }
  .kg-grid { grid-template-columns: 1fr; }
}
.struct-row { grid-template-columns: minmax(0, 1.6fr) minmax(110px, 1fr) auto auto; }
.struct-row input[type="text"], .struct-row select { min-width: 0; width: 100%; }
.kg-row { grid-template-columns: minmax(0, 1fr) auto; }
.kg-row > span { grid-column: 1 / -1; font-weight: bold; }
.kg-row select { min-width: 0; }
@media (max-width: 720px) {
  .roster-controls select { flex: 1 1 100%; width: 100%; }
}

@font-face { font-family: "Old Standard TT"; font-weight: 400; font-style: normal; font-display: swap; src: url("/fonts/oldstandard-400.woff2") format("woff2"); }
@font-face { font-family: "Old Standard TT"; font-weight: 700; font-style: normal; font-display: swap; src: url("/fonts/oldstandard-700.woff2") format("woff2"); }
@font-face { font-family: "Old Standard TT"; font-weight: 400; font-style: italic; font-display: swap; src: url("/fonts/oldstandard-italic.woff2") format("woff2"); }
@font-face { font-family: "UnifrakturCook"; font-weight: 700; font-style: normal; font-display: swap; src: url("/fonts/unifraktur-700.woff2") format("woff2"); }

.gz-fit { width: 100%; position: relative; overflow: hidden; }
.gz-fit-inner { width: 900px; transform-origin: top left; }
.gz-page {
  --paper: #e4d9b8;
  --gz-ink: #1b1a16;
  --gz-faded: #5b5440;
  position: relative;
  overflow: hidden;
  color: var(--gz-ink);
  font-family: "Old Standard TT", Georgia, "Times New Roman", serif;
  box-shadow: 0 6px 22px rgba(0, 0, 0, 0.45);
  background-color: #e4d9b8;
  background-image:
    radial-gradient(ellipse at 20% 15%, rgba(255, 255, 255, 0.28), transparent 55%),
    radial-gradient(ellipse at 85% 90%, rgba(90, 60, 20, 0.22), transparent 60%),
    repeating-linear-gradient(0deg, rgba(90, 70, 30, 0.035) 0 2px, transparent 2px 5px);
}
.gz-page.paper-blanc { --paper: #efeadb; background-color: #efeadb; }
.gz-page.paper-gris { --paper: #cfcbbd; background-color: #cfcbbd; }
.gz-page::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  box-shadow: inset 0 0 70px rgba(80, 55, 20, 0.35);
  z-index: 9999;
}
.gz-page.paper-blanc::after { box-shadow: inset 0 0 50px rgba(80, 55, 20, 0.18); }
.gz-block { position: absolute; overflow: hidden; }
.gz-block > * { width: 100%; height: 100%; }

.gz-mast { display: flex; flex-direction: column; justify-content: space-between; border-top: 4px double var(--gz-ink); border-bottom: 4px double var(--gz-ink); padding: 4px 6px; }
.gz-mast-top { display: flex; justify-content: space-between; font-size: 13px; letter-spacing: 0.08em; text-transform: uppercase; border-bottom: 1px solid var(--gz-ink); padding-bottom: 3px; }
.gz-mast-main { flex: 1; min-height: 0; display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.gz-mast-title { flex: 1; text-align: center; font-family: "UnifrakturCook", "Old Standard TT", serif; font-weight: 700; font-size: 58px; line-height: 1; white-space: nowrap; overflow: hidden; }
.gz-mast-wreath, .gz-mast-crest { width: 70px; height: 70px; display: flex; align-items: center; justify-content: center; color: #3d4a26; flex: none; }
.gz-mast-wreath svg { width: 70px; height: 70px; }
.gz-mast-sub { text-align: center; font-style: italic; font-size: 14px; border-top: 1px solid var(--gz-ink); padding-top: 3px; }

.gz-headline { display: flex; align-items: center; justify-content: center; font-weight: 700; text-transform: uppercase; letter-spacing: 0.02em; overflow: hidden; }
.gz-headline > span { width: 100%; }
.gz-headline.fraktur { text-transform: none; font-family: "UnifrakturCook", serif; }

.gz-article { overflow: hidden; }
.gz-article h3 { margin: 0 0 6px; font-size: 21px; line-height: 1.12; font-weight: 700; border-bottom: 1px solid var(--gz-ink); padding-bottom: 4px; }
.gz-text { column-gap: 18px; column-rule: 1px solid rgba(27, 26, 22, 0.35); line-height: 1.34; hyphens: auto; }
.gz-text p { margin: 0 0 0.55em; }
.gz-text p + p { text-indent: 1.2em; }
.gz-text.dropcap > p:first-child::first-letter { float: left; font-family: "UnifrakturCook", serif; font-size: 3.1em; line-height: 0.82; padding: 0.04em 0.08em 0 0; }

.gz-figure { margin: 0; display: flex; flex-direction: column; gap: 4px; }
.gz-frame { flex: 1; min-height: 0; position: relative; background: #8a8268; overflow: hidden; }
.gz-frame img { width: 100%; height: 100%; display: block; }
.gz-frame img.sepia { filter: sepia(0.55) contrast(1.06) grayscale(0.25); }
.gz-frame.frame-plain { border: 1px solid var(--gz-ink); }
.gz-frame.frame-guilloche { border: 7px solid transparent; background-clip: padding-box; outline: 1px solid var(--gz-ink); box-shadow: 0 0 0 7px #2a2820 inset; }
.gz-frame.frame-guilloche::after { content: ""; position: absolute; inset: 0; border: 3px double #e4d9b8; pointer-events: none; }
.gz-frame.frame-tape { border: 8px solid #f2ecd8; box-shadow: 0 3px 8px rgba(0, 0, 0, 0.4); }
.gz-frame.frame-tape::before { content: ""; position: absolute; top: -4px; left: 50%; width: 80px; height: 20px; margin-left: -40px; background: rgba(214, 200, 150, 0.8); transform: rotate(-3deg); z-index: 2; }
.gz-frame.frame-shadow { box-shadow: 4px 5px 0 rgba(27, 26, 22, 0.55); border: 1px solid var(--gz-ink); }
.gz-noimg { height: 100%; display: flex; align-items: center; justify-content: center; font-style: italic; color: #e4d9b8; background: repeating-linear-gradient(45deg, rgba(0, 0, 0, 0.12) 0 8px, transparent 8px 16px); }
.gz-figure figcaption { font-size: 12px; font-style: italic; text-align: center; line-height: 1.2; flex: none; }

.gz-boxin { padding: 10px 12px; overflow: hidden; }
.gz-boxin h4 { margin: 0 0 6px; font-size: 16px; text-transform: uppercase; letter-spacing: 0.06em; text-align: center; border-bottom: 1px solid currentColor; padding-bottom: 4px; }
.gz-box-text { line-height: 1.32; }
.gz-box-text p { margin: 0 0 0.5em; }
.gz-boxin.box-plain { border: 1px solid var(--gz-ink); }
.gz-boxin.box-double { border: 4px double var(--gz-ink); }
.gz-boxin.box-guilloche { border: 8px solid transparent; border-image: repeating-linear-gradient(45deg, #1b1a16 0 3px, transparent 3px 6px) 8; outline: 1px solid var(--gz-ink); outline-offset: -1px; }
.gz-boxin.box-dark { background: #23221c; color: #e7dfc4; border: 2px solid #23221c; box-shadow: inset 0 0 0 3px #23221c, inset 0 0 0 4px #b3a77f; }

.gz-quote { display: flex; flex-direction: column; justify-content: center; border-left: 4px solid var(--gz-ink); padding: 4px 4px 4px 14px; }
.gz-quote blockquote { margin: 0; font-style: italic; line-height: 1.25; }
.gz-quote cite { margin-top: 6px; font-size: 13px; text-transform: uppercase; letter-spacing: 0.08em; font-style: normal; }

.gz-rule { display: flex; align-items: center; }
.gz-rule span { display: block; width: 100%; }
.gz-rule.rule-simple span { border-top: 1px solid var(--gz-ink); }
.gz-rule.rule-double span { border-top: 4px double var(--gz-ink); }
.gz-rule.rule-oak { justify-content: center; color: var(--gz-ink); }
.gz-rule.rule-oak svg { height: 100%; width: auto; max-width: 100%; }

.gz-orn { display: flex; flex-direction: column; align-items: center; justify-content: center; color: var(--gz-ink); }
.gz-orn > svg, .gz-orn > .crest { max-width: 100%; max-height: 100%; width: 100%; height: 100%; }
.gz-orn .crest { display: flex; align-items: center; justify-content: center; }
.gz-orn .crest svg, .gz-orn .crest img { height: 100%; width: auto; }
.gz-orn-k-wreath { color: #3d4a26; }
.gz-orn-k-postmark { color: #7a2a22; }
.gz-orn-k-clip svg { height: 100%; width: auto; }
.gz-ribbons { display: flex; flex-direction: column; gap: 4px; width: 100%; }
.gz-ribbons svg { width: 100%; height: auto; }
.gz-cross { width: 100%; height: 100%; background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-3 -3 106 106'><polygon points='42,42 30,0 70,0 58,42 100,30 100,70 58,58 70,100 30,100 42,58 0,70 0,30' fill='%231d1c18' stroke='%23e7e1ce' stroke-width='3' stroke-linejoin='round'/></svg>") center / contain no-repeat; }
.gz-eagle { max-width: 100%; max-height: 100%; width: auto; height: 100%; object-fit: contain; }
.gz-orn-label { font-size: 12px; text-transform: uppercase; letter-spacing: 0.1em; text-align: center; }

.gz-toolbar { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: 10px 0; }
.gz-toolbar .grow { flex: 1; }
.gz-status { font-size: 0.85rem; color: var(--faded); }
.gz-list { display: grid; gap: 14px; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); margin-top: 14px; }
.gz-card { display: flex; flex-direction: column; gap: 6px; padding: 10px; border: 2px solid var(--ink); background: var(--paper-light); color: var(--ink); text-decoration: none; }
.gz-card:hover { background: var(--paper); }
.gz-card strong { font-size: 1.05rem; }
.gz-card .gz-thumb { height: 120px; background: #e4d9b8; border: 1px solid var(--rule); display: flex; align-items: center; justify-content: center; font-family: "UnifrakturCook", serif; font-size: 1.6rem; text-align: center; padding: 6px; }

.gz-viewer { margin: 14px auto; max-width: 940px; }

.gz-editor { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 14px; align-items: start; }
.gz-stage { overflow: auto; padding: 8px; background: var(--desk-dark); border: 2px solid var(--ink); max-height: 78vh; }
.gz-canvas { position: relative; transform-origin: top left; }
.gz-canvas .gz-block { cursor: move; user-select: none; touch-action: none; }
.gz-canvas .gz-block.selected { outline: 2px dashed #b3321f; outline-offset: 1px; overflow: visible; }
.gz-block > .gz-handle, .gz-handle { position: absolute; width: 14px; height: 14px; right: -7px; bottom: -7px; background: #b3321f; border: 2px solid #fff; border-radius: 3px; cursor: nwse-resize; z-index: 10000; touch-action: none; }
.gz-side { position: sticky; top: 8px; display: grid; gap: 10px; max-height: 84vh; overflow: auto; }
.gz-side .panel { margin: 0; padding: 10px; }
.gz-side h3 { margin: 0 0 8px; font-size: 1rem; }
.gz-adds { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
.gz-adds .btn { padding: 6px 8px; font-size: 0.85rem; }
.gz-fields { display: grid; gap: 8px; }
.gz-fields label { display: grid; gap: 3px; font-size: 0.82rem; }
.gz-fields input[type="text"], .gz-fields input[type="number"], .gz-fields select, .gz-fields textarea { width: 100%; font: inherit; padding: 5px 6px; background: var(--field); border: 1px solid var(--ink); color: var(--ink); }
.gz-fields textarea { min-height: 120px; resize: vertical; }
.gz-fields .inline { display: flex; align-items: center; gap: 6px; }
.gz-fields .pair { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
.gz-actions { display: flex; flex-wrap: wrap; gap: 6px; }
.gz-actions .btn { padding: 5px 8px; font-size: 0.82rem; }

.gz-tile { display: grid; gap: 10px; }
.gz-tile-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: 8px; }
.gz-tile-links { display: flex; flex-wrap: wrap; gap: 8px; }
.gz-tile .gz-fit { border: 2px solid var(--ink); max-height: 380px; }
.gz-tile .gz-fit.cropped { overflow: hidden; }

@media (max-width: 980px) {
  .gz-editor { grid-template-columns: 1fr; }
  .gz-side { position: static; max-height: none; }
  .gz-stage { max-height: 62vh; }
}
@media print {
  .gz-toolbar, .gz-side { display: none; }
}
.gz-tile[hidden] { display: none; }
.gz-block > .gz-handle { width: 14px; height: 14px; }
.gz-quote blockquote { border: 0; padding: 0; background: none; margin: 0; font-family: inherit; }
.gz-tile { grid-template-columns: minmax(0, 1fr); }
.gz-tile > a { display: block; min-width: 0; }
.gz-tile .gz-fit { max-height: 420px; }
.userchip a.who { color: inherit; text-decoration: none; }
.userchip a.who:hover span, .userchip a.who:focus-visible span { text-decoration: underline; }
.gz-mast-crest { height: 76px; width: 64px; }
.gz-mast-crest .crest { display: flex; width: 100%; height: 100%; align-items: center; justify-content: center; }
.gz-mast-crest .crest svg, .gz-orn .crest svg, .gz-mast-crest .crest img, .gz-orn .crest img { width: auto; height: 100%; max-width: 100%; }
.gz-orn .crest { width: 100%; height: 100%; }
.gz-guide { position: absolute; pointer-events: none; z-index: 9998; background: #d4281c; }
.gz-guide-v { top: 0; bottom: 0; width: 1px; }
.gz-guide-h { left: 0; right: 0; height: 1px; }
.gz-align { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; }
.gz-align .btn, .gz-fields > .btn { padding: 5px 4px; font-size: 0.78rem; }
.gz-keys summary { cursor: pointer; font-weight: 700; }
.gz-keys ul { list-style: none; margin: 8px 0 0; padding: 0; display: grid; gap: 4px; font-size: 0.8rem; }
.gz-keys kbd { font-family: inherit; background: var(--paper-light); border: 1px solid var(--ink); border-radius: 3px; padding: 0 4px; margin-right: 4px; }

@media print {
  .sheet { padding: 15mm 15mm 16mm !important; box-shadow: none !important; overflow: visible; -webkit-box-decoration-break: clone; box-decoration-break: clone; }
  .help, .help-tip { display: none !important; }
  ::placeholder { color: transparent !important; }
  select { -webkit-appearance: none; appearance: none; background-image: none !important; }
  input[type="date"]::-webkit-calendar-picker-indicator, input[type="time"]::-webkit-calendar-picker-indicator { display: none; }
  .vfield, .person, .shot, fieldset { break-inside: avoid; page-break-inside: avoid; }
  .sheet header { break-after: avoid; }
}

.q-print { display: none; }
@media print {
  html, body { background: var(--paper) !important; }
  .q-print { display: block; font-weight: 700; margin-bottom: 4px; }
  .q-print + .ref { margin-top: 2px; }
  .body > select[aria-label^="Question"] { display: none !important; }
}

@media print {
  .sheet {
    background-image:
      radial-gradient(ellipse 140px 90px at 86% 14%, rgba(120, 78, 28, 0.13), transparent 70%),
      radial-gradient(circle 46px at 78% 88%, transparent 30px, rgba(110, 70, 25, 0.16) 33px, transparent 40px),
      linear-gradient(90deg, transparent calc(50% - 1px), rgba(0, 0, 0, 0.05) 50%, rgba(255, 255, 255, 0.2) calc(50% + 1px), transparent calc(50% + 2px)) !important;
    background-size: auto !important;
    background-color: var(--paper) !important;
  }
  .sheet::before { display: none !important; }
  .sheet > img.print-frame { display: block; position: fixed !important; left: 0; top: 0; width: 100%; height: 100%; z-index: 0; pointer-events: none; }
}

.print-frame { display: none; }

.assign-list { display: grid; gap: 8px; }
.assign-list .check-inline { display: flex; align-items: center; gap: 6px; }

.gz-orn-k-seal { color: var(--gz-ink); }
.orn-seal { overflow: visible; }

.sign { position: relative; }
.sign > div:not(.sign-seal) { min-height: 70px; }
.sign > .sign-seal { border-top: 0; padding: 0; min-height: 0; position: absolute; right: 4px; top: 30px; width: 84px; color: var(--stamp, var(--ink)); opacity: 0.82; transform: rotate(-9deg); mix-blend-mode: multiply; pointer-events: none; z-index: 1; }
.sign-seal svg { display: block; width: 100%; height: auto; overflow: visible; }
@media (max-width: 700px) { .sign > .sign-seal { position: static; margin: 10px auto 0; transform: rotate(-6deg); } .sign > div:not(.sign-seal) { min-height: 70px; } }
.journal-who { display: grid; grid-template-columns: minmax(180px, 2fr) 1fr 1fr; gap: 12px; }
@media (max-width: 700px) { .journal-who { grid-template-columns: 1fr; } }
.sign > .sign-seal.ok { color: #8c1c1c; opacity: 0.88; }
.sign > .sign-seal.draft { color: #77725f; opacity: 0.5; }
.sign > .sign-seal.wait { color: #8a6417; opacity: 0.72; }
.sign > .sign-seal.bad { color: #3b3630; opacity: 0.78; }
.share-panel { margin-top: 14px; }
.share-field { width: 100%; font: inherit; padding: 8px 10px; border: 1px solid var(--rule); background: var(--field); color: var(--ink); box-sizing: border-box; }
.share-actions { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 10px; }

.quiz-tools { display: flex; justify-content: flex-end; margin: 6px 0; }
.attempt-actions { display: inline-flex; gap: 6px; flex-wrap: wrap; }
.f-switch { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 12px; }
.f-chip { font-size: 0.85rem; padding: 5px 12px; border: 1px solid var(--rule); background: var(--field); color: var(--ink); text-decoration: none; }
.f-chip:hover { border-color: var(--stamp); }
.f-chip.on { background: var(--ink); color: var(--paper-light); border-color: var(--ink); }
.f-chip.add { border-style: dashed; }
.f-select { font: inherit; max-width: 260px; padding: 6px 8px; border: 1px solid var(--rule); background: var(--field); color: var(--ink); }

.law-item { display: block; color: inherit; text-decoration: none; }
.law-item:hover { background: rgba(255, 255, 255, 0.45); }
.law-article .actions { display: inline-flex; gap: 6px; }
.announce-head h1 small { display: block; }

.profile-card.removed { opacity: 0.55; border-style: dashed; }
.profile-card.todo { border-color: var(--stamp); }
.notice-todo { border-left: 4px solid var(--stamp); background: rgba(122, 42, 34, 0.08); padding: 8px 12px; margin: 10px 0; }

.chan-list { display: grid; gap: 10px; margin: 12px 0; }
.chan-row { display: grid; grid-template-columns: minmax(160px, 1.2fr) minmax(180px, 1.5fr) auto auto; gap: 10px; align-items: center; border-bottom: 1px dotted var(--rule); padding-bottom: 8px; }
.chan-field select, .chan-field input { width: 100%; }
@media (max-width: 720px) { .chan-row { grid-template-columns: 1fr 1fr; } .chan-name, .chan-field { grid-column: 1 / -1; } }

.auto-row { grid-template-columns: minmax(200px, 1.4fr) minmax(160px, 1fr) auto; }
.cal-repeat { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.75rem; }
.cal-repeat-detail { display: contents; }
@media (max-width: 560px) { .cal-repeat { grid-template-columns: minmax(0, 1fr); } }
.hall-filter { display: flex; flex-wrap: wrap; gap: 6px; margin: 10px 0 0; }
.hall-chip { padding: 5px 12px; border: 1px solid var(--ink); background: var(--paper-light); cursor: pointer; font: inherit; font-size: 0.9rem; }
.hall-chip.active { background: var(--ink); color: var(--paper-light); }
.hall-switch { display: flex; gap: 0; margin: 14px 0 6px; }
.hall-tab { flex: 1; max-width: 220px; padding: 9px 16px; border: 1px solid var(--ink); background: var(--paper-light); cursor: pointer; font: inherit; font-weight: 700; letter-spacing: 0.04em; }
.hall-tab + .hall-tab { border-left: 0; }
.hall-tab.active { background: var(--ink); color: var(--paper-light); }
.hall-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 18px; }
.hall-card { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 12px 10px 14px; border: 1px solid var(--ink); background: var(--paper-light); cursor: pointer; font: inherit; color: inherit; text-align: center; }
.hall-card:hover, .hall-card:focus-visible { box-shadow: 0 0 0 2px var(--stamp); }
.hall-frame { display: block; width: 100%; max-width: 160px; aspect-ratio: 4 / 5; padding: 6px; border: 3px double var(--ink); background: #e9dfc6; box-sizing: border-box; overflow: hidden; }
.hall-frame.small { max-width: 120px; }
.hall-img { display: block; width: 100%; height: 100%; object-fit: cover; filter: sepia(0.55) contrast(1.05); }
.hall-empty { display: flex; align-items: center; justify-content: center; opacity: 0.55; filter: none; }
.hall-empty svg { width: 90%; height: auto; }
.hall-plate { display: flex; flex-direction: column; gap: 2px; padding: 4px 8px; border-top: 1px solid var(--ink); border-bottom: 1px solid var(--ink); width: 100%; box-sizing: border-box; }
.hall-excerpt { font-size: 0.82rem; font-style: italic; opacity: 0.8; }
.hall-detail { display: grid; grid-template-columns: 180px minmax(0, 1fr); gap: 18px; align-items: start; }
.hall-detail .hall-frame { max-width: 180px; }
.hall-story { white-space: pre-wrap; line-height: 1.55; }
.hall-edit-photo { display: flex; flex-direction: column; gap: 8px; align-items: flex-start; }
.hall-form .wide { grid-column: 1 / -1; }
@media (max-width: 560px) { .hall-detail { grid-template-columns: minmax(0, 1fr); } .hall-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; } }
.tpl-tabs { display: flex; align-items: center; gap: 4px; margin: 12px 0 16px; border-bottom: 2px solid var(--ink); }
.tpl-tab { padding: 8px 16px; border: 1px solid var(--ink); border-bottom: 0; background: var(--paper-light); cursor: pointer; font: inherit; }
.tpl-tab.active { background: var(--ink); color: var(--paper-light); }
.tpl-dirty { margin-left: auto; color: var(--stamp); }
.tpl-dirty[hidden], .bank-panel[hidden], .bank-bulk[hidden], .grid[hidden] { display: none; }
.bank-quick { display: grid; grid-template-columns: 140px minmax(0, 2fr) minmax(0, 1.5fr) auto; gap: 8px; margin-bottom: 12px; }
.bank-filter { display: grid; grid-template-columns: minmax(0, 1fr) 200px; gap: 8px; margin-bottom: 10px; }
.bank-bulk { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 8px; margin-bottom: 8px; background: var(--paper-light); border: 1px dashed var(--ink); }
.bank-list { display: flex; flex-direction: column; gap: 6px; }
.bank-row { display: grid; grid-template-columns: auto 34px 120px minmax(0, 1fr) auto; gap: 8px; align-items: center; padding: 6px 8px; border: 1px solid var(--ink); background: var(--paper-light); }
.bank-row.selected { outline: 2px solid var(--stamp); }
.bank-row.dragging { opacity: 0.4; }
.bank-row[draggable="true"] .bank-handle { cursor: grab; }
.bank-handle { text-align: center; font-weight: bold; }
.bank-fields { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.bank-fields input, .bank-row select { width: 100%; box-sizing: border-box; }
.bank-tools { display: flex; gap: 4px; }
@media (max-width: 720px) {
  .bank-quick, .bank-filter { grid-template-columns: minmax(0, 1fr); }
  .bank-row { grid-template-columns: auto 30px minmax(0, 1fr); }
  .bank-row .bank-fields, .bank-row .bank-tools { grid-column: 1 / -1; }
}
.hall-unit { letter-spacing: 0.06em; font-size: 0.78rem; opacity: 0.75; }
.dm-pref { margin: 14px 0; padding: 10px 12px; border: 1px dashed var(--ink); }
.dm-pref[hidden] { display: none; }
.poll-widget { position: fixed; right: 16px; bottom: 16px; z-index: 40; width: min(340px, calc(100vw - 32px)); }
.poll-widget[hidden] { display: none; }
.poll-card { background: var(--paper-light); border: 2px solid var(--ink); box-shadow: 0 6px 18px rgba(0, 0, 0, 0.45); padding: 12px 14px; }
.poll-head { display: flex; align-items: center; gap: 8px; }
.poll-head .muted { margin-left: auto; }
.poll-hide { border: 1px solid var(--ink); background: transparent; width: 26px; height: 26px; cursor: pointer; font: inherit; line-height: 1; }
.poll-question { margin: 8px 0; font-weight: bold; }
.poll-choices { display: flex; flex-direction: column; gap: 6px; }
.poll-choice { display: flex; align-items: flex-start; gap: 8px; cursor: pointer; }
.poll-foot { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: 10px; }
.poll-tab { display: block; margin-left: auto; padding: 8px 12px; border: 2px solid var(--ink); background: var(--paper-light); cursor: pointer; font: inherit; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4); }
.poll-thanks { text-align: center; }
.poll-admin-list { display: flex; flex-direction: column; gap: 14px; }
.poll-admin { padding: 10px 12px; border: 1px solid var(--ink); background: var(--paper-light); }
.poll-results { display: flex; flex-direction: column; gap: 6px; margin: 10px 0; }
.poll-result { display: grid; grid-template-columns: minmax(80px, 30%) minmax(0, 1fr) auto; gap: 8px; align-items: center; }
.poll-bar { display: block; height: 12px; background: rgba(0, 0, 0, 0.12); border: 1px solid var(--ink); }
.poll-bar i { display: block; height: 100%; background: var(--stamp); }
.poll-option-row { display: flex; gap: 6px; margin: 6px 0; }
.poll-option-row input { flex: 1; min-width: 0; }
.poll-voters { margin-top: 8px; }
@media (max-width: 560px) { .poll-widget { right: 8px; bottom: 8px; width: calc(100vw - 16px); } .poll-result { grid-template-columns: minmax(0, 1fr); } }
.users-table { table-layout: fixed; width: 100%; }
.users-table th, .users-table td { overflow-wrap: anywhere; white-space: normal; }
.users-table th:nth-child(1) { width: 18%; }
.users-table th:nth-child(2) { width: 14%; }
.users-table th:nth-child(3) { width: 20%; }
.users-table th:nth-child(4) { width: 13%; }
.users-table th:nth-child(5) { width: 12%; }
.users-table th:nth-child(6) { width: 12%; }
.users-table th:nth-child(7) { width: 11%; }
.users-table .pill, .users-table .place { white-space: normal; }
.users-table .btn { padding-left: 8px; padding-right: 8px; white-space: nowrap; }
.pager { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; margin-top: 12px; }
.pager-nav { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; }
.pager-gap { padding: 0 4px; }
@media (max-width: 560px) { .users-table { table-layout: auto; } .users-table th:nth-child(n) { width: auto; } .pager { justify-content: center; } }
.chan-block { border-bottom: 1px dotted var(--rule); }
.chan-block > .chan-row { border-bottom: 0; }
.chan-factions { margin: 0 0 8px 12px; padding: 6px 10px; border-left: 3px solid var(--ink); background: rgba(255, 255, 255, 0.2); }
.chan-factions summary { cursor: pointer; font-size: 0.9rem; }
.chan-sub { padding: 4px 0; }

.chrono-panel { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; margin: 14px 0; padding: 10px 14px; border: 1px solid var(--ink); background: var(--field); }
.chrono-title { text-transform: uppercase; letter-spacing: 0.08em; font-size: 0.78rem; color: var(--faded); }
.chrono-clock { font-size: 1.7rem; font-variant-numeric: tabular-nums; letter-spacing: 0.04em; min-width: 5.2ch; }
.chrono-clock.running { color: var(--stamp); }
.chrono-line { margin: 10px 0; }

.ribbon-tiers { display: flex; gap: 4px; flex: none; }
.ribbon-tiers .ribbon-item { padding: 2px; background: #6b6450; }
.ribbon-todo-list li { align-items: flex-start; }
.ribbon-todo-text { display: flex; flex-direction: column; gap: 1px; }

.deco-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 14px; }
.deco-medal { margin: 0; display: flex; flex-direction: column; align-items: center; text-align: center; gap: 6px; }
.deco-medal figcaption { display: flex; flex-direction: column; gap: 2px; font-size: 0.82rem; }
.deco-art { color: inherit; filter: drop-shadow(0 1px 1px rgba(0,0,0,0.35)); }
.deco-list { display: flex; flex-direction: column; gap: 8px; margin-bottom: 10px; }
.deco-chip { display: grid; grid-template-columns: 34px 1fr auto; gap: 10px; align-items: center; }
.deco-form { display: flex; gap: 12px; align-items: flex-start; }
.deco-preview { min-width: 56px; min-height: 74px; }
.deco-fields { display: flex; flex-direction: column; gap: 6px; flex: 1; }
@media print { .deco-medal { break-inside: avoid; } }

.cal-event.dragging { z-index: 50; opacity: 0.85; cursor: grabbing; pointer-events: none; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4); }
.cal-day .cal-event { touch-action: manipulation; }
.cal-drag-tip { position: fixed; z-index: 9999; padding: 3px 8px; font-size: 0.78rem; color: #fff; background: #2a2a24; border: 1px solid #000; pointer-events: none; white-space: nowrap; }
.cal-drag-tip.bad { background: #8a1c1c; }

.deco-form { flex-direction: column; }
.deco-catalog { width: 100%; max-height: 300px; overflow-y: auto; border: 1px solid rgba(0,0,0,0.25); padding: 4px 8px; }
.deco-cat summary { cursor: pointer; padding: 5px 0; font-weight: 700; }
.deco-pick-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(92px, 1fr)); gap: 6px; padding: 4px 0 10px; }
.deco-pick { display: flex; flex-direction: column; align-items: center; gap: 3px; padding: 6px 4px; font: inherit; font-size: 0.68rem; line-height: 1.15; text-align: center; color: inherit; background: transparent; border: 2px solid transparent; cursor: pointer; }
.deco-pick:hover { background: rgba(0,0,0,0.06); }
.deco-pick.on { border-color: #7a2620; background: rgba(122,38,32,0.12); }
.deco-fields { width: 100%; }
.deco-actions { display: flex; align-items: center; justify-content: space-between; gap: 10px; }

.member-back { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }

.deco-pick.locked { opacity: 0.35; cursor: not-allowed; }
.deco-pick em { font-style: normal; font-size: 0.62rem; color: #6a5a30; }

.btn[hidden] { display: none; }

.site-check { margin: 10px 0 14px; display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.site-check-result { flex: 1 1 260px; }
.site-check-result .callout { margin: 0; }

.cand-tabs .tabs { margin-top: 8px; }
.cand-exchange { display: grid; gap: 10px; }
.cx-list { display: grid; gap: 8px; max-height: 320px; overflow-y: auto; padding: 4px; border: 1px solid var(--rule); background: var(--field); }
.cx-msg { padding: 8px 10px; border: 1px solid var(--rule); background: rgba(255, 255, 255, 0.45); max-width: 88%; justify-self: start; }
.cx-msg.mine { justify-self: end; background: rgba(185, 214, 166, 0.45); }
.cx-msg.accord { justify-self: stretch; max-width: 100%; background: rgba(185, 214, 166, 0.6); }
.cx-msg p { margin: 4px 0; }
.cx-head { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.cx-slot { font-weight: bold; }
.cx-form { display: grid; gap: 8px; }
.cx-form textarea { width: 100%; resize: vertical; }
.cx-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.cx-badge { font-size: 0.85rem; padding: 2px 8px; border: 1px solid var(--rule); background: var(--field); }
.cx-badge.new { border-color: var(--stamp); color: var(--stamp); font-weight: bold; }

.pulse-bar { position: fixed; left: 50%; bottom: 76px; transform: translateX(-50%); z-index: 60; display: flex; align-items: center; gap: 12px; padding: 8px 14px; background: var(--ink); color: var(--paper, #ddd6bf); border: 1px solid var(--rule); box-shadow: 0 4px 14px rgba(0, 0, 0, 0.4); font-size: 0.9rem; max-width: calc(100vw - 24px); }

.cx-layout { display: grid; grid-template-columns: minmax(200px, 280px) minmax(0, 1fr); gap: 14px; align-items: start; }
.cx-convs { display: grid; gap: 6px; max-height: 520px; overflow-y: auto; }
.cx-conv { display: flex; justify-content: space-between; align-items: center; gap: 8px; width: 100%; text-align: left; font: inherit; color: inherit; padding: 8px 10px; background: var(--field); border: 1px solid var(--rule); cursor: pointer; }
.cx-conv:hover { border-color: var(--ink); }
.cx-conv.current { border-color: var(--ink); border-left: 4px solid var(--stamp); background: rgba(255, 255, 255, 0.5); }
.cx-main { min-width: 0; }
.cx-main .cx-list { max-height: 420px; }
.tab .count { margin-left: 6px; }
@media (max-width: 720px) { .cx-layout { grid-template-columns: 1fr; } .cx-convs { max-height: 220px; } }

.tab .count { display: inline-flex; align-items: center; justify-content: center; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 9px; background: var(--stamp); color: #fff; font-size: 0.72rem; line-height: 1; }

.cx-head { display: flex; flex-wrap: wrap; align-items: center; column-gap: 10px; row-gap: 2px; }
.cx-head > .cx-date { margin-left: 4px; }

.cx-main, .cx-list, .cx-form { min-width: 0; }
.cx-form input[type="datetime-local"] { max-width: 100%; }
@media (max-width: 720px) {
  .cx-actions { flex-direction: column; align-items: stretch; }
  .cx-actions .cx-sep { display: none; }
  .cx-actions input, .cx-actions .btn { width: 100%; }
  .cx-msg { max-width: 100%; }
  .cx-conv { padding: 8px; }
  .cand-card { flex-wrap: wrap; }
}

.note-list { display: flex; flex-direction: column; gap: 8px; margin-bottom: 10px; }
.note-item { border: 1px solid var(--line, rgba(0,0,0,.15)); border-radius: 6px; padding: 8px 10px; display: flex; flex-direction: column; gap: 6px; align-items: flex-start; }
.note-body { margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; }
.note-form { display: flex; flex-direction: column; gap: 8px; align-items: flex-start; }
.note-form textarea { width: 100%; }
.note-flag { font-size: .85rem; margin-right: 6px; white-space: nowrap; }

.order-section { margin: 0 0 14px; }
.order-rows { display: flex; flex-direction: column; gap: 10px; margin-bottom: 10px; }
.order-row { display: grid; grid-template-columns: minmax(0, 1.4fr) repeat(auto-fit, minmax(150px, 1fr)); gap: 8px; align-items: start; padding: 8px; border: 1px dashed var(--ink); }
.order-person { display: flex; flex-direction: column; gap: 6px; }
.order-field { display: flex; flex-direction: column; gap: 6px; }
.order-medals { display: flex; flex-direction: column; gap: 6px; align-items: flex-start; }
.order-medal { display: flex; gap: 6px; width: 100%; }
.order-medal input { flex: 1; min-width: 0; }
.order-row select, .order-row input[type=text] { width: 100%; }
.order-preview { width: 100%; font-family: ui-monospace, Consolas, monospace; font-size: .9rem; line-height: 1.5; margin-bottom: 10px; white-space: pre-wrap; }
@media (max-width: 700px) { .order-row { grid-template-columns: minmax(0, 1fr); } }
.order-row > .btn { align-self: start; justify-self: start; width: auto; }

.order-by { text-align: center; font-weight: bold; letter-spacing: .03em; margin: 14px 0 10px; }
.order-block { margin: 30px 0 0; }
.order-block h2 { font-size: 1.05rem; margin: 0 0 8px; }
.order-block ul { list-style: none; margin: 0; padding: 0; }
.order-block li { padding: 5px 0; border-bottom: 1px dotted var(--rule); line-height: 1.45; }
.order-sheet .sign { margin-top: 44px; }
.member-tabs { margin: 0 0 10px; max-width: 860px; margin-inline: auto; }
.member-tabs .tab { color: var(--paper); }
.member-tabs .tab[aria-selected="true"] { color: var(--ink); }

.clickable { cursor: pointer; }
.kg-card li.clickable:hover, .roster-table tr.clickable:hover { background: rgba(120, 90, 30, 0.16); }
.kg-card li a, .roster-table td a { text-decoration: underline dotted; text-underline-offset: 3px; }

.pdf-viewer.pdf-full { position: fixed; inset: 0; z-index: 10000; display: flex; flex-direction: column; background: #2b2b28; padding: 10px; box-sizing: border-box; color: #eee; }
.pdf-viewer.pdf-full .pdf-pages { height: auto; flex: 1 1 auto; min-height: 0; }
.pdf-viewer.pdf-full .pdf-toolbar { flex: 0 0 auto; }
.pdf-viewer.pdf-full .muted { color: #cfcfc6; }
body.pdf-full-open { overflow: hidden; }
.pdf-zoom { flex-wrap: wrap; justify-content: flex-end; }

.cand-open-groups { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 14px; margin-top: 12px; }
.cand-open-group { border: 1px solid var(--rule); background: var(--field); }
.cand-open-group > header { display: flex; align-items: center; gap: 8px; padding: 8px 12px; border-bottom: 1px solid var(--rule); background: rgba(0, 0, 0, 0.06); }
.cand-open-group > header strong { flex: 1; }
.cand-open-group ul { list-style: none; margin: 0; padding: 0; }
.cand-open-row { display: flex; align-items: center; gap: 10px; padding: 8px 12px; border-bottom: 1px dotted var(--rule); }
.cand-open-row:last-child { border-bottom: 0; }
.cand-open-dot { width: 9px; height: 9px; border-radius: 50%; flex: 0 0 auto; background: var(--ok, #3d6b2f); }
.cand-open-row.is-closed .cand-open-dot { background: var(--stamp, #8a2a2a); }
.cand-open-text { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.cand-open-text small { color: var(--faded); }

dialog.modal:has(.cand-detail) { max-width: min(1100px, 96vw); width: min(1100px, 96vw); }
.s4 { background: #b07a1e; }
.s5 { background: #5a4a7a; }
.s6 { background: #2f7a7a; }
.offline-banner { background: #5a4a14; }
.admin-tools { display: flex; justify-content: flex-end; margin: 8px 0; }
.selftest-list { list-style: none; margin: 8px 0 0; padding: 0; max-height: 50vh; overflow-y: auto; }
.selftest-list li { padding: 4px 0; border-bottom: 1px dotted var(--rule); font-size: 0.9rem; }
.selftest-list li.ok span { color: #2f6b2f; }
.selftest-list li.bad span { color: #8a2a2a; }

.fiche-grid { display: grid; grid-template-columns: 210px 1fr; gap: 22px; align-items: start; }
.fiche-left { display: flex; flex-direction: column; gap: 10px; }
.fiche-portrait { width: 100%; aspect-ratio: 4 / 5; border: 3px double var(--ink); background: #ece4cb; overflow: hidden; }
.fiche-portrait.small { width: 110px; flex: 0 0 110px; }
.fiche-portrait img { width: 100%; height: 100%; object-fit: cover; display: block; }
.fiche-portrait-empty { height: 100%; display: flex; align-items: center; justify-content: center; text-align: center; color: var(--faded); font-size: 0.85rem; padding: 8px; }
.fiche-statut { text-align: center; border: 2px solid var(--ink); padding: 7px 8px; font-weight: bold; letter-spacing: 0.06em; text-transform: uppercase; font-size: 0.85rem; }
.fiche-statut small { display: block; font-weight: normal; text-transform: none; letter-spacing: 0; margin-top: 2px; }
.fiche-statut.ok { border-color: #2f6b2f; color: #2f6b2f; }
.fiche-statut.wait { border-color: #8a6a14; color: #8a6a14; }
.fiche-statut.bad { border-color: #8a2a2a; color: #8a2a2a; }
.fiche-kv { margin-top: 12px; }
.fiche-toolbar { display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 0 4px; }
.fiche-story { white-space: pre-line; margin: 6px 0; }
.fiche-form { display: grid; gap: 10px; }
.fiche-field { display: grid; gap: 4px; }
.fiche-field span { font-size: 0.85rem; color: var(--faded); }
.fiche-field input, .fiche-field select, .fiche-field textarea { width: 100%; box-sizing: border-box; font: inherit; padding: 6px 8px; }
.fiche-photo-row { display: flex; gap: 14px; align-items: flex-start; }
.affair-body { display: block; margin-top: 3px; white-space: pre-line; }
.affair-actions { display: inline-flex; gap: 8px; margin-left: 10px; align-items: center; }
.wanted-banner { display: flex; flex-wrap: wrap; gap: 10px 16px; align-items: center; border: 3px double #8a2a2a; background: rgba(138, 42, 42, 0.1); color: #8a2a2a; padding: 8px 12px; margin: 6px 0 12px; }
.wanted-panel { border-left: 6px solid #8a2a2a; }
.wanted-list { list-style: none; margin: 8px 0 0; padding: 0; display: grid; gap: 10px; }
.wanted-list li { display: grid; gap: 3px; padding-bottom: 8px; border-bottom: 1px dotted var(--rule); }
.wanted-reason { font-weight: bold; }
@media (max-width: 720px) { .fiche-grid { grid-template-columns: 1fr; } .fiche-left { max-width: 220px; } }
.org-platoon { margin: 10px 0 0 10px; }
.org-platoon > h4 { margin: 0 0 6px; font-size: 0.86rem; letter-spacing: 0.06em; text-transform: uppercase; color: var(--faded); }
.org-platoon > h4 small { text-transform: none; letter-spacing: 0; font-weight: normal; }
.kg-assign { margin-left: auto; padding: 1px 8px; font-size: 0.72rem; }
.people-results { display: flex; flex-wrap: wrap; gap: 6px; margin: 6px 0; }
.proc-pieces { list-style: none; margin: 8px 0; padding: 0; }
.proc-pieces li { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 6px 0; border-bottom: 1px solid var(--rule); }
.kg-card li.draggable { cursor: grab; }
.kg-card li.dragging { opacity: 0.4; }
.kg-card.drop-ok { outline: 3px dashed var(--stamp); outline-offset: 2px; background: rgba(185, 214, 166, 0.35); }
.booklet-id { display: block; }
.internal-title { margin: 26px 0 14px; padding: 6px 10px; border: 1px dashed var(--rule); background: rgba(0, 0, 0, 0.04); font-size: 0.85rem; }
.internal-title small { color: var(--faded); }

.org-posts { margin: 6px 0 10px; padding: 8px 12px; border: 1px solid var(--rule, rgba(120, 100, 70, 0.35)); border-left-width: 3px; border-radius: 4px; background: rgba(120, 100, 70, 0.07); }
.org-posts > h5 { margin: 0 0 6px; font-size: 0.74rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--faded); }
.org-posts ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; }
.org-post { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; padding: 3px 4px; border-radius: 3px; }
.org-post.drop-ok { outline: 2px dashed var(--accent, #8a6d3b); background: rgba(138, 109, 59, 0.12); }
.org-post-title { min-width: 11em; font-size: 0.8rem; letter-spacing: 0.04em; color: var(--faded); }
.org-post.vacant .org-post-title { opacity: 0.8; }
.org-platoon > .org-posts { margin-left: 0; }

.collapsible { border-top: 1px solid var(--rule, rgba(120, 100, 70, 0.35)); padding-top: 6px; }
.collapsible > summary { cursor: pointer; list-style: none; display: flex; align-items: baseline; gap: 10px; padding: 6px 0; font-size: 1.05rem; letter-spacing: 0.06em; text-transform: uppercase; }
.collapsible > summary::-webkit-details-marker { display: none; }
.collapsible > summary::before { content: '▸'; display: inline-block; width: 1em; transition: transform 0.15s; }
.collapsible[open] > summary::before { transform: rotate(90deg); }
.collapsible > summary small { text-transform: none; letter-spacing: 0; color: var(--faded); }
.collapsible-body { padding: 4px 0 10px; }

.org-company.pyramid { text-align: center; padding-bottom: 16px; }
.org-company.pyramid > h3 { justify-content: center; }
.pyramid .org-posts { text-align: left; }
.pyramid > .org-posts-company { position: relative; max-width: 820px; margin: 10px auto 24px; border-left-width: 1px; border-top: 3px solid var(--accent, #8a6d3b); }
.pyramid > .org-posts-company::after { content: ''; position: absolute; left: 50%; top: 100%; height: 24px; border-left: 2px solid var(--rule, rgba(120, 100, 70, 0.6)); }
.pyramid .org-posts ul { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; }
.pyramid .org-post { flex: 1 1 200px; flex-direction: column; align-items: center; text-align: center; padding: 8px; border: 1px solid var(--rule, rgba(120, 100, 70, 0.35)); background: rgba(255, 255, 255, 0.25); }
.pyramid .org-post-title { min-width: 0; font-weight: bold; }
.pyramid .org-posts > h5 { text-align: center; }
.org-zugs { display: flex; flex-wrap: wrap; justify-content: center; align-items: flex-start; }
.org-zugs > .org-platoon { position: relative; margin: 0; padding: 24px 8px 0; flex: 0 1 auto; max-width: 100%; }
.org-zugs > .org-platoon::before { content: ''; position: absolute; top: 0; left: 0; right: 0; border-top: 2px solid var(--rule, rgba(120, 100, 70, 0.6)); }
.org-zugs > .org-platoon::after { content: ''; position: absolute; top: 0; left: 50%; height: 24px; border-left: 2px solid var(--rule, rgba(120, 100, 70, 0.6)); }
.org-zugs > .org-platoon:first-child::before { left: 50%; }
.org-zugs > .org-platoon:last-child::before { right: 50%; }
.org-zugs > .org-platoon:only-child::before { display: none; }
.org-zugs .org-platoon > h4 { display: inline-block; padding: 4px 14px; border: 1px solid var(--rule, rgba(120, 100, 70, 0.5)); background: rgba(120, 100, 70, 0.12); }
.org-zugs .org-platoon > .org-posts { position: relative; margin-bottom: 24px; min-width: 240px; }
.org-zugs .org-platoon > .org-posts::after { content: ''; position: absolute; left: 50%; top: 100%; height: 24px; border-left: 2px solid var(--rule, rgba(120, 100, 70, 0.6)); }
.org-zugs .org-platoon > .kg-grid { justify-content: center; }
.org-direct { margin-top: 20px; }
.org-zugs > .org-platoon { flex: 0 0 316px; width: 316px; box-sizing: border-box; }
.org-zugs .org-platoon > .org-posts { min-width: 0; padding: 6px 8px; }
.org-zugs .org-platoon > .org-posts ul { gap: 4px; }
.org-zugs .org-platoon .org-post { padding: 4px 6px; gap: 2px; }
.org-zugs .org-platoon .org-post .btn { padding: 1px 8px; font-size: 0.75rem; }
.org-faction > .org-posts-council { position: relative; max-width: 900px; margin: 14px auto 30px; border-top: 3px solid var(--accent, #8a6d3b); text-align: left; }
.org-faction > .org-posts-council::after { content: ''; position: absolute; left: 50%; top: 100%; height: 30px; border-left: 2px solid var(--rule, rgba(120, 100, 70, 0.6)); }
.org-faction > .org-posts-council > h5 { text-align: center; font-size: 0.9rem; }
.org-posts .org-access { margin: 0 0 8px; text-align: center; font-size: 0.72rem; }
.org-faction > .org-posts-council .org-post { flex: 1 1 150px; flex-direction: column; align-items: center; text-align: center; padding: 8px; border: 1px solid var(--rule, rgba(120, 100, 70, 0.35)); background: rgba(255, 255, 255, 0.25); }
.org-faction > .org-posts-council ul { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; }
.org-faction > .org-posts-council .org-post-title { min-width: 0; font-weight: bold; }
.org-zugs { display: block; }
.org-zugs > .org-platoon { flex: none; width: auto; padding: 24px 0 0; text-align: center; }
.org-zugs > .org-platoon::before { display: none; }
.org-zugs .org-platoon > .org-posts { max-width: 820px; margin: 10px auto 24px; padding: 8px 12px; }
.org-zugs .org-platoon > .org-posts ul { gap: 8px; }
.org-zugs .org-platoon .org-post { padding: 8px; gap: 4px; flex: 1 1 200px; }
.org-zugs .org-platoon .org-post .btn { padding: 2px 10px; font-size: inherit; }
.org-zugs .org-platoon > .kg-grid { grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); text-align: left; }
.org-posts > h5 small { display: block; margin-top: 2px; text-transform: none; letter-spacing: 0; font-weight: normal; font-style: italic; }
dialog.modal:has(.structure-editor) { width: min(1100px, 96vw); max-width: min(1100px, 96vw); max-height: 92vh; overflow-y: auto; }
.structure-editor .struct-row { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-bottom: 6px; }
.structure-editor .struct-row input[type='text'], .structure-editor .struct-row select { flex: 1 1 260px; min-width: 0; }
.structure-editor fieldset.groups { margin-bottom: 18px; }
dialog.modal:has(.manage-dialog) { width: min(980px, 96vw); max-width: min(980px, 96vw); max-height: 92vh; overflow-y: auto; }
.manage-dialog .manage-block, .manage-dialog fieldset.decorations { margin: 0 0 14px; padding: 10px 14px; }
.manage-row { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.manage-row select { flex: 1 1 260px; min-width: 0; }
.manage-dialog .assign-list { display: grid; gap: 6px; }
.ctx-menu { position: fixed; z-index: 3000; min-width: 210px; padding: 4px; background: var(--paper, #e8dfc6); color: var(--ink, #1d1a14); border: 1px solid rgba(60, 50, 30, 0.7); box-shadow: 0 6px 18px rgba(0, 0, 0, 0.45); display: flex; flex-direction: column; }
.ctx-title { padding: 4px 10px 6px; font-size: 0.72rem; letter-spacing: 0.08em; text-transform: uppercase; opacity: 0.7; border-bottom: 1px solid rgba(60, 50, 30, 0.3); margin-bottom: 4px; }
.ctx-item { text-align: left; background: transparent; border: 0; padding: 7px 12px; font: inherit; color: inherit; cursor: pointer; }
.ctx-item:hover, .ctx-item:focus-visible { background: rgba(120, 100, 70, 0.28); outline: none; }
.ctx-item.danger { color: #8a1c14; }
.ctx-item.separated { border-top: 1px solid rgba(60, 50, 30, 0.3); margin-top: 4px; padding-top: 9px; }

.org-faction > header.org-fold { cursor: pointer; user-select: none; }
.org-faction > header.org-fold .org-chevron { margin-left: auto; font-size: 1.2rem; transition: transform 0.15s; }
.org-faction.collapsed > header.org-fold .org-chevron { transform: rotate(-90deg); }
.org-faction.collapsed > :not(header) { display: none; }

.sheet-cols { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px; align-items: start; }
.sheet-cols > .booklet-section { margin-top: 0; min-width: 0; }
.sheet-cols:empty { display: none; }
@media (max-width: 860px) { .sheet-cols { grid-template-columns: 1fr; gap: 0; } }
.sheet .fiche-toolbar { padding: 8px 10px; margin: 0 0 14px; border: 1px solid var(--rule); background: rgba(255, 255, 255, 0.35); justify-content: flex-end; }
.sheet .booklet-section { padding-top: 6px; }
.sheet .booklet-section > h2 { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; border-bottom: 2px solid var(--stamp); padding-bottom: 4px; margin-bottom: 12px; }
.sheet .booklet-section > h2 small { font-size: 0.75rem; letter-spacing: 0.05em; text-transform: uppercase; color: var(--faded); }
.fiche-grid { padding: 14px; border: 1px solid var(--rule); background: rgba(255, 255, 255, 0.22); }
.dossier-block { margin-top: 28px; padding: 12px 16px 16px; border: 2px dashed var(--rule); background: rgba(0, 0, 0, 0.035); }
.dossier-block > .internal-title { margin: 0 0 14px; border: 0; background: none; padding: 0 0 8px; border-bottom: 1px solid var(--rule); }
.dossier-block > .booklet-section { margin-top: 16px; }
.sheet-cols:has(> :only-child) { grid-template-columns: 1fr; }

.roster-tabs { order: -1; flex: 1 0 100%; margin-bottom: 4px; }
.fiche-portrait { position: relative; }
.portrait-fx { position: absolute; inset: 0; pointer-events: none; display: flex; align-items: flex-end; justify-content: center; padding-bottom: 14px; }
.portrait-stamp { transform: rotate(-8deg); border: 3px solid currentColor; padding: 3px 10px; font-weight: bold; letter-spacing: 0.12em; text-transform: uppercase; font-size: 0.8rem; background: rgba(236, 228, 203, 0.82); color: #8a1f1a; white-space: nowrap; }
.status-permission .portrait-stamp, .status-detache .portrait-stamp, .status-transfere .portrait-stamp { color: #2f4f6b; }
.status-blesse .portrait-stamp { color: #a3402a; }
.status-reforme .portrait-stamp, .status-licencie .portrait-stamp { color: #4a4a4a; }
.status-prisonnier .portrait-fx { background: repeating-linear-gradient(90deg, rgba(20, 20, 20, 0.9) 0, rgba(20, 20, 20, 0.9) 7px, transparent 7px, transparent 38px); box-shadow: inset 0 0 0 6px rgba(20, 20, 20, 0.85); }
.status-prisonnier img { filter: grayscale(0.7) contrast(0.9); }
.status-disparu img, .status-decede img { filter: grayscale(1) contrast(0.85); }
.status-disparu .portrait-fx { background: radial-gradient(circle at 50% 40%, transparent 30%, rgba(30, 30, 30, 0.45)); }
.status-decede .portrait-fx { background: linear-gradient(135deg, rgba(0, 0, 0, 0.9) 0, rgba(0, 0, 0, 0.9) 22%, transparent 22%), linear-gradient(0deg, rgba(0, 0, 0, 0.25), transparent 40%); }
.status-decede .portrait-stamp { color: #111; border-color: #111; }
.status-deserteur img { filter: sepia(0.6) contrast(0.9); }
.status-blesse .portrait-fx::before { content: ''; position: absolute; left: -6%; right: -6%; top: 20%; height: 14%; background: repeating-linear-gradient(90deg, #f5f1e4 0, #f5f1e4 10px, #e4ddc6 10px, #e4ddc6 12px); transform: rotate(-12deg); border-top: 1px solid #b9b19a; border-bottom: 1px solid #b9b19a; opacity: 0.92; }

.roster-pager { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px 16px; margin: 8px 0; }
.roster-pager select { margin-left: 6px; }
.roster-pages { display: flex; align-items: center; gap: 6px; }
.roster-pages button:disabled { opacity: 0.4; cursor: default; }
.sheet .fiche-toolbar { flex-wrap: nowrap; justify-content: stretch; gap: 6px; }
.sheet .fiche-toolbar .btn { flex: 1 1 0; min-width: 0; white-space: nowrap; font-size: 0.78rem; padding: 5px 6px; text-align: center; }
@media (max-width: 720px) { .sheet .fiche-toolbar { flex-wrap: wrap; } .sheet .fiche-toolbar .btn { flex: 1 1 45%; white-space: normal; } }
.sheet .fiche-toolbar { flex-wrap: wrap; justify-content: center; }
.sheet .fiche-toolbar .btn { flex: 1 1 auto; min-width: auto; overflow: visible; text-overflow: clip; font-size: 0.74rem; padding: 5px 8px; letter-spacing: 0; }

.classified-mark { position: absolute; inset: 0; pointer-events: none; z-index: 3; overflow: hidden; }
.wax-seal { position: absolute; top: 104px; left: 30px; width: 84px; filter: drop-shadow(0 3px 3px rgba(0, 0, 0, 0.4)); }
.wax-seal svg { display: block; }
.wax-ribbon { position: absolute; top: 70px; width: 14px; height: 54px; background: #1d1c18; z-index: -1; }
.wax-ribbon.one { left: 26px; transform: rotate(8deg); }
.wax-ribbon.two { left: 44px; transform: rotate(-10deg); background: #7a2a22; }
@media (max-width: 720px) { .wax-seal { top: 74px; left: 12px; width: 60px; } .wax-ribbon { top: 50px; height: 38px; } .wax-ribbon.one { left: 18px; } .wax-ribbon.two { left: 31px; } }
.geheim-stamp { position: absolute; top: 42%; left: 50%; transform: translate(-50%, -50%) rotate(-16deg); padding: 4px 28px; border: 6px solid rgba(122, 42, 34, 0.32); color: rgba(122, 42, 34, 0.32); font-size: clamp(1.5rem, 6.2vw, 3.4rem); font-weight: bold; letter-spacing: 0.14em; text-transform: uppercase; white-space: nowrap; mix-blend-mode: multiply; }
.geheim-tag { display: inline-block; margin-left: 12px; padding: 0 8px; border: 2px solid var(--stamp); color: var(--stamp); font-size: 0.7rem; letter-spacing: 0.25em; text-transform: uppercase; transform: rotate(-4deg); }

.sheet-fallen { outline: 14px solid #0d0d0d; outline-offset: -14px; }
.sheet-fallen::before { inset: 22px; }
.mourning-band { display: flex; align-items: baseline; justify-content: center; flex-wrap: wrap; gap: 6px 14px; margin: 6px -4px 16px; padding: 8px 14px; background: #0d0d0d; color: #e8e2cf; letter-spacing: 0.16em; text-transform: uppercase; position: relative; z-index: 2; }
.mourning-band .mourning-cross { font-size: 1.4rem; }
.mourning-band small { flex-basis: 100%; text-align: center; letter-spacing: 0.04em; text-transform: none; opacity: 0.8; }
.mourning-ribbon { position: absolute; top: 14px; right: 150px; width: 26px; height: 120px; background: linear-gradient(90deg, #070707, #1c1c1c 50%, #070707); clip-path: polygon(0 0, 100% 0, 100% 100%, 50% 86%, 0 100%); z-index: 4; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.4); }

.pref-box { display: flex; flex-direction: column; gap: 6px; margin: 14px 0; padding: 10px 12px; border: 1px solid var(--rule); background: rgba(255, 255, 255, 0.22); }

.telegram { margin: 6px 8px; border: 1px dashed #8a7a4c; background: #e9dfb8; box-shadow: 1px 2px 0 rgba(0, 0, 0, 0.15); }
.telegram.unread { background: #f0e4b0; box-shadow: inset 3px 0 0 var(--stamp), 1px 2px 0 rgba(0, 0, 0, 0.15); }
.telegram .bell-text { text-transform: uppercase; letter-spacing: 0.04em; font-size: 0.82rem; }
.telegram .tg-head { display: block; margin-bottom: 2px; padding-bottom: 2px; border-bottom: 1px dotted #8a7a4c; font-size: 0.66rem; letter-spacing: 0.22em; color: var(--stamp); }
.telegram .tg-stop { display: block; margin-top: 2px; font-size: 0.66rem; letter-spacing: 0.3em; color: var(--faded); }
.telegram .bell-body { display: block; text-transform: none; }
.telegram .bell-glyph { border-radius: 2px; }

.notfound { text-align: center; position: relative; overflow: hidden; padding-top: 40px; padding-bottom: 40px; }
.notfound-stamp { display: inline-block; margin-bottom: 14px; padding: 4px 26px; border: 7px solid rgba(122, 42, 34, 0.5); color: rgba(122, 42, 34, 0.6); font-size: clamp(1.6rem, 6vw, 3.4rem); font-weight: bold; letter-spacing: 0.14em; transform: rotate(-6deg); }
.classified-404 strong { letter-spacing: 0.25em; margin-right: 8px; }

:root[data-theme="nuit"] { --desk: #0d0b08; --desk-dark: #060504; --paper: #a89a78; --paper-light: #b5a782; --ink: #17140d; --faded: #4a4330; --rule: #6b6247; --field: rgba(255, 240, 200, 0.15); }
:root[data-theme="nuit"][data-faction] { --desk: #0d0b08; --desk-dark: #060504; }
:root[data-theme="nuit"] body::before { content: ''; position: fixed; inset: 0; z-index: 40; pointer-events: none; background: radial-gradient(circle at 12% 88%, rgba(255, 176, 70, 0.22), transparent 38%), radial-gradient(ellipse at 50% 50%, transparent 35%, rgba(0, 0, 0, 0.6) 100%); animation: lamp-flicker 4.5s infinite steps(1, end); }
@keyframes lamp-flicker { 0%, 100% { opacity: 1; } 8% { opacity: 0.93; } 15% { opacity: 1; } 42% { opacity: 0.9; } 47% { opacity: 1; } 71% { opacity: 0.95; } 78% { opacity: 1; } }
.oil-lamp { position: fixed; left: 14px; bottom: 10px; z-index: 41; pointer-events: none; }
.oil-lamp .flame { transform-origin: 32px 28px; animation: flame-sway 1.6s ease-in-out infinite alternate; }
@keyframes flame-sway { from { transform: scale(1, 1) rotate(-3deg); } to { transform: scale(0.94, 1.08) rotate(3deg); } }
@media (prefers-reduced-motion: reduce) { :root[data-theme="nuit"] body::before, .oil-lamp .flame { animation: none; } }
@media print { .oil-lamp, :root[data-theme="nuit"] body::before { display: none; } }
.sheet .fiche-toolbar .btn { flex: 0 1 auto; }

.org-post-edit { margin-left: 6px; padding: 0 4px; background: none; border: 0; color: var(--faded); cursor: pointer; font-size: 0.85rem; opacity: 0.6; }
.org-post-edit:hover { opacity: 1; color: var(--stamp); }
.kg-grid { display: flex; flex-wrap: wrap; justify-content: center; gap: 14px; }
.kg-grid > .kg-card { flex: 1 1 300px; max-width: 420px; }

.cal-now { position: absolute; left: 0; right: 0; height: 2px; margin-top: -1px; background: rgba(190, 30, 30, 0.35); z-index: 5; pointer-events: none; }
.cal-now.is-today { background: #c0281e; box-shadow: 0 0 4px rgba(192, 40, 30, 0.6); }
.cal-now.is-today::before { content: ''; position: absolute; left: -5px; top: -4px; width: 10px; height: 10px; border-radius: 50%; background: #c0281e; }

html[data-cursor="custom"], html[data-cursor="custom"] body { cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='26' height='26' viewBox='0 0 26 26'%3E%3Cpath d='M3 2l1 19 5-5 4 8 4-2-4-8 7-1z' fill='%23e8dfc6' stroke='%231d1a14' stroke-width='1.6' stroke-linejoin='round'/%3E%3C/svg%3E") 3 2, auto; }
html[data-cursor="custom"] a, html[data-cursor="custom"] button, html[data-cursor="custom"] [role="button"], html[data-cursor="custom"] [role="menuitem"], html[data-cursor="custom"] label, html[data-cursor="custom"] summary, html[data-cursor="custom"] select, html[data-cursor="custom"] input[type="checkbox"], html[data-cursor="custom"] input[type="radio"], html[data-cursor="custom"] input[type="file"], html[data-cursor="custom"] .clickable { cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Cpath d='M3 2l1 19 5-5 4 8 4-2-4-8 7-1z' fill='%23e8dfc6' stroke='%231d1a14' stroke-width='1.6' stroke-linejoin='round'/%3E%3Ccircle cx='22' cy='22' r='5' fill='%239b1c14' stroke='%231d1a14' stroke-width='1.4'/%3E%3C/svg%3E") 3 2, pointer; }
html[data-cursor="custom"] input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="button"]):not([type="submit"]), html[data-cursor="custom"] textarea { cursor: text; }
html[data-cursor="custom"] :disabled, html[data-cursor="custom"] [aria-disabled="true"] { cursor: not-allowed; }
html[data-theme="nuit"][data-cursor="custom"], html[data-theme="nuit"][data-cursor="custom"] body { cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='26' height='26' viewBox='0 0 26 26'%3E%3Cpath d='M3 2l1 19 5-5 4 8 4-2-4-8 7-1z' fill='%232b2418' stroke='%23e8dfc6' stroke-width='1.6' stroke-linejoin='round'/%3E%3C/svg%3E") 3 2, auto; }
html[data-theme="nuit"][data-cursor="custom"] a, html[data-theme="nuit"][data-cursor="custom"] button, html[data-theme="nuit"][data-cursor="custom"] [role="button"], html[data-theme="nuit"][data-cursor="custom"] [role="menuitem"], html[data-theme="nuit"][data-cursor="custom"] label, html[data-theme="nuit"][data-cursor="custom"] summary, html[data-theme="nuit"][data-cursor="custom"] select, html[data-theme="nuit"][data-cursor="custom"] .clickable { cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Cpath d='M3 2l1 19 5-5 4 8 4-2-4-8 7-1z' fill='%232b2418' stroke='%23e8dfc6' stroke-width='1.6' stroke-linejoin='round'/%3E%3Ccircle cx='22' cy='22' r='5' fill='%239b1c14' stroke='%23e8dfc6' stroke-width='1.4'/%3E%3C/svg%3E") 3 2, pointer; }
.ctx-menu { animation: ctx-in 0.12s ease-out; }
@keyframes ctx-in { from { opacity: 0; transform: translateY(-3px) scale(0.98); } to { opacity: 1; transform: none; } }
.ctx-item::before { content: ''; display: inline-block; width: 0; transition: width 0.12s; }
.ctx-item:hover::before, .ctx-item:focus-visible::before { width: 6px; }
@media print { .ctx-menu { display: none; } }

.law-code-title { margin: 22px 0 4px; border-bottom: 2px solid var(--ink); padding-bottom: 4px; }
.law-section-title { margin: 16px 0 8px; font-size: 1.05rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--stamp); }
.law-article mark { background: rgba(212, 160, 23, 0.55); color: inherit; padding: 0 1px; }
.announce-head .actions { display: inline-flex; gap: 8px; flex-wrap: wrap; }

.topbar .search-box .search-input { color: #f1e8cc; caret-color: #f1e8cc; background: rgba(255, 255, 255, 0.1); border-color: rgba(241, 232, 204, 0.45); }
.topbar .search-box .search-input::placeholder { color: rgba(241, 232, 204, 0.6); }
.topbar .search-box .search-input:focus { background: rgba(255, 255, 255, 0.16); border-color: #f1e8cc; }

@font-face {
  font-family: "Reenie Beanie";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/reenie-beanie.woff2) format("woff2");
}

.tw-char { opacity: 0; }
.tw-char.tw-show { opacity: 1; }
.tw-wrap { display: inline; }

.sheet .stamp,
.sheet .stamp.ok {
  mix-blend-mode: multiply;
  transform: rotate(var(--rot, 6deg));
  opacity: var(--rest, 0.86);
  text-shadow: 0 0 1px currentColor;
  box-shadow: inset 0 0 0 1px rgba(122, 42, 34, 0.12);
  animation: stamp-press-var 0.7s cubic-bezier(0.2, 0.8, 0.3, 1.1) 0.45s both;
}
.sheet .stamp.ok { box-shadow: inset 0 0 0 1px rgba(47, 90, 42, 0.14); }
@keyframes stamp-press-var {
  0% { opacity: 0; filter: blur(2px); transform: rotate(calc(var(--rot, 6deg) - 14deg)) translateY(-24px) scale(2.4); }
  58% { opacity: 1; filter: blur(0); transform: rotate(var(--rot, 6deg)) translateY(0) scale(0.9); }
  76% { transform: rotate(var(--rot, 6deg)) scale(1.06); }
  100% { opacity: var(--rest, 0.86); transform: rotate(var(--rot, 6deg)) scale(1); }
}

.sheet {
  box-shadow:
    inset 0 0 70px rgba(150, 105, 38, 0.24),
    inset 0 0 14px rgba(120, 80, 25, 0.22),
    0 2px 0 #0003,
    0 6px 10px rgba(0, 0, 0, 0.3),
    0 26px 46px -8px rgba(0, 0, 0, 0.62),
    14px 30px 60px -22px rgba(0, 0, 0, 0.5);
}
.sheet > .sheet-curl {
  position: absolute;
  right: 0;
  bottom: 0;
  width: 46px;
  height: 46px;
  pointer-events: none;
  z-index: 3;
  background: linear-gradient(135deg, transparent 0 46%, rgba(0, 0, 0, 0.3) 48.5%, #ede6cc 50.5%, #cfc5a2 100%);
  box-shadow: -3px -3px 6px rgba(0, 0, 0, 0.16);
  border-top-left-radius: 3px;
}

.fiche-portrait { overflow: visible; }
.fiche-portrait::before {
  content: "";
  position: absolute;
  inset: -5px;
  z-index: 3;
  pointer-events: none;
  background:
    linear-gradient(135deg, #5e4d2e 50%, transparent 50%) top left / 24px 24px no-repeat,
    linear-gradient(225deg, #5e4d2e 50%, transparent 50%) top right / 24px 24px no-repeat,
    linear-gradient(45deg, #5e4d2e 50%, transparent 50%) bottom left / 24px 24px no-repeat,
    linear-gradient(315deg, #5e4d2e 50%, transparent 50%) bottom right / 24px 24px no-repeat;
  filter: drop-shadow(0 1px 1px rgba(0, 0, 0, 0.4));
}
.fiche-portrait > .fiche-staple {
  position: absolute;
  top: -7px;
  left: 50%;
  width: 40px;
  height: 7px;
  margin-left: -20px;
  z-index: 4;
  border-radius: 1px;
  background: linear-gradient(#d6d8db, #8b8d91 55%, #5b5d61);
  box-shadow: 0 2px 2px rgba(0, 0, 0, 0.45);
  transform: rotate(-2.5deg);
  pointer-events: none;
}
.pen-note {
  margin: 10px 0 0 auto;
  width: fit-content;
  max-width: 100%;
  transform: rotate(-3deg);
  font-family: "Reenie Beanie", var(--font);
  font-size: 1.7rem;
  line-height: 1;
  color: #1f3a78;
  opacity: 0.88;
  text-shadow: 0 0 1px rgba(31, 58, 120, 0.5);
}
.pen-note i { font-style: normal; margin-left: 6px; font-size: 1.9rem; color: #1f3a78; }

.spinner { gap: 14px; }
.spin-stamp {
  display: inline-block;
  width: 24px;
  height: 24px;
  border: 3px solid var(--stamp);
  border-radius: 3px;
  opacity: 0.8;
  transform-origin: 50% 100%;
  animation: spin-stamp-press 1.5s ease-in-out infinite;
}
@keyframes spin-stamp-press {
  0%, 100% { transform: translateY(-9px) rotate(-8deg) scale(1.12); opacity: 0.3; }
  42% { transform: translateY(0) rotate(-8deg) scale(0.94); opacity: 0.85; }
  60% { transform: translateY(0) rotate(-8deg) scale(1); opacity: 0.8; }
}
.spin-type {
  display: inline-block;
  max-width: 100%;
  overflow: hidden;
  white-space: nowrap;
  border-right: 2px solid var(--ink);
  width: calc(var(--n, 12) * 1ch);
  animation: spin-typing 2.6s steps(var(--n, 12)) infinite, spin-caret 0.7s step-end infinite;
}
@keyframes spin-typing { 0% { width: 0; } 65%, 100% { width: calc(var(--n, 12) * 1ch); } }
@keyframes spin-caret { 50% { border-right-color: transparent; } }

.empty { border: 1px dashed var(--rule); background: rgba(255, 255, 255, 0.12); border-radius: 2px; letter-spacing: 0.03em; }
.empty::before { content: "— Dossier vide —"; display: block; margin-bottom: 4px; font-size: 0.75rem; letter-spacing: 0.2em; text-transform: uppercase; color: var(--stamp); opacity: 0.7; }

.panel h2, .sheet h2, .page h2 { text-transform: uppercase; letter-spacing: 0.12em; font-size: 1rem; }
.sheet .abt, .page > h1, .announce-head h1 { text-transform: uppercase; letter-spacing: 0.14em; }
.law-section-title { letter-spacing: 0.16em; }

@media (max-width: 560px) {
  body { font-size: 16px; line-height: 1.6; }
  .panel h2, .sheet h2, .page h2 { letter-spacing: 0.06em; }
  .pen-note { display: none; }
}

table.list tbody tr:nth-child(even) { background: rgba(60, 45, 20, 0.07); }
table.list tbody tr { transition: background 0.12s ease; }
table.list tbody tr:hover { background: rgba(122, 42, 34, 0.1); }
table.list tbody tr.flag td:first-child { box-shadow: inset 4px 0 0 var(--stamp); }
table.list tbody tr.flag { background: rgba(122, 42, 34, 0.09); }
table.list tbody tr.flag-wait td:first-child { box-shadow: inset 4px 0 0 var(--warn); }
table.list tbody tr.flag-wait { background: rgba(138, 101, 22, 0.14); }
table.list thead th { border-bottom: 3px double var(--ink); }
.law-article { background: repeating-linear-gradient(180deg, transparent 0 31px, rgba(60, 45, 20, 0.05) 31px 32px); }
.law-article.law-crime { border-left: 4px solid var(--stamp); }

@media (prefers-reduced-motion: reduce) {
  .sheet .stamp, .sheet .stamp.ok, .spin-stamp, .spin-type { animation: none; }
  .spin-type { width: auto; border-right: 0; }
  .tw-char { opacity: 1; }
}
@media print {
  .sheet .stamp, .sheet .stamp.ok { animation: none; }
  .tw-char { opacity: 1 !important; }
  .sheet > .sheet-curl, .fiche-portrait::before, .fiche-staple { display: none; }
}
.portrait-fx { overflow: hidden; }

.to-top, .expand-all { }
.to-top[hidden], .expand-all[hidden] { display: none !important; }
.to-top {
  position: fixed;
  right: 16px;
  bottom: 18px;
  z-index: 35;
  padding: 9px 14px;
  background: var(--stamp);
  color: var(--paper-light);
  border: 2px solid var(--ink);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.45);
  cursor: pointer;
  letter-spacing: 0.05em;
}
.to-top:hover { background: var(--ink); }
.law-tools { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
@media (max-width: 720px) {
  .law-top { cursor: pointer; position: relative; padding-right: 26px; }
  .law-top::after { content: "▾"; position: absolute; right: 4px; top: 2px; font-size: 1.1rem; color: var(--stamp); transition: transform 0.15s ease; }
  .law-article.collapsed .law-top::after { transform: rotate(-90deg); }
  .law-article.collapsed .announce-body, .law-article.collapsed .announce-foot { display: none; }
}
@media print { .to-top, .expand-all { display: none !important; } }

:root[data-theme="nuit"] body::before {
  background:
    radial-gradient(circle at 10% 92%, rgba(255, 170, 60, 0.3), rgba(255, 140, 40, 0.1) 26%, transparent 46%),
    radial-gradient(ellipse at 50% 50%, transparent 30%, rgba(0, 0, 0, 0.68) 100%);
  animation: lamp-flicker-a 3.7s infinite steps(1, end);
}
:root[data-theme="nuit"] body::after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 39;
  pointer-events: none;
  mix-blend-mode: screen;
  background:
    radial-gradient(circle 360px at var(--lx, 24%) var(--ly, 72%), rgba(255, 176, 80, 0.13), transparent 70%),
    radial-gradient(circle at 8% 96%, rgba(255, 190, 90, 0.1), transparent 34%);
  animation: lamp-flicker-b 2.9s infinite steps(1, end);
}
@keyframes lamp-flicker-a { 0%, 100% { opacity: 1; } 6% { opacity: 0.92; } 11% { opacity: 1; } 19% { opacity: 0.96; } 38% { opacity: 0.88; } 41% { opacity: 1; } 63% { opacity: 0.94; } 69% { opacity: 0.99; } 84% { opacity: 0.9; } 88% { opacity: 1; } }
@keyframes lamp-flicker-b { 0%, 100% { opacity: 0.9; } 14% { opacity: 1; } 27% { opacity: 0.8; } 33% { opacity: 0.95; } 52% { opacity: 1; } 58% { opacity: 0.84; } 76% { opacity: 0.97; } 91% { opacity: 0.86; } }

.oil-lamp { left: 12px; bottom: 8px; }
.oil-lamp svg { display: block; position: relative; filter: drop-shadow(0 0 10px rgba(255, 170, 60, 0.7)); }
.oil-lamp .lamp-halo {
  position: absolute;
  left: 50%;
  top: 30%;
  width: 360px;
  height: 360px;
  margin: -180px 0 0 -180px;
  background: radial-gradient(circle, rgba(255, 190, 90, 0.34), rgba(255, 150, 50, 0.12) 38%, transparent 68%);
  mix-blend-mode: screen;
  animation: halo-pulse 2.3s ease-in-out infinite alternate;
}
.oil-lamp .flame { transform-origin: 32px 30px; animation: flame-sway 1.3s ease-in-out infinite alternate, flame-flick 0.37s steps(1, end) infinite; }
.oil-lamp .flame-core { transform-origin: 32px 30px; animation: core-pulse 0.9s ease-in-out infinite alternate; }
.oil-lamp .glow { animation: halo-pulse 1.7s ease-in-out infinite alternate; transform-origin: 32px 28px; }
@keyframes halo-pulse { from { opacity: 0.72; transform: scale(0.96); } to { opacity: 1; transform: scale(1.05); } }
@keyframes flame-flick { 0% { opacity: 1; } 31% { opacity: 0.88; } 52% { opacity: 1; } 78% { opacity: 0.93; } }
@keyframes core-pulse { from { transform: scale(0.92, 0.96); } to { transform: scale(1.08, 1.12); } }

:root[data-theme="nuit"] .panel,
:root[data-theme="nuit"] .announce,
:root[data-theme="nuit"] .profile-card,
:root[data-theme="nuit"] dialog.modal {
  border-color: rgba(255, 190, 100, 0.35);
  box-shadow:
    inset 16px -16px 60px -34px rgba(255, 170, 70, 0.34),
    inset 0 0 0 1px rgba(255, 200, 120, 0.1),
    -12px 14px 40px -18px rgba(255, 150, 50, 0.22),
    0 10px 26px rgba(0, 0, 0, 0.5);
}
:root[data-theme="nuit"] .sheet {
  box-shadow:
    inset 0 0 70px rgba(150, 105, 38, 0.24),
    inset 22px -22px 90px -40px rgba(255, 165, 60, 0.38),
    inset 0 0 14px rgba(120, 80, 25, 0.22),
    0 2px 0 #0003,
    -16px 20px 60px -20px rgba(255, 150, 50, 0.3),
    0 26px 46px -8px rgba(0, 0, 0, 0.7);
}
:root[data-theme="nuit"] .btn:hover:not(:disabled),
:root[data-theme="nuit"] .tab[aria-selected="true"] { box-shadow: 0 0 14px rgba(255, 170, 70, 0.32); }
:root[data-theme="nuit"] .stamp, :root[data-theme="nuit"] .sheet .stamp { text-shadow: 0 0 2px currentColor, 0 0 8px rgba(255, 140, 60, 0.28); }
:root[data-theme="nuit"] .topbar { box-shadow: 0 6px 22px rgba(255, 150, 50, 0.1); }

@media (prefers-reduced-motion: reduce) {
  :root[data-theme="nuit"] body::before, :root[data-theme="nuit"] body::after, .oil-lamp .flame, .oil-lamp .flame-core, .oil-lamp .glow, .oil-lamp .lamp-halo { animation: none; }
}
@media print {
  :root[data-theme="nuit"] body::after { display: none; }
}
@media (max-width: 560px) {
  .oil-lamp svg { width: 52px; height: 65px; }
  .oil-lamp .lamp-halo { width: 220px; height: 220px; margin: -110px 0 0 -110px; }
  :root[data-theme="nuit"] body::after { background: radial-gradient(circle at 8% 96%, rgba(255, 190, 90, 0.1), transparent 34%); }
}

.recipient-list { display: grid; gap: 0.35rem; padding: 0.4rem 0; }
.recipient-list .check { margin: 0; }
