/* SHOWKERN – ein Stylesheet, keine Abhängigkeiten. Farben oben zentral anpassbar. */
:root {
  --bg: #f4f5f7;
  --surface: #ffffff;
  --surface-2: #f8f9fb;
  --border: #e3e6eb;
  --text: #1c2230;
  --muted: #6b7385;
  --primary: #2f5fe8;
  --primary-ink: #ffffff;
  --sidebar: #141a26;
  --sidebar-text: #c9cfdb;
  --ok: #1f8a4c;      --ok-bg: #e5f5ec;
  --warn: #a96500;    --warn-bg: #fff3dc;
  --bad: #c2372b;     --bad-bg: #fde8e6;
  --info: #2f5fe8;    --info-bg: #e8eefd;
  --grey-bg: #eef0f3;
  --radius: 10px;
  --font: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}
@media (prefers-color-scheme: dark) {
  :root {
    --bg: #0f131b; --surface: #171c27; --surface-2: #1c2230; --border: #2a3242;
    --text: #e6e9ef; --muted: #8e97a9; --primary: #6c8fff; --sidebar: #0b0e14;
    --ok-bg: #143323; --warn-bg: #3a2a0c; --bad-bg: #3d1714; --info-bg: #1a2648; --grey-bg: #232a38;
    --ok: #5fd08f; --warn: #f0b04a; --bad: #ff7b6f; --info: #8fa9ff;
  }
}

* { box-sizing: border-box; }
[hidden] { display: none !important; }
html, body { margin: 0; }
body { font-family: var(--font); font-size: 14.5px; line-height: 1.45; background: var(--bg); color: var(--text); }
a { color: var(--primary); text-decoration: none; }
a:hover { text-decoration: underline; }
h1 { font-size: 24px; margin: 0; letter-spacing: -0.01em; }
h2 { font-size: 17px; margin: 0 0 10px; }
h3 { font-size: 14.5px; margin: 14px 0 8px; }
.muted { color: var(--muted); }
.small { font-size: 12.5px; }
.mono { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 13px; }
.nowrap { white-space: nowrap; }
.mt { margin-top: 8px; }

