
:root{--bg:#f7f5f2;--panel:#fff;--text:#111827;--muted:#5f6470;--line:#e2ded8;--soft:#faf8f5;--dark:#111827;--accent:#7c5a2b;--accent-soft:#efe6d8;--blue:#0f5eaa;--danger:#b42318;--green:#067647;--amber:#b54708;--shadow:0 10px 28px rgba(0,0,0,.06)}
*{box-sizing:border-box}body{margin:0;background:var(--bg);font-family:Arial,Helvetica,sans-serif;color:var(--text);line-height:1.5}a{color:inherit;text-decoration:none}
header{position:sticky;top:0;z-index:50;background:rgba(247,245,242,.93);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);padding:10px 24px;display:flex;gap:18px;align-items:center;justify-content:space-between;flex-wrap:wrap}.brand h1{margin:0;font-weight:800;font-size:1.15rem;color:var(--dark)}.brand p{margin:2px 0 0;color:var(--muted);font-size:.88rem}.brand:before{content:'Contribution readiness map';display:inline-block;font-size:.7rem;text-transform:uppercase;letter-spacing:.12em;color:var(--accent);font-weight:800;background:var(--accent-soft);border-radius:999px;padding:4px 9px;margin-bottom:5px}
nav{display:flex;gap:10px;flex-wrap:wrap;align-items:center}nav a,.link-button,.btn,button,.primary{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:#fff;color:var(--dark);border-radius:999px;padding:9px 13px;font-weight:700;font-size:.9rem;box-shadow:var(--shadow);cursor:pointer;text-decoration:none;margin:0}button:not(.secondary):not(.danger):not(.tab),.primary,.btn.primary{background:var(--dark);color:#fff;border-color:var(--dark)}button.secondary,.secondary,.tab{background:#fff;color:var(--dark);border:1px solid var(--line)}button.danger,.danger{color:#991b1b;background:#fff;border-color:#f2c6c6}.link-button{color:var(--dark)}
main{max-width:1320px;margin:0 auto;padding:26px 20px 70px}.card{background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:18px;box-shadow:var(--shadow);margin-bottom:18px}.card h2,.card h3{margin-top:0}h2{font-size:1.4rem}h3{font-size:1rem;color:#374151}p{line-height:1.5}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px}.two{grid-template-columns:1fr 1fr}.controlsGrid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}
label{display:block;font-weight:700;font-size:.9rem;margin:10px 0 6px}input,textarea,select{width:100%;border:1px solid var(--line);border-radius:12px;padding:10px;background:#fff;font:inherit;margin-top:5px}textarea{min-height:120px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.small{font-size:.88rem;color:var(--muted)}.hidden{display:none!important}.notice{background:var(--soft);border:1px solid var(--line);border-radius:14px;padding:12px 14px;color:#374151}.error{color:var(--danger);font-weight:800}.success{color:var(--green);font-weight:800}
table{width:100%;border-collapse:collapse;font-size:.9rem}th,td{text-align:left;border-bottom:1px solid var(--line);padding:8px;vertical-align:top}th{color:#374151;background:var(--soft)}.tabs{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 18px}.tab.active{background:var(--dark);color:#fff;border-color:var(--dark)}.quickActions{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}.condition{border:1px solid var(--line);border-radius:16px;padding:14px;margin:12px 0;background:var(--soft)}.score-row{display:flex;gap:12px;flex-wrap:wrap;margin:10px 0}.score-row label{margin:0;font-weight:500}.badge{display:inline-block;padding:3px 8px;border-radius:999px;font-size:12px;font-weight:800}.weak{background:#fee4e2;color:#912018}.moderate{background:#fef0c7;color:#93370d}.strong{background:#dcfae6;color:#05603a}.none{background:#eef2f6;color:#475467}.summaryStrip{display:flex;gap:12px;align-items:center;justify-content:space-between;background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 14px;margin:12px 0 16px}
.mapPrintArea{padding:0;overflow:hidden}.mapPrintArea h2{padding:18px 18px 0;margin-bottom:0}.mapPrintArea>.grid,.mapPrintArea>p{padding-left:18px;padding-right:18px}.mapWrap{position:relative;height:1360px;overflow:auto;background:#fff;border-top:1px solid var(--line);border-radius:0 0 20px 20px}.mapCanvas{position:relative;width:1420px;height:1720px;background:#fff}svg.lines{position:absolute;inset:0;width:1420px;height:1720px;pointer-events:auto}.mapBlock{position:absolute;width:134px;min-height:63px;background:white;border:2px solid #d7e3f8;border-radius:14px;padding:7px 8px;box-shadow:0 10px 28px rgba(0,0,0,.08);cursor:pointer;user-select:none}.mapBlock:hover{filter:drop-shadow(0 8px 12px rgba(0,0,0,.14));border-color:#93b7e8}.mapBlock:active{cursor:grabbing}.mapBlock h4{margin:0 0 7px;color:#173b78;font-size:12px;line-height:1.2}.mapBlock .meta{font-size:9.5px;color:var(--muted);line-height:1.25}.responseCount{margin-top:4px;font-size:9.5px;font-weight:800;color:#173b78}.scoreBig{font-size:18px;font-weight:800;margin-top:6px;line-height:1.2}.weakMeta{color:#912018;font-weight:800}.node{position:absolute;left:50%;width:12px;height:12px;margin-left:-6px;border:2px solid var(--blue);background:white;border-radius:50%;z-index:4;cursor:crosshair;box-shadow:0 2px 6px rgba(15,94,170,.25)}.nodeTop{top:-7px}.nodeBottom{bottom:-7px}.node:hover,.node.linkingStart,.node.linkTarget{background:#dbeafe;border-color:#173b78;transform:scale(1.25)}.linkPreview{stroke:#173b78!important;stroke-width:2.5!important;stroke-dasharray:5 5!important;opacity:.95!important;fill:none}.mapCanvas.linking .mapBlock{cursor:crosshair}.line{pointer-events:stroke;fill:none;stroke-linecap:round;stroke-linejoin:round}.line.hierarchyLine{cursor:pointer;stroke:#3b82f6;stroke-width:3;stroke-dasharray:7 6;opacity:.55}.line.hierarchyLine:hover{stroke-width:5;opacity:1}.line.conditionLine{cursor:not-allowed;stroke-width:4;stroke-dasharray:none;opacity:.92}.line.conditionLine.weak{stroke-width:4.5}.line.conditionLine.moderate{stroke-width:4.25}.line.conditionLine.strong{stroke-width:4;opacity:.82}.lineLabelGroup{pointer-events:none}.lineLabelBox{display:none}.lineLabelText{font-size:10px;font-weight:800;fill:#243b68;paint-order:stroke;stroke:#fff;stroke-width:3px;stroke-linejoin:round}.lineLabelGroup.weak .lineLabelText{fill:#7a271a}.lineLabelGroup.moderate .lineLabelText{fill:#7a4b00}.lineLabelGroup.strong .lineLabelText{fill:#05603a}
.modal{position:fixed;inset:0;z-index:1000;background:rgba(17,24,39,.55);display:flex;align-items:center;justify-content:center;padding:22px}.modalCard{background:white;border:1px solid var(--line);border-radius:22px;box-shadow:0 20px 70px rgba(0,0,0,.25);max-width:720px;width:100%;max-height:88vh;overflow:auto;padding:20px}.modalCard select[multiple],.bParents{min-height:96px}.checkbox-inline{display:inline-flex;align-items:center;gap:8px;min-width:auto;padding:9px 10px;border:1px solid var(--line);border-radius:12px;background:#fff}.checkbox-inline input{width:auto;margin:0}
@media(max-width:850px){header{align-items:flex-start;flex-direction:column}.two{grid-template-columns:1fr}.grid{grid-template-columns:1fr}.mapCanvas{width:1180px}.mapBlock{width:134px}}
@media print{
  body{background:white!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  header,.tabs,main>section.card:not(.mapPrintArea),#loginCard,nav,button,.quickActions{display:none!important}
  main{max-width:none;padding:0}
  .tabPanel{display:block!important}
  .tabPanel:not(#tab-map){display:none!important}
  .mapPrintArea{border:0!important;box-shadow:none!important;padding:0!important;background:white!important}
  .mapPrintArea .grid,.mapPrintArea p,.mapPrintArea h2{display:none!important}
  .mapWrap{height:auto!important;overflow:visible!important;border:0!important;background:white!important;border-radius:0!important;box-shadow:none!important}
  .mapCanvas{transform-origin:top left;background:white!important;box-shadow:none!important;filter:none!important}
  svg.lines{background:transparent!important}
  .modal{display:none!important}

  /* Print should show the map evidence, not the on-screen editing helpers.
     These rules remove the grey/blue interaction shadows and hit-zone artefacts
     that were appearing behind blocks and nodes on printed sheets. */
  *{text-shadow:none!important}
  .card,.mapBlock,.node,.lineLabelBox{box-shadow:none!important;filter:none!important}
  .mapBlock{background:white!important;border-color:#cfdced!important}
  .mapBlock:hover{filter:none!important}
  .node{display:none!important}
  .linkPreview{display:none!important}
  .line{filter:none!important}
  .lineLabelBox{filter:none!important}
}

.conditionInner{border-top:1px solid var(--line);padding-top:10px;margin-top:10px}.conditionInner h4{margin:0 0 4px;color:#173b78}.linkSurvey{background:#fff}.linkSurvey>h3{color:#173b78}


.line.criticalPathLine{stroke-width:4;opacity:.96}.lineLabelGroup.critical .lineLabelBox{stroke:#7f1d1d;fill:#fff1f2}.criticalPathNote{background:#fff7ed;border:1px solid #fed7aa;color:#7c2d12;border-radius:12px;padding:10px 12px;margin:10px 0;font-size:.9rem}
