/* StudyHub global styles */
body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; }
[data-lucide] { stroke-width: 2; }

/* Kanban */
.kanban-col { min-width: 300px; max-width: 320px; }
.kanban-col-body { min-height: 200px; }

/* Status badges */
.badge { display: inline-flex; align-items: center; padding: 2px 8px; font-size: 11px; border-radius: 999px; font-weight: 500; }
.badge-startup { background:#e0e7ff; color:#3730a3; }
.badge-irb_review { background:#fef3c7; color:#92400e; }
.badge-activated { background:#d1fae5; color:#065f46; }
.badge-enrolling { background:#ccfbf1; color:#115e59; }
.badge-closed_to_accrual { background:#e0f2fe; color:#0c4a6e; }
.badge-completed { background:#e2e8f0; color:#334155; }
.badge-suspended { background:#fee2e2; color:#991b1b; }
.badge-terminated { background:#fecaca; color:#7f1d1d; }
.badge-draft { background:#f1f5f9; color:#475569; }

/* Traffic lights */
.tl-red { background:#ef4444; } .tl-amber { background:#f59e0b; } .tl-green { background:#10b981; }
.tl-dot { width:10px; height:10px; border-radius:50%; display:inline-block; }

/* Form designer */
.palette-item { cursor: grab; padding: 8px 10px; background:#f1f5f9; border:1px dashed #cbd5e1; border-radius: 6px; font-size:13px; display:flex; align-items:center; gap:8px; }
.palette-item:hover { background:#e2e8f0; }
.field-block { padding: 10px 12px; background:#f8fafc; border:1px solid #e2e8f0; border-radius: 6px; cursor:pointer; position:relative; }
.field-block.selected { border-color:#14b8a6; background:#f0fdfa; }
.field-block .handle { position:absolute; left:4px; top:50%; transform:translateY(-50%); color:#94a3b8; cursor:grab; }
.field-block.section-hdr { background:#0f766e; color:#fff; font-weight:600; }

/* Collapsible form sections */
.form-section .section-toggle i[data-lucide] { transition: transform 0.2s; }
.form-section .section-toggle.is-collapsed i[data-lucide] { transform: rotate(-90deg); }

/* Workflow canvas — pan/zoom cursor feedback */
#wfCanvas .parent-drawflow { cursor: grab; }
#wfCanvas .parent-drawflow.move { cursor: grabbing; }
#wfCanvas .drawflow-node { cursor: pointer; }
#wfCanvas, #wfCanvas .parent-drawflow { overflow: hidden; }

/* Workflow canvas node colors */
.drawflow .drawflow-node { background:#fff; border:2px solid #cbd5e1; border-radius:8px; padding:10px 14px; min-width:140px; color:#1e293b; }
.drawflow .drawflow-node.selected { border-color:#0f766e; box-shadow:0 0 0 3px rgba(20,184,166,0.2); }
.drawflow .drawflow-node.start { border-color:#10b981; background:#d1fae5; }
.drawflow .drawflow-node.end { border-color:#64748b; background:#e2e8f0; }
.drawflow .drawflow-node.form { border-color:#3b82f6; background:#dbeafe; }
.drawflow .drawflow-node.approval { border-color:#f59e0b; background:#fef3c7; }
.drawflow .drawflow-node.condition { border-color:#8b5cf6; background:#ede9fe; }
.drawflow .drawflow-node.parallel_split, .drawflow .drawflow-node.parallel_join { border-color:#ec4899; background:#fce7f3; }
.drawflow .drawflow-node.notification { border-color:#06b6d4; background:#cffafe; }
.drawflow .drawflow-node.launch_process { border-color:#14b8a6; background:#ccfbf1; }
.drawflow .drawflow-node .inputs, .drawflow .drawflow-node .outputs { position:relative; }
.drawflow .input, .drawflow .output { background:#0f766e; border:2px solid #fff; width:14px; height:14px; }
.drawflow .connection .main-path { stroke: #64748b; stroke-width:2; }

/* KPI cards */
.kpi { background:#fff; border:1px solid #e2e8f0; border-radius:8px; padding:14px; }
.kpi .lbl { font-size:11px; text-transform:uppercase; color:#64748b; letter-spacing:0.05em; }
.kpi .val { font-size:24px; font-weight:700; color:#0f172a; margin-top:2px; }
.kpi .sub { font-size:11px; color:#94a3b8; }

/* ── Print / PDF view ─────────────────────────────────────────────────
   Used by task_view.php so users can save submitted forms as PDFs for
   SharePoint. Strips nav, sidebar, and interactive elements; tightens
   spacing for letter paper. */
@media print {
  body { background:#fff !important; }
  /* Hide chrome */
  nav, header, footer, aside, .sidebar, .topbar, .no-print { display:none !important; }
  /* Strip backgrounds and shadows so ink prints clean */
  * { box-shadow:none !important; }
  .print-card { border:none !important; padding:0 !important; }
  /* Keep sections together when possible */
  .readonly-section, .form-section, .break-inside-avoid { break-inside:avoid; page-break-inside:avoid; }
  /* Compact type for paper */
  body, .text-sm { font-size: 11pt; }
  h1 { font-size: 16pt; }
  h2 { font-size: 13pt; }
  h3 { font-size: 11pt; }
  a { color:#0f172a !important; text-decoration:none !important; }
  /* Reduce link clutter — show URL inline only for file links if needed */
  @page { margin: 0.5in; }
}

/* ── Side drawer (Roles & Teams admin printable lists) ─────────────
   When the drawer is open, clicking Print should produce a clean
   document containing ONLY the drawer's content — no nav, no page
   chrome, no buttons. Achieved by toggling visibility on the body
   tree under @media print. */
@media print {
  body * { visibility: hidden !important; }
  #sideDrawer, #sideDrawer * { visibility: visible !important; }
  #sideDrawer .sd-scrim,
  #sideDrawer .sd-actions { display: none !important; }
  #sideDrawer { position: static !important; }
  #sideDrawer .sd-panel {
    position: static !important;
    width: 100% !important;
    max-width: 100% !important;
    height: auto !important;
    box-shadow: none !important;
    overflow: visible !important;
  }
  #sideDrawer .sd-panel #sdBody {
    overflow: visible !important;
    max-height: none !important;
  }
  .sd-list-row { break-inside: avoid; page-break-inside: avoid; }
  @page { margin: 0.5in; }
}

/* Number inputs are type-in fields, not spinners: hide the stepper buttons
   (arrow-key / wheel stepping is suppressed in form-renderer.js). */
input[type="number"]::-webkit-outer-spin-button,
input[type="number"]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
input[type="number"] { -moz-appearance: textfield; appearance: textfield; }

/* Changes5: inline emphasis for fields flagged by the cannot-submit box. */
input.field-error, textarea.field-error, select.field-error {
  border-color: #dc2626 !important;
  background-color: #fef2f2;
}
input[type="radio"].field-error, input[type="checkbox"].field-error {
  outline: 2px solid #dc2626;
  outline-offset: 1px;
}
