  :root{
    --bg:#F8F8F6;
    --panel:#FFFFFF;
    --ink:#1C1E21;
    --ink-soft:#5B5F66;
    --line:#DBD7CC;
    --line-strong:#B9B4A6;
    --accent:#2E5090;
    --accent-soft:#E9EFF8;
    --ok:#3F7D5C;
    --ok-soft:#E6F1EC;
    --warn:#B8842E;
    --warn-soft:#FBF1E2;
    --fail:#B23A3A;
    --fail-soft:#FBEBEB;
    --g-color:#2E5090;
    --q-color:#B8842E;
    --sans:'IBM Plex Sans',system-ui,sans-serif;
    --mono:'IBM Plex Mono',ui-monospace,monospace;
  }
  *{box-sizing:border-box;}
  html,body{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:var(--sans);}
  body{font-size:14px;line-height:1.45;}
  ::selection{background:var(--accent-soft);}
  button{font-family:var(--sans);cursor:pointer;}
  input,select{font-family:var(--sans);}

  .app{display:grid;grid-template-columns:260px 1fr;min-height:100vh;}

  /* ---------- sidebar ---------- */
  .sidebar{background:var(--panel);border-right:1px solid var(--line);padding:20px 16px;display:flex;flex-direction:column;gap:14px;position:sticky;top:0;align-self:start;height:100vh;overflow-y:auto;}
  .brand{display:flex;flex-direction:column;gap:6px;padding-bottom:12px;border-bottom:1px solid var(--line);}
  .brand-logo{width:160px;height:auto;}
  .brand h1{font-size:20px;font-weight:700;margin:0;letter-spacing:.02em;}
  .brand p{font-size:11px;color:var(--ink-soft);margin:0;}

  .pos-list{display:flex;flex-direction:column;gap:4px;flex:1;overflow-y:auto;}
  .pos-item{display:flex;align-items:center;gap:8px;padding:9px 10px;border-radius:6px;border:1px solid transparent;cursor:pointer;font-size:13px;}
  .pos-item:hover{background:var(--accent-soft);}
  .pos-item.active{background:var(--accent-soft);border-color:var(--accent);font-weight:600;}
  .pos-item .dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;background:var(--line-strong);}
  .pos-item .dot.ok{background:var(--ok);}
  .pos-item .dot.fail{background:var(--fail);}
  .pos-item .name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .pos-item .del{opacity:0;color:var(--ink-soft);font-size:15px;line-height:1;padding:2px 4px;}
  .pos-item:hover .del{opacity:.6;}
  .pos-item .del:hover{opacity:1 !important;color:var(--fail);}

  .add-btn{border:1px dashed var(--line-strong);background:none;border-radius:6px;padding:9px;font-size:13px;color:var(--ink-soft);}
  .add-btn:hover{border-color:var(--accent);color:var(--accent);}

  .sidebar-foot{font-size:10.5px;color:var(--ink-soft);border-top:1px solid var(--line);padding-top:10px;line-height:1.5;}

  /* ---------- project info (sidebar) ---------- */
  .project-info{border:1px solid var(--line);border-radius:6px;padding:2px 10px;font-size:12px;}
  .project-info summary{cursor:pointer;padding:8px 0;font-size:12px;font-weight:600;color:var(--ink-soft);}
  .pi-field{display:flex;flex-direction:column;gap:3px;margin-bottom:8px;}
  .pi-field label{font-size:10.5px;color:var(--ink-soft);}
  .pi-field input{border:1px solid var(--line-strong);border-radius:4px;padding:5px 7px;font-size:12px;}

  /* ---------- pdf import ---------- */
  .pdf-import-panel{border:1px solid var(--line);border-radius:6px;padding:12px;display:flex;flex-direction:column;gap:10px;background:var(--accent-soft);}
  .pdf-import-panel input[type="file"]{font-size:11px;}
  .pdf-import-status{font-size:11.5px;color:var(--ink-soft);line-height:1.5;min-height:0;}
  .pdf-import-status.busy{color:var(--accent);}
  .pdf-import-status.err{color:var(--fail);}
  .pdf-import-status.ok{color:var(--ok);}
  .imported-badge{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-family:var(--mono);color:var(--warn);background:var(--warn-soft);border-radius:10px;padding:3px 10px;margin-left:10px;}

  /* ---------- report view ---------- */
  .report-toolbar{display:flex;gap:10px;margin-bottom:16px;}
  .btn-primary{background:var(--accent);color:#fff;border:none;border-radius:6px;padding:9px 16px;font-size:13px;font-weight:600;}
  .btn-primary:hover{opacity:.9;}
  .btn-ghost{background:none;border:1px solid var(--line-strong);border-radius:6px;padding:9px 16px;font-size:13px;color:var(--ink);}
  .btn-ghost:hover{border-color:var(--accent);color:var(--accent);}

  .report-page{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:34px 40px;max-width:900px;}
  .report-header{display:grid;grid-template-columns:1fr 1fr;gap:20px;padding-bottom:16px;margin-bottom:20px;border-bottom:2px solid var(--ink);font-size:12px;}
  .report-header .firm{font-weight:700;font-size:14px;margin-bottom:3px;}
  .report-header .meta{text-align:right;}
  .report-header .meta div{margin-bottom:2px;}
  .report-pos-title{display:grid;grid-template-columns:140px 1fr;background:var(--bg);padding:10px 14px;margin-bottom:18px;border-radius:4px;}
  .report-pos-title .k{font-weight:700;font-size:14px;}
  .report-pos-title .v{font-weight:700;font-size:14px;}
  .report-section{margin-bottom:22px;}
  .report-section-label{font-size:11px;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.05em;margin-bottom:8px;font-weight:600;}
  .report-table{width:100%;border-collapse:collapse;font-size:12.5px;margin-bottom:4px;}
  .report-table th{background:var(--bg);text-align:left;padding:6px 10px;font-size:10.5px;text-transform:uppercase;color:var(--ink-soft);font-weight:600;}
  .report-table td{padding:6px 10px;border-bottom:1px solid var(--line);}
  .report-table td.num{font-family:var(--mono);text-align:right;}
  .report-narrative{font-size:13px;line-height:1.65;color:var(--ink);background:var(--accent-soft);border-radius:6px;padding:14px 16px;border-left:3px solid var(--accent);}
  .report-narrative .ai-tag{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--accent);font-weight:700;margin-bottom:6px;display:block;}
  .report-narrative.loading{color:var(--ink-soft);font-style:italic;}
  .report-narrative.err{background:var(--warn-soft);border-left-color:var(--warn);color:#7A5A1E;font-size:12px;}
  .report-nachweis-table td.status-ok{color:var(--ok);font-weight:600;}
  .report-nachweis-table td.status-fail{color:var(--fail);font-weight:600;}
  .report-footer{margin-top:26px;padding-top:14px;border-top:1px solid var(--line);font-size:10.5px;color:var(--ink-soft);}

  @media print{
    body{background:#fff;}
    .sidebar,.report-toolbar,.no-print{display:none !important;}
    .app{display:block;}
    .main{padding:0;max-width:none;}
    .report-page{border:none;border-radius:0;padding:0;max-width:none;}
    .section{display:none !important;}
  }

  /* ---------- main ---------- */
  .main{padding:28px 36px 60px;}
  .section{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:20px 22px;margin-bottom:18px;}
  .section:last-child{margin-bottom:0;}
  .section h2{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft);margin:0 0 14px;font-weight:600;}
  .row{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:12px;}
  .row:last-child{margin-bottom:0;}
  .field{display:flex;flex-direction:column;gap:4px;}
  .field label{font-size:11px;color:var(--ink-soft);}
  .field input,.field select{border:1px solid var(--line-strong);border-radius:5px;padding:7px 9px;font-size:13px;background:var(--panel);color:var(--ink);min-width:0;}
  .field input:focus,.field select:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:var(--accent);}
  .field.narrow input{width:80px;}
  .field.name input{width:280px;}
  .field.mid input{width:130px;}

  .pos-title-row{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;}
  .pos-title-row input.title{font-size:18px;font-weight:700;border:none;background:none;padding:2px 0;width:100%;border-bottom:2px solid transparent;}
  .pos-title-row input.title:focus{outline:none;border-bottom-color:var(--accent);}
  .pos-sub{font-size:12px;color:var(--ink-soft);font-family:var(--mono);}

  /* ---------- tabs ---------- */
  .tab-bar{display:flex;gap:4px;margin-bottom:18px;border-bottom:1px solid var(--line);}
  #topSwitcher{justify-content:space-between;align-items:center;}
  .tab-btn{background:none;border:none;border-bottom:2px solid transparent;padding:10px 16px;font-size:13.5px;font-weight:600;color:var(--ink-soft);margin-bottom:-1px;}
  .tab-btn:hover{color:var(--ink);}
  .tab-btn.active{color:var(--accent);border-bottom-color:var(--accent);}
  .tab-btn .tab-flag{display:inline-block;width:7px;height:7px;border-radius:50%;margin-left:6px;vertical-align:middle;}
  .tab-btn .tab-flag.fail{background:var(--fail);}
  .tab-btn .tab-flag.ok{background:var(--ok);}

  table{border-collapse:collapse;width:100%;font-size:13px;}
  th{text-align:left;font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);font-weight:600;padding:6px 8px;border-bottom:1px solid var(--line-strong);}
  td{padding:7px 8px;border-bottom:1px solid var(--line);vertical-align:middle;}
  td.num,th.num{font-family:var(--mono);text-align:right;}
  tr:last-child td{border-bottom:none;}
  td input,td select{border:1px solid var(--line-strong);border-radius:4px;padding:5px 7px;font-size:12.5px;width:100%;font-family:var(--mono);}
  td select{font-family:var(--sans);}
  .tbl-actions{display:flex;justify-content:flex-end;margin-top:10px;}
  .mini-btn{border:1px solid var(--line-strong);background:var(--panel);border-radius:5px;padding:6px 12px;font-size:12px;color:var(--ink);}
  .mini-btn:hover{border-color:var(--accent);color:var(--accent);}
  .icon-btn{border:none;background:none;color:var(--ink-soft);font-size:16px;padding:2px 6px;}
  .icon-btn:hover{color:var(--fail);}
  .cat-tag{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-family:var(--mono);padding:2px 7px;border-radius:10px;}
  .cat-tag.G{background:var(--accent-soft);color:var(--accent);}
  .cat-tag.Q{background:var(--warn-soft);color:var(--warn);}

  .support-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line-strong);border-radius:16px;padding:5px 10px 5px 12px;font-size:12.5px;font-family:var(--mono);margin:2px 4px 2px 0;}
  .support-chip button{border:none;background:none;color:var(--ink-soft);font-size:14px;line-height:1;}
  .support-chip label{display:flex;align-items:center;gap:4px;font-family:var(--sans);color:var(--ink-soft);cursor:pointer;}

  .warn-banner{background:var(--fail-soft);border:1px solid var(--fail);color:var(--fail);border-radius:6px;padding:12px 14px;font-size:13px;margin-bottom:16px;}

  /* ---------- scheme svg ---------- */
  .scheme-wrap{overflow-x:auto;}
  .scheme-wrap svg{display:block;}
  .beamline{stroke:var(--ink);stroke-width:2;}
  .dim-line{stroke:var(--ink-soft);stroke-width:1;}
  .dim-text{font-family:var(--mono);font-size:11px;fill:var(--ink-soft);}
  .support-tri{fill:var(--panel);stroke:var(--ink);stroke-width:1.5;}
  .hinge-c{fill:var(--panel);stroke:var(--ink);stroke-width:1.5;}
  .load-g{fill:var(--g-color);}
  .load-q{fill:var(--q-color);}
  .diag-label{font-family:var(--mono);font-size:11px;}

  /* ---------- results ---------- */
  .kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;}
  .kpi{border:1px solid var(--line);border-radius:6px;padding:12px 14px;}
  .kpi .lbl{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);}
  .kpi .val{font-family:var(--mono);font-size:20px;font-weight:600;margin-top:4px;}
  .kpi .sub{font-size:11px;color:var(--ink-soft);margin-top:2px;}

  .check-row{display:grid;grid-template-columns:150px 1fr 90px 60px;gap:14px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line);}
  .check-row:last-child{border-bottom:none;}
  .check-name{font-weight:600;font-size:13px;}
  .check-loc{font-size:11px;color:var(--ink-soft);font-family:var(--mono);}
  .bar-track{height:10px;background:var(--bg);border-radius:5px;overflow:hidden;border:1px solid var(--line);}
  .bar-fill{height:100%;border-radius:5px 0 0 5px;}
  .bar-fill.ok{background:var(--ok);}
  .bar-fill.warn{background:var(--warn);}
  .bar-fill.fail{background:var(--fail);}
  .eta-val{font-family:var(--mono);text-align:right;font-weight:600;}
  .status-pill{font-size:11px;font-weight:600;text-align:center;border-radius:10px;padding:3px 0;}
  .status-pill.ok{background:var(--ok-soft);color:var(--ok);}
  .status-pill.fail{background:var(--fail-soft);color:var(--fail);}

  .assumptions{margin-bottom:0;font-size:12px;color:var(--ink-soft);}
  .assumptions ul{margin:6px 0 0;padding-left:18px;}
  .assumptions li{margin-bottom:4px;}

  .validated-badge{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-family:var(--mono);color:var(--ok);background:var(--ok-soft);border-radius:10px;padding:3px 10px;margin-left:10px;}

  @media (max-width:820px){
    .app{grid-template-columns:1fr;}
    .sidebar{border-right:none;border-bottom:1px solid var(--line);position:static;height:auto;overflow-y:visible;}
    .main{padding:20px;}
  }
