/* DSS SharePoint Toolkit - all rules scoped to .dss-sp */
.dss-sp{--dss-ink:#1c2733;--dss-mute:#5b6b7b;--dss-line:#d7dde5;--dss-soft:#f4f7f9;--dss-accent:#038387;--dss-accent-d:#026467;--dss-bad:#a4262c;--dss-ok:#107c10;--dss-warn:#8a5a00;
  box-sizing:border-box;color:var(--dss-ink);font-size:15px;line-height:1.5;max-width:1100px;margin:0 auto}
.dss-sp *,.dss-sp *::before,.dss-sp *::after{box-sizing:border-box}
.dss-sp h3{margin:0 0 4px;font-size:1.25rem;line-height:1.3}
.dss-sp p{margin:0 0 12px}
.dss-sp .dss-sp-lead{color:var(--dss-mute);margin-bottom:18px}

/* hub tabs */
.dss-sp .dss-sp-tabs{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 20px;padding:0 0 10px;border-bottom:1px solid var(--dss-line)}
.dss-sp .dss-sp-tab{appearance:none;background:transparent;border:1px solid var(--dss-line);border-radius:6px;padding:6px 12px;font:inherit;font-size:.9rem;color:var(--dss-ink);cursor:pointer}
.dss-sp .dss-sp-tab:hover{border-color:var(--dss-accent)}
.dss-sp .dss-sp-tab[aria-selected="true"]{background:var(--dss-accent);border-color:var(--dss-accent);color:#fff}
.dss-sp .dss-sp-subtabs{margin:0 0 10px;padding:0;border:0}
.dss-sp .dss-sp-subtabs .dss-sp-tab{padding:3px 10px;font-size:.82rem}

/* layout */
.dss-sp .dss-sp-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:22px;align-items:start}
.dss-sp .dss-sp-col{min-width:0}
.dss-sp .dss-sp-panel{border:1px solid var(--dss-line);border-radius:8px;padding:16px;background:#fff;margin-bottom:16px}
.dss-sp .dss-sp-panel>h4{margin:0 0 10px;font-size:1rem}
.dss-sp .dss-sp-two{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px}
@media(max-width:820px){.dss-sp .dss-sp-grid,.dss-sp .dss-sp-two{grid-template-columns:1fr}}

/* form controls */
.dss-sp .dss-sp-field{margin:0 0 12px;min-width:0}
.dss-sp .dss-sp-field>label{display:block;font-weight:600;font-size:.86rem;margin-bottom:4px}
.dss-sp .dss-sp-hint{display:block;color:var(--dss-mute);font-size:.8rem;margin-top:3px}
.dss-sp .dss-sp-input,.dss-sp textarea.dss-sp-input,.dss-sp select.dss-sp-input{width:100%;padding:7px 9px;border:1px solid var(--dss-line);border-radius:5px;background:#fff;color:var(--dss-ink);font:inherit;font-size:.92rem;min-height:36px}
.dss-sp .dss-sp-input:focus,.dss-sp .dss-sp-btn:focus-visible,.dss-sp .dss-sp-tab:focus-visible{outline:2px solid var(--dss-accent);outline-offset:1px}
.dss-sp textarea.dss-sp-input{resize:vertical;min-height:90px}
.dss-sp .dss-sp-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.84rem;line-height:1.45}
.dss-sp .dss-sp-check{display:inline-flex;align-items:center;gap:6px;margin:0 14px 6px 0;font-size:.9rem;font-weight:400}
.dss-sp .dss-sp-check input{margin:0}
.dss-sp input[type=color]{width:38px;height:32px;padding:1px;border:1px solid var(--dss-line);border-radius:5px;background:#fff;cursor:pointer}

/* buttons */
.dss-sp .dss-sp-btn{appearance:none;display:inline-block;padding:7px 14px;border-radius:5px;border:1px solid var(--dss-accent);background:var(--dss-accent);color:#fff;font:inherit;font-size:.88rem;cursor:pointer;margin:0 6px 6px 0}
.dss-sp .dss-sp-btn:hover{background:var(--dss-accent-d)}
.dss-sp .dss-sp-btn-ghost{background:#fff;color:var(--dss-accent-d)}
.dss-sp .dss-sp-btn-ghost:hover{background:var(--dss-soft)}
.dss-sp .dss-sp-btn-x{padding:3px 9px;margin:0;border-color:var(--dss-line);color:var(--dss-mute);background:#fff}
.dss-sp .dss-sp-btn-x:hover{color:var(--dss-bad);background:#fff;border-color:var(--dss-bad)}

/* output block */
.dss-sp .dss-sp-out{border:1px solid var(--dss-line);border-radius:6px;margin:0 0 14px;background:var(--dss-soft)}
.dss-sp .dss-sp-out-h{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:5px 8px 5px 12px;border-bottom:1px solid var(--dss-line);font-weight:600;font-size:.82rem}
.dss-sp .dss-sp-out-h .dss-sp-btn{margin:0;padding:3px 10px;font-size:.78rem}
.dss-sp .dss-sp-out pre{margin:0;padding:10px 12px;max-height:420px;overflow:auto;white-space:pre-wrap;word-break:break-word;background:transparent;border:0;color:var(--dss-ink)}

/* editable rows */
.dss-sp .dss-sp-row{display:flex;gap:8px;align-items:center;margin:0 0 6px}
.dss-sp .dss-sp-row-head{font-size:.78rem;font-weight:600;color:var(--dss-mute)}
.dss-sp .dss-sp-cell{flex:1 1 0;min-width:0}
.dss-sp .dss-sp-cell-x{flex:0 0 34px}
.dss-sp .dss-sp-cell .dss-sp-input{padding:5px 7px;min-height:32px}
@media(max-width:600px){
  .dss-sp .dss-sp-row-head{display:none}
  .dss-sp .dss-sp-row{flex-wrap:wrap;border:1px solid var(--dss-line);border-radius:6px;padding:8px}
  .dss-sp .dss-sp-cell{flex:1 1 100%}
  .dss-sp .dss-sp-cell[data-label]::before{content:attr(data-label);display:block;font-size:.75rem;color:var(--dss-mute)}
}

/* tables */
.dss-sp .dss-sp-scroll{overflow-x:auto;margin:0 0 14px}
.dss-sp table.dss-sp-table{border-collapse:collapse;width:100%;font-size:.88rem;background:#fff}
.dss-sp .dss-sp-table th,.dss-sp .dss-sp-table td{border:1px solid var(--dss-line);padding:6px 9px;text-align:left;vertical-align:middle}
.dss-sp .dss-sp-table th{background:var(--dss-soft);font-weight:600}
.dss-sp .dss-sp-table code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.84rem;background:var(--dss-soft);padding:1px 5px;border-radius:3px}

/* messages */
.dss-sp .dss-sp-msg{padding:8px 12px;border-radius:5px;border:1px solid var(--dss-line);background:var(--dss-soft);font-size:.86rem;margin:0 0 10px}
.dss-sp .dss-sp-msg.is-ok{border-color:#9fd89f;background:#f1faf1;color:#0b5a0b}
.dss-sp .dss-sp-msg.is-bad{border-color:#e6a5a8;background:#fdf3f4;color:#7c1d22}
.dss-sp .dss-sp-msg.is-warn{border-color:#e8cf8f;background:#fffaf0;color:var(--dss-warn)}
.dss-sp ul.dss-sp-issues{margin:6px 0 0;padding-left:18px}

/* preview sandbox (mimics SharePoint list cell) */
.dss-sp .dss-sp-preview{border:1px dashed var(--dss-line);border-radius:6px;padding:14px;background:#fff;min-height:60px;font-family:"Segoe UI",system-ui,sans-serif;font-size:14px;color:#323130}
.dss-sp .dss-sp-preview .dss-icon{display:inline-block;width:1.2em;text-align:center;font-style:normal}
.dss-sp .dss-sp-preview button{font:inherit;cursor:default}
.dss-sp .dss-sp-preview-item{display:flex;gap:10px;align-items:center;padding:5px 0;border-bottom:1px solid #edebe9}
.dss-sp .dss-sp-preview-item:last-child{border-bottom:0}
.dss-sp .dss-sp-preview-item>small{flex:0 0 110px;color:var(--dss-mute)}
.dss-sp .sp-field-severity--good{background:#dff6dd;color:#107c10;padding:2px 8px;border-radius:2px}
.dss-sp .sp-field-severity--low{background:#f3f2f1;color:#605e5c;padding:2px 8px;border-radius:2px}
.dss-sp .sp-field-severity--warning{background:#fff4ce;color:#8a5a00;padding:2px 8px;border-radius:2px}
.dss-sp .sp-field-severity--severeWarning{background:#fed9cc;color:#a80000;padding:2px 8px;border-radius:2px}
.dss-sp .sp-field-severity--blocked{background:#fde7e9;color:#a4262c;padding:2px 8px;border-radius:2px}

/* permission matrix */
.dss-sp .dss-pm td.dss-pm-cell{padding:3px}
.dss-sp .dss-pm select{width:100%;min-width:104px;padding:4px;border:1px solid var(--dss-line);border-radius:4px;background:#fff;font:inherit;font-size:.82rem}
.dss-sp .dss-pm-badge{display:inline-block;padding:2px 8px;border-radius:10px;font-size:.78rem;font-weight:600;white-space:nowrap}
.dss-sp .dss-pm-Full{background:#fde7e9;color:#a4262c}
.dss-sp .dss-pm-Design{background:#f0e4fb;color:#5c2e91}
.dss-sp .dss-pm-Edit{background:#ffe9d1;color:#8a4500}
.dss-sp .dss-pm-Contribute{background:#fff4ce;color:#7a5900}
.dss-sp .dss-pm-Read{background:#dff6dd;color:#0b5a0b}
.dss-sp .dss-pm-View{background:#deecf9;color:#0b4a82}
.dss-sp .dss-pm-Limited{background:#eee;color:#555}
.dss-sp .dss-pm-None{background:#fff;color:#999;border:1px dashed #ccc}

/* checklist */
.dss-sp .dss-sp-bar{height:8px;border-radius:4px;background:var(--dss-line);overflow:hidden;margin:6px 0 14px}
.dss-sp .dss-sp-bar>i{display:block;height:100%;width:0;background:var(--dss-accent);transition:width .25s}
.dss-sp .dss-cl-phase h4{margin:16px 0 6px;font-size:1rem;padding-bottom:4px;border-bottom:1px solid var(--dss-line)}
.dss-sp .dss-cl-item{display:flex;gap:8px;align-items:flex-start;margin:0 0 5px;font-size:.92rem}
.dss-sp .dss-cl-item input{margin-top:5px}
.dss-sp .dss-cl-item.is-done span{color:var(--dss-mute);text-decoration:line-through}

@media print{.dss-sp .dss-sp-btn,.dss-sp .dss-sp-tabs,.dss-sp .dss-sp-cell-x{display:none}}

/* keep [hidden] working on grid/flex elements */
.dss-sp [hidden]{display:none !important}
