:root { --bg:#f6f7f9; --panel:#fff; --text:#1c2430; --muted:#6b7280; --line:#d8dee9; --primary:#183b65; --primary2:#245c94; --low:#e5f3e8; --medium:#fff3cd; --high:#f8d7da; }
* { box-sizing: border-box; }
body { margin:0; font-family: Arial, Helvetica, sans-serif; color:var(--text); background:var(--bg); }
.topbar { display:flex; justify-content:space-between; align-items:center; padding:14px 22px; background:#0f2a47; color:#fff; }
.topbar span { color:#cbd5e1; margin-left:8px; font-size:14px; }
.topbar a { color:#fff; text-decoration:none; margin-left:16px; font-size:14px; }
.container { max-width:1180px; margin:0 auto; padding:28px 18px 60px; }
h1 { margin: 0 0 14px; font-size:30px; }
h2 { margin:0 0 12px; font-size:20px; }
.hero { background:linear-gradient(135deg,#fff,#eef5ff); border:1px solid var(--line); border-radius:18px; padding:30px; }
.hero p { max-width:850px; font-size:17px; color:#374151; line-height:1.5; }
.actions { display:flex; gap:12px; margin:18px 0; flex-wrap:wrap; }
.button { display:inline-block; border:1px solid var(--primary); color:var(--primary); background:#fff; text-decoration:none; border-radius:9px; padding:10px 16px; font-weight:700; cursor:pointer; }
.button.primary { background:var(--primary); color:#fff; }
.cards, .form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; margin-top:16px; }
.card, .panel { background:var(--panel); border:1px solid var(--line); border-radius:14px; padding:18px; box-shadow:0 1px 2px rgba(15,42,71,.04); }
.wide { grid-column:1 / -1; }
label { display:block; font-weight:700; margin:11px 0; }
input, select, textarea { width:100%; margin-top:5px; padding:9px 10px; border:1px solid #bcc5d1; border-radius:8px; font:inherit; background:#fff; }
.checkbox-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px 14px; }
.check { display:flex; gap:8px; align-items:flex-start; font-weight:400; margin:0; padding:8px; border:1px solid #e5e7eb; border-radius:8px; }
.check input { width:auto; margin:3px 2px 0 0; }
.muted { color:var(--muted); }
.question-panel { margin:18px 0; }
.question-list { display:grid; gap:8px; }
.question-row { display:grid; grid-template-columns:1fr 190px; gap:12px; align-items:center; border-top:1px solid #edf0f5; padding:10px 0; }
.data-table { width:100%; border-collapse:collapse; font-size:13px; }
.data-table th, .data-table td { border:1px solid var(--line); padding:8px; vertical-align:top; }
.data-table th { background:#eef2f7; text-align:left; }
.risk { border-radius:99px; padding:3px 9px; font-weight:700; display:inline-block; }
.risk.low { background:var(--low); }
.risk.medium { background:var(--medium); }
.risk.high { background:var(--high); }
.sticky-actions { position:sticky; bottom:0; border-color:#b7c9db; }
@media (max-width: 850px) { .cards, .form-grid, .checkbox-grid { grid-template-columns:1fr; } .question-row { grid-template-columns:1fr; } .topbar { display:block; } .topbar nav { margin-top:10px; } }
.summary-panel { border-left: 5px solid var(--primary2); }
.assessment-editor { margin: 18px 0; }
.editor-head { display:flex; justify-content:space-between; gap:16px; align-items:flex-start; border-bottom:1px solid #edf0f5; padding-bottom:12px; margin-bottom:12px; }
.editor-head h2 { margin-bottom:4px; }
.toggle { display:flex; gap:8px; align-items:center; white-space:nowrap; margin-top:4px; padding:8px 10px; border:1px solid #d7e3f0; border-radius:9px; background:#f8fbff; }
.toggle input { width:auto; margin:0; }
.edit-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px 14px; }
.edit-grid label { margin:0; }
.edit-grid .wide { grid-column:1 / -1; }
.split-actions { display:flex; gap:12px; justify-content:flex-end; flex-wrap:wrap; }
textarea { resize:vertical; }
@media (max-width: 980px) { .edit-grid { grid-template-columns:1fr 1fr; } .editor-head { display:block; } .toggle { display:inline-flex; margin-top:10px; } }
@media (max-width: 650px) { .edit-grid { grid-template-columns:1fr; } }

.material-grid { align-items: stretch; }
.material-card { display: flex; flex-direction: column; gap: .35rem; }
.material-head { display: flex; justify-content: space-between; gap: 1rem; align-items: flex-start; }
.badge, .pill { display: inline-block; border-radius: 999px; padding: .25rem .55rem; font-size: .82rem; background: #e8eef7; color: #20324a; white-space: nowrap; }
.pill.warning { background: #fff2cc; color: #705400; }
.small-actions { gap: .5rem; flex-wrap: wrap; }
.filehint { font-size: .85rem; margin-top: auto; }
pre { overflow-x: auto; background: #0f172a; color: #f8fafc; border-radius: 12px; padding: 1rem; }
code { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; }

.requirement-stats { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; margin:14px 0; }
.requirement-stats div { background:#f8fbff; border:1px solid #d7e3f0; border-radius:12px; padding:14px; }
.requirement-stats strong { display:block; font-size:26px; color:var(--primary); }
.requirement-stats span { color:var(--muted); font-size:13px; }
.responsive-table { overflow-x:auto; }
.requirements-table th, .requirements-table td { font-size:12.5px; }
.source-list details { border:1px solid var(--line); border-radius:10px; padding:10px 12px; margin:8px 0; background:#fff; }
.status-pflichtig { background:#dbeafe; color:#1e3a8a; }
.status-pruefen, .status-prüfen { background:#fff2cc; color:#705400; }
.status-pflichtig-pruefen, .status-pflichtig-prüfen { background:#fde68a; color:#7c2d12; }
@media (max-width: 850px) { .requirement-stats { grid-template-columns:1fr 1fr; } }

.start-actions { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; margin-top:22px; }
.start-card { display:block; border:1px solid var(--line); background:#fff; color:var(--text); border-radius:16px; padding:22px; text-decoration:none; box-shadow:0 1px 3px rgba(15,42,71,.05); }
.start-card.primary { background:var(--primary); color:#fff; border-color:var(--primary); }
.start-card strong { display:block; font-size:21px; margin-bottom:8px; }
.start-card span { display:block; line-height:1.45; color:inherit; opacity:.9; }
.dashboard-head { display:flex; justify-content:space-between; align-items:flex-start; gap:18px; margin-bottom:16px; }
.compact-actions { margin:0; }
.dashboard-stats { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; margin:16px 0; }
.stat { background:#fff; border:1px solid var(--line); border-radius:14px; padding:14px; }
.stat strong { display:block; font-size:28px; color:var(--primary); }
.stat span { display:block; color:var(--muted); font-size:13px; }
.stat.ok { border-left:5px solid #2f855a; }
.stat.warning { border-left:5px solid #ca8a04; }
.stat.danger { border-left:5px solid #dc2626; }
.dashboard-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; margin:18px 0; }
.dashboard-tile { background:#fff; border:1px solid var(--line); border-radius:16px; padding:18px; box-shadow:0 1px 2px rgba(15,42,71,.05); display:flex; flex-direction:column; gap:8px; }
.dashboard-tile h2 { margin:0; font-size:18px; }
.dashboard-tile p { color:#374151; line-height:1.45; margin:0 0 8px; }
.tile-top { display:flex; align-items:center; gap:9px; }
.tile-value { display:block; font-size:24px; color:var(--primary); }
.tile-ok { border-top:4px solid #2f855a; }
.tile-warning { border-top:4px solid #ca8a04; }
.tile-danger { border-top:4px solid #dc2626; }
.status-dot { width:11px; height:11px; border-radius:50%; display:inline-block; background:#64748b; }
.status-dot.ok { background:#2f855a; }
.status-dot.warning { background:#ca8a04; }
.status-dot.danger { background:#dc2626; }
.badge-ok { background:#dcfce7; color:#166534; }
.badge-warning { background:#fef3c7; color:#92400e; }
.badge-danger { background:#fee2e2; color:#991b1b; }
.section-head { display:flex; justify-content:space-between; align-items:flex-start; gap:16px; margin-bottom:12px; }
.evidence-mini { border-bottom:1px solid #edf0f5; padding:4px 0; }
.evidence-mini:last-child { border-bottom:0; }
.small-button { padding:6px 10px; font-size:12px; }
.link-button { background:none; border:0; padding:0; color:var(--primary); text-decoration:underline; cursor:pointer; font:inherit; }
.evidence-form-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
@media (max-width: 1000px) { .dashboard-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .evidence-form-grid { grid-template-columns:1fr 1fr; } }
@media (max-width: 750px) { .start-actions, .dashboard-stats, .dashboard-grid { grid-template-columns:1fr; } .dashboard-head, .section-head { display:block; } .evidence-form-grid { grid-template-columns:1fr; } }


/* v10 Ampelsystem */
.traffic { width: 14px; height: 14px; border-radius: 50%; display: inline-block; margin-right: 6px; vertical-align: -2px; border: 1px solid rgba(0,0,0,.15); box-shadow: inset 0 1px 1px rgba(255,255,255,.45); }
.traffic-ok { background: #16a34a; }
.traffic-warning { background: #f59e0b; }
.traffic-danger { background: #dc2626; }
.traffic-neutral { background: #94a3b8; }
.ampel-legend { display:flex; gap:14px; flex-wrap:wrap; align-items:center; }
.dashboard-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
@media (min-width: 1200px) { .dashboard-grid { grid-template-columns:repeat(4,minmax(0,1fr)); } }

/* Nutzermanagement (Login/Verwaltung) */
.flash { padding:10px 16px; border-radius:8px; margin-bottom:16px; font-size:14px; }
.flash.success { background:#e5f3e8; color:#1b5e30; border:1px solid #b8e0c4; }
.flash.error { background:#f8d7da; color:#7a1f28; border:1px solid #f0b7bd; }
.login-wrap { max-width:400px; margin:60px auto; }
.role-badge { display:inline-block; border-radius:999px; padding:.2rem .6rem; font-size:.8rem; font-weight:700; }
.role-badge.admin { background:#dbeafe; color:#1e3a8a; }
.role-badge.user { background:#e5f3e8; color:#1b5e30; }
.nav-user { color:#cbd5e1; margin-left:16px; font-size:14px; }

/* v12 Easy Check Branding */
:root { --brand-teal:#10a99a; --brand-blue:#0f5c9b; }
.topbar { background: linear-gradient(90deg,#0f2a47,#124a73); }
.brand { display:flex; align-items:center; gap:10px; color:#fff; text-decoration:none; }
.brand img { width:42px; height:42px; object-fit:contain; border-radius:10px; background:#fff; padding:3px; box-shadow:0 1px 5px rgba(0,0,0,.16); }
.brand div { display:flex; flex-direction:column; line-height:1.15; }
.brand strong { font-size:18px; letter-spacing:.01em; }
.brand span { margin-left:0; margin-top:2px; }
.hero-with-logo { text-align:center; }
.hero-with-logo p { margin-left:auto; margin-right:auto; }
.hero-logo-wrap { display:flex; justify-content:center; margin-bottom:14px; }
.hero-logo { width:min(320px, 82vw); height:auto; display:block; }
.start-hero h1 { color:#182633; }
.start-card.primary { background:linear-gradient(135deg,#0f2a47,#0f8f86); border-color:#0f8f86; }
.button.primary { background:linear-gradient(135deg,#0f2a47,#0f8f86); border-color:#0f8f86; }
@media (max-width: 850px) { .brand { margin-bottom:10px; } .brand img { width:38px; height:38px; } }