/* Layout */
.shell { display: grid; grid-template-columns: 240px 1fr; min-height: 100vh; }
.sidebar { background: var(--sidebar); color: var(--sidebar-text); padding: 18px 12px; display: flex; flex-direction: column; gap: 6px; position: sticky; top: 0; height: 100vh; overflow-y: auto; }
.sidebar a { color: var(--sidebar-text); display: flex; align-items: center; gap: 8px; padding: 7px 10px; border-radius: 7px; }
.sidebar a:hover { background: rgba(255,255,255,.06); text-decoration: none; }
.sidebar a.active { background: rgba(255,255,255,.11); color: #fff; }
.sidebar nav { display: flex; flex-direction: column; gap: 2px; }
.brand { font-weight: 700; font-size: 16px; color: #fff !important; margin-bottom: 14px; display: flex; align-items: center; gap: 9px; letter-spacing: .08em; }
.brand-mark { background: var(--primary); color: #fff; border-radius: 7px; font-size: 12px; padding: 5px 6px; letter-spacing: .04em; }
.brand.big { font-size: 22px; color: var(--text) !important; display: flex; align-items: center; gap: 10px; }
.nav-label { text-transform: uppercase; font-size: 11px; letter-spacing: .08em; color: #6f7a8f; margin: 18px 10px 4px; }
.event-nav a { font-size: 13.5px; }
.add-link { color: #8fa9ff !important; font-size: 13px; }
.sidebar-foot { margin-top: auto; border-top: 1px solid rgba(255,255,255,.08); padding: 12px 10px 0; display: flex; flex-direction: column; gap: 6px; }
.sidebar-foot strong { color: #fff; }
.sidebar-foot a { padding: 0; }
.main { padding: 24px 32px 60px; max-width: 1400px; width: 100%; min-width: 0; }

.page-head, .event-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; margin-bottom: 18px; }
.event-head h1 { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.crumb { color: var(--muted); font-size: 13px; margin-bottom: 4px; display: flex; align-items: center; }
.facts { display: flex; gap: 14px; color: var(--muted); font-size: 13px; margin-top: 4px; }
.tabs { display: flex; gap: 4px; border-bottom: 1px solid var(--border); margin-bottom: 18px; }
.tabs a { padding: 9px 14px; color: var(--muted); border-bottom: 2px solid transparent; margin-bottom: -1px; font-weight: 500; }
.tabs a.active { color: var(--text); border-bottom-color: var(--primary); }
.tabs a:hover { text-decoration: none; color: var(--text); }
.toolbar { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 14px; flex-wrap: wrap; }
.toolbar .actions, .filters { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.grid-2 { display: grid; grid-template-columns: minmax(0, 1.8fr) minmax(0, 1fr); gap: 18px; align-items: start; }
.card { overflow-x: auto; }
.grid-2.even { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
.grid-dash { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 18px; align-items: start; }

/* Cards */
.card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); padding: 18px; margin-bottom: 18px; }
.section-head { display: flex; justify-content: space-between; align-items: center; gap: 10px; }
.empty { color: var(--muted); text-align: center; padding: 28px 16px; }
.event-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 14px; margin-bottom: 18px; }
.event-card { color: var(--text); border-top: 4px solid var(--accent); margin: 0; transition: transform .1s, box-shadow .1s; }
.event-card:hover { text-decoration: none; transform: translateY(-1px); box-shadow: 0 6px 18px rgba(0,0,0,.06); }
.event-card h3 { margin: 10px 0 2px; font-size: 16px; }
.ec-top { display: flex; justify-content: space-between; align-items: center; }
.ec-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin-top: 14px; border-top: 1px solid var(--border); padding-top: 10px; }
.ec-stats div { display: flex; flex-direction: column; }
.ec-stats b { font-size: 18px; }
.ec-stats span { font-size: 11.5px; color: var(--muted); }
.ec-stats .warn b { color: var(--warn); }
.stat-row { display: flex; gap: 12px; margin-bottom: 16px; flex-wrap: wrap; }
.stat { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); padding: 10px 16px; display: flex; flex-direction: column; min-width: 110px; }
.stat b { font-size: 20px; }
.stat span { color: var(--muted); font-size: 12px; }

/* Tables */
.table { width: 100%; border-collapse: collapse; }
.table th { text-align: left; font-size: 12px; text-transform: uppercase; letter-spacing: .04em; color: var(--muted); font-weight: 600; padding: 8px 10px; border-bottom: 1px solid var(--border); }
.table td { padding: 10px; border-bottom: 1px solid var(--border); vertical-align: top; }
.table tr:last-child td { border-bottom: 0; }
.cols-deliv { table-layout: fixed; }
.cols-deliv th:nth-child(1) { width: 120px; } .cols-deliv th:nth-child(3) { width: 18%; } .cols-deliv th:nth-child(4) { width: 14%; } .cols-deliv th:nth-child(5) { width: 150px; }
.row-conflict td { background: var(--bad-bg); }
.row-muted td { opacity: .55; }
.conflict-text { color: var(--bad); margin-top: 3px; }

/* Plan */
.plan-layout { display: grid; grid-template-columns: minmax(0, 1fr) 280px; gap: 18px; align-items: start; }
.plan-day { margin-bottom: 22px; }
.day-head { display: flex; justify-content: space-between; align-items: baseline; font-size: 15px; margin: 0 0 8px; padding-bottom: 6px; border-bottom: 2px solid var(--text); }
.card .day-head { border-bottom-width: 1px; border-color: var(--border); }
.plan-row { display: grid; grid-template-columns: 105px 1fr auto; gap: 12px; padding: 10px 12px; background: var(--surface); border: 1px solid var(--border); border-left: 4px solid var(--muted); border-radius: 8px; margin-bottom: 6px; }
.plan-row.type-delivery { border-left-color: #e08a1e; background: linear-gradient(90deg, rgba(224,138,30,.06), var(--surface) 40%); }
.plan-row.type-plan.phase-vorproduktion { border-left-color: #8a6cf0; }
.plan-row.type-plan.phase-aufbau { border-left-color: var(--primary); }
.plan-row.type-plan.phase-show { border-left-color: #d63a8f; }
.plan-row.type-plan.phase-abbau { border-left-color: #5a6578; }
.plan-row.conflict { border-color: var(--bad); border-left-color: var(--bad); }
.plan-row.done .pr-title, .plan-row.done .pr-time { opacity: .5; }
.plan-row.done.type-plan .pr-title { text-decoration: line-through; }
.pr-time { font-weight: 600; font-variant-numeric: tabular-nums; font-size: 13.5px; }
.pr-title { font-weight: 600; display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.pr-meta { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 3px; }
.pr-ships { margin-top: 5px; }
.pr-notes { margin-top: 4px; color: var(--muted); white-space: pre-line; }
.pr-actions { display: flex; gap: 4px; align-items: flex-start; }
.legend { display: flex; gap: 16px; margin-bottom: 12px; }
.lg { display: inline-block; width: 10px; height: 10px; border-radius: 2px; margin-right: 5px; vertical-align: -1px; }
.lg-plan { background: var(--primary); } .lg-delivery { background: #e08a1e; } .lg-conflict { background: var(--bad); }
.side h3:first-child { margin-top: 0; }

/* Badges, Tags, Chips */
.badge, .tag { display: inline-block; font-size: 11.5px; font-weight: 600; padding: 2px 8px; border-radius: 99px; background: var(--grey-bg); color: var(--muted); white-space: nowrap; }
.tag { border-radius: 5px; font-weight: 500; }
.dot { display: inline-block; width: 9px; height: 9px; border-radius: 50%; margin-right: 7px; flex-shrink: 0; }
.chip { display: inline-flex; gap: 5px; align-items: center; font-size: 12px; background: var(--surface-2); border: 1px solid var(--border); border-radius: 6px; padding: 2px 7px; margin: 3px 4px 0 0; font-family: ui-monospace, Menlo, monospace; }
.chip b { font-family: var(--font); font-size: 11px; }
.chip.ship-zugestellt { border-color: var(--ok); background: var(--ok-bg); }
.chip.ship-problem { border-color: var(--bad); background: var(--bad-bg); }
.st-planung, .st-geplant, .es-angefragt { background: var(--grey-bg); color: var(--muted); }
.st-aufbau, .st-unterwegs, .es-bestaetigt { background: var(--info-bg); color: var(--info); }
.st-live, .st-angekommen, .es-vor_ort { background: var(--warn-bg); color: var(--warn); }
.st-abbau { background: var(--grey-bg); color: var(--text); }
.st-abgeschlossen, .st-erledigt, .es-abgeschlossen, .ship-zugestellt { background: var(--ok-bg); color: var(--ok); }
.st-abgesagt, .st-problem, .es-abgesagt, .ship-problem { background: var(--bad-bg); color: var(--bad); }
.kind-anlieferung { background: #fdf0de; color: #94570a; }
.kind-abholung { background: var(--grey-bg); color: var(--text); }
@media (prefers-color-scheme: dark) { .kind-anlieferung { background: #3a2a0c; color: #f0b04a; } }
.phase-tag-vorproduktion { color: #8a6cf0; } .phase-tag-aufbau { color: var(--primary); }
.phase-tag-show { color: #d63a8f; } .phase-tag-abbau { color: var(--muted); }

/* Forms */
input, select, textarea { font: inherit; color: var(--text); background: var(--surface); border: 1px solid var(--border); border-radius: 7px; padding: 7px 10px; min-width: 0; }
input:focus, select:focus, textarea:focus { outline: 2px solid var(--primary); outline-offset: -1px; border-color: transparent; }
input[type=color] { padding: 2px; height: 36px; width: 60px; }
.form { display: flex; flex-direction: column; gap: 12px; max-width: 820px; }
.form.narrow { max-width: 420px; }
.form.compact { max-width: none; gap: 8px; }
.form label { display: flex; flex-direction: column; gap: 4px; font-size: 13px; font-weight: 500; color: var(--muted); }
.form label input, .form label select, .form label textarea { color: var(--text); font-weight: 400; }
.row { display: flex; gap: 12px; flex-wrap: wrap; align-items: flex-end; }
.row > * { flex: 1 1 140px; }
.row > .grow { flex: 3 1 220px; }
.row > button { flex: 0 0 auto; }
fieldset { border: 1px solid var(--border); border-radius: 8px; padding: 10px 14px 12px; display: flex; flex-direction: column; gap: 10px; margin: 0; }
legend { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--muted); padding: 0 6px; }
.form-actions { display: flex; gap: 8px; align-items: center; margin-top: 4px; flex-wrap: wrap; }
.right { margin-left: auto; }
.stack { display: flex; flex-direction: column; gap: 4px; }
.stack input { font-size: 13px; padding: 5px 8px; }
.inline { display: inline; margin: 0; }
.search { width: 100%; max-width: 340px; margin-bottom: 10px; }
.status-select { font-size: 12.5px; font-weight: 600; padding: 3px 6px; border-radius: 99px; border: 0; cursor: pointer; }
.facts-list { display: grid; grid-template-columns: 130px 1fr; gap: 8px 12px; margin: 14px 0; }
.facts-list dt { color: var(--muted); }
.facts-list dd { margin: 0; }

.btn { display: inline-flex; align-items: center; gap: 6px; font: inherit; font-weight: 600; font-size: 13.5px; padding: 8px 14px; border-radius: 8px; border: 1px solid var(--border); background: var(--surface); color: var(--text); cursor: pointer; white-space: nowrap; }
.btn:hover { text-decoration: none; background: var(--surface-2); }
.btn.primary { background: var(--primary); color: var(--primary-ink); border-color: var(--primary); }
.btn.primary:hover { filter: brightness(1.07); }
.btn.ghost { background: transparent; }
.btn.danger { color: var(--bad); border-color: var(--bad); background: transparent; }
.btn.small { padding: 4px 10px; font-size: 12.5px; }
.btn.wide { width: 100%; justify-content: center; }
.iconbtn { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: 6px; border: 1px solid var(--border); background: var(--surface); color: var(--muted); cursor: pointer; font-size: 14px; }
.iconbtn:hover { color: var(--text); text-decoration: none; background: var(--surface-2); }
.linkbtn { background: none; border: 0; padding: 0; color: var(--sidebar-text); cursor: pointer; font: inherit; text-align: left; }

.flash { padding: 10px 14px; border-radius: 8px; margin-bottom: 14px; font-size: 13.5px; }
.flash.ok { background: var(--ok-bg); color: var(--ok); }
.flash.error { background: var(--bad-bg); color: var(--bad); }

.activity { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 8px; font-size: 13px; }
.activity li { border-bottom: 1px solid var(--border); padding-bottom: 7px; }
.activity li:last-child { border: 0; }

.login-wrap { min-height: 100vh; display: grid; place-items: center; padding: 20px; }
.login-card { width: 100%; max-width: 380px; display: flex; flex-direction: column; gap: 12px; }
.login-card label { display: flex; flex-direction: column; gap: 4px; font-size: 13px; color: var(--muted); }

/* Slot-Anfragen & Portal-Steuerung (Produktionsseite) */
.plan-row.pending { border-style: dashed; border-left-style: solid; }
.flash.warn { background: var(--warn-bg); color: var(--warn); }
.pending-card { border-color: var(--warn); }
.confirm-btn { border-color: var(--ok); color: var(--ok); padding: 2px 9px; font-size: 12px; }
.mt0 { margin-top: 0; }
.es-block { border-top: 1px solid var(--border); }
.es-block tr td { border-bottom: 0; }
.portal-row td { padding-top: 0; padding-bottom: 14px; }
.portal-ctrl { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; background: var(--surface-2); border: 1px solid var(--border); border-radius: 8px; padding: 7px 10px; }
.portal-label { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--muted); margin-right: 4px; }
.link-field { flex: 1 1 260px; font-family: ui-monospace, Menlo, monospace; font-size: 12px; padding: 4px 8px; }
.linkish { background: none; border: 0; padding: 0 4px; font: inherit; font-size: 12.5px; color: var(--primary); cursor: pointer; }
.danger-text { color: var(--bad); }

/* Dienstleister-Portal (öffentliche Seite) */
body.portal { background: var(--bg); }
.portal-inner { max-width: 820px; margin: 0 auto; padding: 0 16px; }
.portal-bar { background: var(--sidebar); color: #fff; border-top: 5px solid var(--accent, var(--primary)); padding: 18px 0; margin-bottom: 20px; }
.portal-kicker { color: #9aa5ba; text-transform: uppercase; letter-spacing: .06em; font-size: 11px; }
.portal-title { font-size: 22px; font-weight: 700; margin: 2px 0; }
.portal-sub { color: #c9cfdb; }
.portal-main { padding-bottom: 20px; }
.portal-foot { padding-bottom: 30px; text-align: center; }
.portal-info { border-left: 4px solid var(--accent, var(--primary)); }
.pre { white-space: pre-line; }
.own-row { border-color: var(--info); box-shadow: inset 0 0 0 1px var(--info); }
.portal-delivery { border: 1px solid var(--border); border-radius: 8px; padding: 12px 14px; margin-top: 12px; }
.portal-delivery.is-cancelled { opacity: .55; }
.pd-head { display: flex; justify-content: space-between; gap: 10px; flex-wrap: wrap; align-items: center; }
.pd-head b { margin-left: 4px; }
.pd-badges { display: flex; gap: 6px; }
.pd-facts { display: grid; grid-template-columns: 110px 1fr; gap: 4px 12px; margin: 10px 0 4px; font-size: 13.5px; }
.pd-facts dt { color: var(--muted); }
.pd-facts dd { margin: 0; }
.pd-actions { display: flex; gap: 8px; align-items: flex-start; flex-wrap: wrap; margin-top: 10px; }
.pd-actions details { flex: 1 1 auto; }
.pd-actions summary { list-style: none; display: inline-flex; }
.pd-actions summary::-webkit-details-marker { display: none; }
@media (max-width: 560px) { .portal-tabs a { padding: 10px 7px; font-size: 13px; } }
@media (max-width: 560px) { .pd-facts { grid-template-columns: 1fr; } .pd-facts dt { margin-top: 6px; } }

/* Crew, Akkreditierung, Bedarf, Unterlagen */
.acc-beantragt, .doc-offen { background: var(--grey-bg); color: var(--muted); }
.acc-freigegeben, .doc-freigegeben { background: var(--ok-bg); color: var(--ok); }
.acc-ausgegeben { background: var(--info-bg); color: var(--info); }
.acc-abgelehnt, .doc-ueberfaellig { background: var(--bad-bg); color: var(--bad); }
.doc-eingereicht { background: var(--info-bg); color: var(--info); }
.doc-nachbessern { background: var(--warn-bg); color: var(--warn); }
.tx-beantragt { color: var(--muted); } .tx-freigegeben { color: var(--ok); } .tx-ausgegeben { color: var(--info); }
.tx-abgelehnt, .tx-bad { color: var(--bad); }
.stat-link { color: var(--text); }
.stat-link:hover { text-decoration: none; border-color: var(--primary); }
.stat-link.active { border-color: var(--primary); box-shadow: inset 0 0 0 1px var(--primary); }
.type-line { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin: -6px 0 14px; }
.type-line .chip { font-family: var(--font); color: var(--text); margin: 0; }
.section-title { font-size: 16px; margin: 26px 0 10px; }
.add-card summary { cursor: pointer; list-style: none; }
.add-card summary::-webkit-details-marker { display: none; }
.add-card[open] summary { margin-bottom: 4px; }
.bulkbar { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; padding-bottom: 10px; border-bottom: 1px solid var(--border); margin-bottom: 4px; }
.w-check { width: 34px; }
label.check { flex-direction: row !important; align-items: center; gap: 6px !important; flex: 0 0 auto !important; color: var(--text) !important; font-weight: 500; padding-bottom: 8px; }
.narrow-field { flex: 0 1 170px !important; }
.hint { font-size: 11.5px; color: var(--muted); font-weight: 400; }
.num { text-align: right; width: 60px; font-variant-numeric: tabular-nums; }
.bar-cell { width: 60%; }
.bar { height: 8px; background: var(--grey-bg); border-radius: 4px; overflow: hidden; margin: 5px 0 3px; }
.bar span { display: block; height: 100%; background: var(--primary); border-radius: 4px; }
.bar.hotel span { background: #8a6cf0; }
.name-list { margin: 6px 0 0; padding-left: 18px; columns: 2; }
.req-card .section-head { align-items: flex-start; }
.req-deadline { text-align: right; font-size: 13px; }
.req-summary { display: flex; gap: 6px; flex-wrap: wrap; margin: 6px 0 4px; }
.inline-details { display: inline-block; position: relative; }
.inline-details summary { list-style: none; cursor: pointer; display: inline-flex; }
.inline-details summary::-webkit-details-marker { display: none; }
.review-form { display: inline-flex; gap: 6px; align-items: flex-start; flex-wrap: wrap; margin: 0; }
.review-pop { display: flex; gap: 6px; margin-top: 6px; }
.review-pop input { font-size: 12.5px; padding: 4px 8px; min-width: 200px; }
.ec-alerts { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 10px; }

.deadline-ctrl { margin-top: 6px; }
.inline-flex { display: inline-flex; gap: 6px; align-items: center; margin: 0; }
.inline-flex input[type=date] { padding: 3px 8px; font-size: 12.5px; }
.change-card { border-color: var(--warn); }
.change-item { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px; padding: 12px 0; border-top: 1px solid var(--border); align-items: start; }
.change-item:first-of-type { border-top: 0; }
.diff { margin: 6px 0 0; padding: 0; list-style: none; font-size: 13px; }
.diff li { display: flex; gap: 8px; flex-wrap: wrap; }
.diff .old { text-decoration: line-through; color: var(--muted); }
.diff .new { color: var(--ok); font-weight: 600; }
.decide { display: flex; gap: 6px; align-items: flex-start; flex-wrap: wrap; justify-content: flex-end; }
.decide input { font-size: 12.5px; padding: 4px 8px; width: 180px; }
.pending-tag { background: var(--warn-bg); color: var(--warn); }

.chip-warn { border-color: var(--warn); background: var(--warn-bg); }
.bulk-sep { width: 1px; height: 22px; background: var(--border); margin: 0 4px; }
.small-select { font-size: 12.5px; padding: 4px 8px; }
.accred-hint { align-self: center; padding-bottom: 8px; }

.share-targets { display: flex; flex-wrap: wrap; gap: 4px 14px; align-items: center; }
.share-list { flex-basis: 100%; display: flex; flex-wrap: wrap; gap: 2px 14px; padding: 8px 10px; background: var(--surface-2);
  border: 1px solid var(--border); border-radius: 8px; }
.share-list[hidden] { display: none; }
.recipients { display: flex; flex-wrap: wrap; gap: 4px; align-items: center; margin-top: 8px; }
.chip.recip { font-family: var(--font); margin: 0; color: var(--muted); }
.chip.recip.seen { color: var(--ok); border-color: var(--ok); background: var(--ok-bg); }
.doc-line .full { flex-basis: 100%; }

.grow-cell { width: 55%; }
.wide-form { width: 100%; }
.wide-form input[name=note] { flex: 1; font-size: 13px; padding: 5px 8px; }

.access-cell { max-width: 420px; }
.ev-chip { font-family: var(--font); margin: 2px 4px 2px 0; color: var(--text); }
.access-edit { display: block; margin-top: 4px; }

.perm-cell { min-width: 260px; }
.perm-chips { display: flex; flex-wrap: wrap; gap: 3px; margin-bottom: 3px; }
.perm-chips .chip { font-family: var(--font); margin: 0; font-size: 11px; padding: 1px 6px; }
.chip.perm-edit { color: var(--ok); border-color: var(--ok); background: var(--ok-bg); }
.chip.perm-read { color: var(--info); border-color: var(--info); background: var(--info-bg); }
.chip.perm-none { color: var(--muted); text-decoration: line-through; opacity: .7; }
.perm-table { border-collapse: collapse; font-size: 13px; margin-bottom: 8px; }
.perm-table th { font-size: 11px; color: var(--muted); font-weight: 600; padding: 4px 8px; }
.perm-table td { padding: 4px 8px; border-top: 1px solid var(--border); }
.center { text-align: center; }

.bulk-share { display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap; padding: 12px 18px; }
.bulk-share .actions { display: flex; gap: 6px; }

.show-date { color: var(--text); font-weight: 600; }

/* Portal-Ergänzungen */
.portal-tabs { display: flex; gap: 4px; overflow-x: auto; margin-top: -10px; margin-bottom: 16px; border-bottom: 1px solid var(--border); }
.portal-tabs a { padding: 10px 12px; color: var(--muted); font-weight: 600; font-size: 14px; white-space: nowrap; border-bottom: 2px solid transparent; margin-bottom: -1px; }
.portal-tabs a.active { color: var(--text); border-bottom-color: var(--primary); }
.portal-tabs a:hover { text-decoration: none; color: var(--text); }
.task-list { list-style: none; margin: 0; padding: 0; }
.task a { display: flex; justify-content: space-between; gap: 10px; align-items: center; flex-wrap: wrap; padding: 11px 12px; border: 1px solid var(--border); border-left-width: 4px; border-radius: 8px; margin-top: 8px; color: var(--text); }
.task a:hover { text-decoration: none; background: var(--surface-2); }
.task-ueberfaellig a { border-left-color: var(--bad); }
.task-offen a, .task-nachbessern a { border-left-color: var(--warn); }
.task-eingereicht a { border-left-color: var(--info); }
.task-freigegeben a { border-left-color: var(--ok); }
.task-title { font-weight: 600; }
.task-meta { display: flex; gap: 8px; align-items: center; font-size: 13px; }
.crew-row { display: flex; justify-content: space-between; gap: 6px 10px; align-items: center; padding: 9px 0; border-bottom: 1px solid var(--border); flex-wrap: wrap; }
.crew-row > div:first-child { flex: 1 1 210px; min-width: 0; }
.crew-right { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; justify-content: flex-end; margin-left: auto; }
.add-inline { margin-top: 14px; }
.add-inline summary { list-style: none; display: inline-flex; cursor: pointer; }
.add-inline summary::-webkit-details-marker { display: none; }
.upload-form { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; margin-top: 10px; padding-top: 10px; border-top: 1px dashed var(--border); }
.upload-form input[type=file] { flex: 1 1 220px; }
.upload-form input[name=note] { flex: 1 1 160px; }
.doc-line { padding: 8px 0; border-bottom: 1px solid var(--border); display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.review-note { flex-basis: 100%; color: var(--warn); }

/* Mobil (z. B. Tablet am Tor) */
@media (max-width: 1150px) { .grid-dash { grid-template-columns: 1fr; } }
@media (max-width: 900px) {
  .shell { grid-template-columns: 1fr; }
  .sidebar { position: static; height: auto; }
  .sidebar .event-nav, .nav-label { display: none; }
  .sidebar nav:first-of-type { flex-direction: row; flex-wrap: wrap; }
  .sidebar-foot { flex-direction: row; align-items: center; justify-content: space-between; }
  .main { padding: 16px; }
  .grid-2, .grid-dash, .plan-layout { grid-template-columns: 1fr; }
  .plan-row { grid-template-columns: 1fr auto; }
  .pr-time { grid-column: 1 / -1; }
  .table { display: block; overflow-x: auto; }
  .tabs { overflow-x: auto; }
  .tabs a { white-space: nowrap; }
  .name-list { columns: 1; }
}

/* Drucken: sauberer Produktionsplan auf Papier */
@media print {
  .sidebar, .tabs, .toolbar, .legend, .no-print, .flash, .event-head .btn { display: none !important; }
  .shell { display: block; }
  .main { padding: 0; }
  body { background: #fff; color: #000; font-size: 11.5px; }
  .plan-layout { display: block; }
  .plan-row { break-inside: avoid; border-color: #bbb; background: #fff !important; }
  .plan-day { break-inside: auto; }
  a { color: #000; }
}

/* ---------- Partner, Einsatz, Dateisuche ---------- */
.filter-pills { display: flex; gap: 6px; margin: -6px 0 14px; flex-wrap: wrap; }
.filter-pills a { padding: 5px 12px; border-radius: 99px; background: var(--surface); border: 1px solid var(--border); color: var(--text); font-size: 13px; }
.filter-pills a.active { background: var(--primary); border-color: var(--primary); color: var(--primary-ink); }
.filter-pills a:hover { text-decoration: none; }
.badge.kind-partner { background: #f3e8fd; color: #7a35b8; }
.badge.kind-dienstleister { background: var(--info-bg); color: var(--info); }
@media (prefers-color-scheme: dark) { .badge.kind-partner { background: #33204a; color: #d2a5ff; } }
.shift-tag { color: #7a35b8; }
@media (prefers-color-scheme: dark) { .shift-tag { color: #d2a5ff; } }
.shift-row { align-items: center; }
.field-label { font-weight: 600; font-size: 13px; }
.chip-active { border-color: var(--primary); background: var(--info-bg); }
.jump-links { margin: 18px 0 -4px; color: var(--muted); }
.file-filters { margin-bottom: 10px; }
.file-filters input[type=search] { min-width: 220px; }
.sort-link { color: inherit; white-space: nowrap; }
.sort-link.active { color: var(--primary); }
.table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.tab-count { display: inline-block; min-width: 18px; padding: 0 5px; border-radius: 99px; background: var(--primary); color: var(--primary-ink); font-size: 11px; text-align: center; margin-left: 2px; }

/* ---------- Abfragen (Formular-Baukasten) ---------- */
.sub-head h2 { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.builder { display: grid; grid-template-columns: minmax(0, 1.7fr) minmax(0, 1fr); gap: 18px; align-items: start; }
.builder-side { position: sticky; top: 14px; }
.form-paper { border-top: 6px solid var(--accent, var(--primary)); }
.field-card { padding-top: 12px; padding-bottom: 12px; }
.field-card.field-section { background: var(--surface-2); border-left: 4px solid var(--primary); }
.field-head { display: flex; justify-content: space-between; gap: 10px; align-items: flex-start; }
.field-head .field-label { font-size: 14.5px; margin-top: 4px; }
.field-tools { display: flex; gap: 2px; flex-shrink: 0; }
.field-tools .iconbtn[disabled] { opacity: .3; cursor: default; }
.tag-req { background: var(--warn-bg); color: var(--warn); }
.add-field { border: 2px dashed var(--border); }
.steps { padding-left: 18px; margin: 6px 0 0; }
.steps li { margin: 3px 0; }
.progress { height: 6px; border-radius: 99px; background: var(--grey-bg); overflow: hidden; width: 140px; margin-bottom: 3px; }
.progress span { display: block; height: 100%; background: var(--ok); }
.rs-offen { background: var(--grey-bg); color: var(--muted); }
.rs-entwurf, .doc-entwurf { background: var(--warn-bg); color: var(--warn); }
.rs-eingereicht { background: var(--ok-bg); color: var(--ok); }
.rs-ueberfaellig { background: var(--bad-bg); color: var(--bad); }
.tx-eingereicht { color: var(--ok); } .tx-ueberfaellig { color: var(--bad); } .tx-entwurf { color: var(--warn); }
.row-active td { background: var(--info-bg); }
.answers { display: grid; grid-template-columns: minmax(160px, 1fr) 2fr; gap: 8px 18px; margin: 12px 0 0; }
.answers dt { color: var(--muted); font-size: 13px; }
.answers dd { margin: 0; }
.answers-section { grid-column: 1 / -1; margin: 10px 0 0; padding-top: 10px; border-top: 1px solid var(--border); }
.answers-table td, .answers-table th { min-width: 130px; vertical-align: top; }
.fill-form .form-q { padding: 14px 0; border-bottom: 1px solid var(--border); display: flex; flex-direction: column; gap: 6px; }
.fill-form .form-q:last-of-type { border-bottom: 0; }
.fill-form .q-label { font-weight: 600; font-size: 14.5px; }
.fill-form .form-section { padding: 18px 0 4px; border-bottom: 2px solid var(--border); }
.fill-form .form-section h3 { margin: 0; font-size: 16px; }
.fill-form .form-section p { margin: 4px 0 0; }
.req { color: var(--bad); }
.choice-row { display: flex; gap: 18px; flex-wrap: wrap; }
.choice-col { display: flex; flex-direction: column; gap: 4px; }
.form-q.has-error input, .form-q.has-error textarea, .form-q.has-error select { border-color: var(--bad); }
.field-error { color: var(--bad); font-size: 12.5px; font-weight: 600; }
.file-current { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.sticky-actions { position: sticky; bottom: 0; background: var(--surface); padding: 12px 0 4px; border-top: 1px solid var(--border); }
.portal-preview { max-width: 760px; }
@media (max-width: 900px) {
  .builder { grid-template-columns: 1fr; }
  .builder-side { position: static; }
  .answers { grid-template-columns: 1fr; gap: 2px; }
  .answers dd { margin-bottom: 8px; }
}

/* ---------- Crew-/Fahrzeuglisten im Portal ---------- */
.people-grid { display: flex; flex-direction: column; gap: 10px; }
.pg-rows { display: flex; flex-direction: column; gap: 8px; }
.pg-row { border: 1px solid var(--border); border-radius: 8px; padding: 10px; background: var(--surface-2); display: flex; flex-direction: column; gap: 6px; }
.pg-row.pg-error { border-color: var(--bad); background: var(--bad-bg); }
.pg-line { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.pg-line input:not([type=checkbox]) { flex: 1 1 140px; min-width: 0; }
.pg-line .pg-main { flex: 2 1 200px; font-weight: 600; }
.pg-label { font-size: 12.5px; color: var(--muted); font-weight: 600; }
.pg-dates { display: inline-flex; gap: 4px; align-items: center; margin-left: auto; }
.pg-dates input { flex: 0 0 auto !important; width: 150px; }
.pg-foot { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; min-height: 20px; }
.pg-remove { margin-left: auto; color: var(--bad); }
.people-grid > .btn { align-self: flex-start; }
.form-people { gap: 8px; }
.portal-anchors { position: sticky; top: 0; z-index: 5; background: var(--bg); }
.partner-info { margin-bottom: 0; }
@media (max-width: 560px) {
  .pg-dates { margin-left: 0; width: 100%; }
  .pg-dates input { flex: 1 1 0 !important; width: auto; }
}
.tag-delivery { background: var(--warn-bg); color: var(--warn); }
