/* ============================================================
   FOSU (PublicTenderMaterialCollaboration) page styles.
   Only FOSU-specific classes live here (fosu- prefixed); shared
   k-* primitives come from kravspec.components.css / kravbank.
   Ported from the approved fosu-mockup.html.
   ============================================================ */

/* ---- header band ---- */
.fosu-head{background:var(--k-surface); border:1px solid var(--k-line); border-radius:12px;
  border-top:3px solid var(--k-petrol); box-shadow:0 1px 2px rgba(15,30,58,.04),0 4px 10px -8px rgba(15,30,58,.12);
  padding:1.1rem 1.25rem; margin-bottom:1rem;
  display:flex; align-items:flex-start; justify-content:space-between; gap:1rem; flex-wrap:wrap}
.fosu-head-id{display:flex; gap:.8rem}
.fosu-badge{width:2.5rem; height:2.5rem; border-radius:10px; display:inline-flex; align-items:center; justify-content:center;
  background:var(--k-petrol-bg); color:var(--k-petrol); box-shadow:0 0 0 1px var(--k-petrol-border) inset; flex-shrink:0; font-size:1.15rem}
.fosu-eyebrow{font-size:.72rem; font-weight:600; letter-spacing:.06em; text-transform:uppercase; color:var(--k-petrol)}
.fosu-title{margin:.05rem 0 .15rem; font-size:1.25rem; font-weight:650; letter-spacing:-.01em}
.fosu-sub{margin:0; color:var(--k-muted); font-size:.9rem; max-width:46rem}
.fosu-head-actions{display:flex; align-items:center; gap:.6rem; flex-wrap:wrap}
.fosu-member-tag{display:inline-flex; align-items:center; gap:.4rem; font-size:.8rem; font-weight:600;
  color:var(--k-success); background:var(--k-success-bg); border:1px solid var(--k-success-border); padding:.3rem .7rem; border-radius:999px}

/* ---- KPI row ---- */
.fosu-kpis{display:grid; grid-template-columns:repeat(4,1fr); gap:.8rem; margin-bottom:1rem}
@media (max-width:1000px){ .fosu-kpis{grid-template-columns:repeat(2,1fr)} }
.fosu-kpi{background:var(--k-surface); border:1px solid var(--k-line); border-radius:10px;
  box-shadow:0 1px 2px rgba(15,30,58,.04); padding:.8rem 1rem; border-top:3px solid var(--k-accent)}
.fosu-kpi--catalog{border-top-color:var(--k-petrol)}
.fosu-kpi--downloads{border-top-color:var(--k-success)}
.fosu-kpi--pending{border-top-color:var(--k-warning)}
.fosu-kpi-label{font-size:.72rem; font-weight:600; letter-spacing:.05em; text-transform:uppercase; color:var(--k-muted)}
.fosu-kpi-value{font-size:1.45rem; font-weight:650; line-height:1.2; font-variant-numeric:tabular-nums}
.fosu-kpi-sub{font-size:.78rem; color:var(--k-faint)}

/* ---- tabs ---- */
.fosu-tabs{display:flex; gap:.25rem; border-bottom:1px solid var(--k-line); margin-bottom:1rem}
.fosu-tab{display:inline-flex; align-items:center; gap:.45rem; padding:.55rem .95rem; font-weight:550; font-size:.9rem;
  color:var(--k-muted); border-bottom:2px solid transparent; margin-bottom:-1px; border-radius:6px 6px 0 0;
  background:none; border-top:none; border-left:none; border-right:none; cursor:pointer}
.fosu-tab:hover{color:var(--k-ink); background:var(--k-accent-tint)}
.fosu-tab--active{color:var(--k-accent); border-bottom:2px solid var(--k-accent)}
.fosu-tab .fosu-count{font-size:.72rem; font-weight:600; background:var(--k-bg); border:1px solid var(--k-line);
  border-radius:999px; padding:.02rem .45rem; color:var(--k-muted)}

/* ---- three-column layout ---- */
.fosu-grid{display:grid; grid-template-columns:280px minmax(340px,1fr) minmax(380px,440px); gap:1rem; align-items:start}
/* the shared k-toolbar primitive has no own margin; keep the page's 1rem rhythm */
.k-toolbar + .fosu-grid{margin-top:1rem}
.fosu-grid > *{min-width:0}
.fosu-grid--two{grid-template-columns:minmax(340px,1fr) minmax(380px,440px)}
@media (max-width:1240px){
  .fosu-grid{grid-template-columns:240px 1fr}
  .fosu-grid--two{grid-template-columns:1fr}
  .fosu-detail{position:static; max-height:none}
}
.fosu-panel{background:var(--k-surface); border:1px solid var(--k-line); border-radius:10px;
  box-shadow:0 1px 2px rgba(15,30,58,.04)}

/* ---- CPV division rail ---- */
.fosu-rail{padding:.6rem; position:sticky; top:1rem; max-height:calc(100vh - 2rem); overflow-y:auto}
.fosu-rail-title{font-size:.72rem; font-weight:600; letter-spacing:.05em; text-transform:uppercase; color:var(--k-muted); padding:.35rem .5rem}
.fosu-rail-item{display:flex; align-items:center; gap:.5rem; width:100%; text-align:left; padding:.42rem .55rem;
  border-radius:8px; color:var(--k-ink-soft); font-size:.84rem; background:none; border:none; cursor:pointer}
.fosu-rail-item:hover{background:var(--k-bg)}
.fosu-rail-item.active{background:var(--k-accent-tint); color:var(--k-accent-strong); font-weight:600}
.fosu-rail-code{font-family:ui-monospace,Menlo,Consolas,monospace; font-size:.72rem; color:var(--k-faint);
  background:var(--k-bg); border:1px solid var(--k-line-soft); border-radius:4px; padding:.05rem .3rem; flex-shrink:0}
.fosu-rail-item.active .fosu-rail-code{color:var(--k-accent); background:var(--k-surface); border-color:var(--k-accent-border)}
.fosu-rail-label{flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.fosu-rail-count{font-size:.72rem; color:var(--k-faint); font-variant-numeric:tabular-nums}

/* ---- publication list ---- */
.fosu-list-head{display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:.7rem 1rem;
  border-bottom:1px solid var(--k-line); font-size:.8rem; color:var(--k-muted)}
.fosu-row{display:flex; gap:.8rem; align-items:flex-start; width:100%; text-align:left; padding:.85rem 1rem;
  border:none; border-bottom:1px solid var(--k-line-soft); background:none; cursor:pointer}
.fosu-row:last-child{border-bottom:none}
.fosu-row:hover{background:var(--k-bg-alt)}
.fosu-row.active{background:var(--k-accent-tint); box-shadow:inset 3px 0 0 var(--k-accent)}
.fosu-row-ico{width:2.2rem; height:2.2rem; border-radius:8px; display:flex; align-items:center; justify-content:center;
  background:var(--k-petrol-bg); color:var(--k-petrol); flex-shrink:0; box-shadow:0 0 0 1px var(--k-petrol-border) inset}
.fosu-row-main{flex:1; min-width:0}
.fosu-row-title{font-weight:600; font-size:.92rem; color:var(--k-ink); margin:0 0 .1rem}
.fosu-row-meta{font-size:.78rem; color:var(--k-muted); display:flex; flex-wrap:wrap; gap:.25rem .6rem; align-items:center}
.fosu-row-org{font-weight:550; color:var(--k-ink-soft)}
.fosu-row-note{font-size:.76rem; color:var(--k-muted); margin-top:.25rem}
.fosu-row-chips{display:flex; flex-wrap:wrap; gap:.3rem; margin-top:.4rem}
.fosu-row-side{display:flex; flex-direction:column; align-items:flex-end; gap:.35rem; flex-shrink:0}
.fosu-cpv-chip{display:inline-flex; align-items:center; gap:.3rem; font-size:.72rem; font-weight:600;
  color:var(--k-petrol); background:var(--k-petrol-bg); border:1px solid var(--k-petrol-border); padding:.12rem .5rem; border-radius:999px}
.fosu-kw-chip{display:inline-flex; font-size:.72rem; color:var(--k-ink-soft); background:var(--k-bg);
  border:1px solid var(--k-line); padding:.12rem .5rem; border-radius:999px}
.fosu-dl{display:inline-flex; align-items:center; gap:.3rem; font-size:.76rem; color:var(--k-muted); font-variant-numeric:tabular-nums}
.fosu-lineage-tag{display:inline-flex; align-items:center; gap:.3rem; font-size:.7rem; font-weight:600;
  color:var(--k-info); background:var(--k-info-bg); border:1px solid var(--k-info-border); padding:.1rem .45rem; border-radius:999px}

/* ---- status chips ---- */
.fosu-st{display:inline-flex; align-items:center; gap:.32rem; font-size:.74rem; font-weight:600;
  padding:.16rem .55rem; border-radius:999px; border:1px solid; white-space:nowrap}
.fosu-st-dot{width:.42rem; height:.42rem; border-radius:50%; background:currentColor}
.fosu-st--published{color:var(--k-success); background:var(--k-success-bg); border-color:var(--k-success-border)}
.fosu-st--pending{color:var(--k-warning); background:var(--k-warning-bg); border-color:var(--k-warning-border)}
.fosu-st--rejected{color:var(--k-danger); background:var(--k-danger-bg); border-color:var(--k-danger-border)}
.fosu-st--withdrawn{color:var(--k-muted); background:var(--k-bg); border-color:var(--k-line)}
.fosu-st--superseded{color:var(--k-info); background:var(--k-info-bg); border-color:var(--k-info-border)}

/* ---- detail panel ---- */
.fosu-detail{position:sticky; top:1rem; max-height:calc(100vh - 2rem); overflow-y:auto}
.fosu-detail-head{padding:1rem 1.1rem .8rem; border-bottom:1px solid var(--k-line-soft)}
.fosu-detail-title{margin:.35rem 0 .2rem; font-size:1.02rem; font-weight:650; letter-spacing:-.01em}
.fosu-detail-meta{font-size:.8rem; color:var(--k-muted)}
.fosu-section{padding:.85rem 1.1rem; border-bottom:1px solid var(--k-line-soft)}
.fosu-section:last-child{border-bottom:none}
.fosu-section-title{font-size:.72rem; font-weight:600; letter-spacing:.05em; text-transform:uppercase; color:var(--k-muted); margin:0 0 .5rem}
.fosu-desc{margin:0; font-size:.85rem; color:var(--k-ink-soft)}
.fosu-doc-row{display:flex; align-items:center; gap:.6rem; padding:.45rem .55rem; border:1px solid var(--k-line-soft);
  border-radius:8px; margin-bottom:.4rem; background:var(--k-bg-alt)}
.fosu-ft{width:1.9rem; height:1.9rem; border-radius:6px; display:flex; align-items:center; justify-content:center; flex-shrink:0;
  font-size:.6rem; font-weight:700; letter-spacing:.02em; color:#fff}
.fosu-ft--docx{background:#2b579a} .fosu-ft--xlsx{background:#217346} .fosu-ft--pptx{background:#c14f2a}
.fosu-ft--pdf{background:#c0392b} .fosu-ft--other{background:var(--k-muted)}
.fosu-doc-name{flex:1; min-width:0; font-size:.83rem; font-weight:550; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.fosu-doc-size{font-size:.74rem; color:var(--k-faint); font-variant-numeric:tabular-nums}
.fosu-doc-role{font-size:.68rem; font-weight:600; color:var(--k-accent); background:var(--k-accent-tint);
  border:1px solid var(--k-accent-border); border-radius:999px; padding:.06rem .4rem}
.fosu-lineage{display:flex; gap:.55rem; align-items:flex-start; font-size:.8rem; color:var(--k-ink-soft);
  background:var(--k-info-bg); border:1px solid var(--k-info-border); border-radius:8px; padding:.55rem .7rem}
.fosu-lineage i{color:var(--k-info); flex-shrink:0; margin-top:.1rem}
.fosu-gdpr-line{display:flex; gap:.5rem; font-size:.78rem; color:var(--k-muted); align-items:baseline; margin-bottom:.2rem}
.fosu-gdpr-line b{color:var(--k-ink-soft); font-weight:600}
.fosu-gdpr-line i{color:var(--k-success)}

/* ---- detail actions + icon buttons + toast ---- */
.fosu-icon-btn{display:inline-flex; padding:.3rem; border-radius:6px; color:var(--k-muted); flex-shrink:0}
.fosu-icon-btn:hover{background:var(--k-accent-tint); color:var(--k-accent)}
.fosu-actions{display:flex; flex-wrap:wrap; gap:.5rem; margin-top:.7rem}
.fosu-toast{position:fixed; bottom:1.2rem; left:50%; transform:translateX(-50%); background:var(--k-ink);
  color:#fff; padding:.6rem 1.1rem; border-radius:999px; font-size:.85rem;
  box-shadow:0 24px 60px -20px rgba(15,30,58,.25); z-index:80}

/* ---- comments ---- */
.fosu-cmt{display:flex; gap:.6rem; margin-bottom:.75rem}
.fosu-cmt-av{width:1.9rem; height:1.9rem; border-radius:50%; background:var(--k-accent-tint); color:var(--k-accent-strong);
  display:flex; align-items:center; justify-content:center; font-size:.68rem; font-weight:700; flex-shrink:0;
  box-shadow:0 0 0 1px var(--k-accent-border) inset}
.fosu-cmt-body{flex:1; min-width:0}
.fosu-cmt-head{display:flex; align-items:baseline; gap:.45rem; flex-wrap:wrap}
.fosu-cmt-who{font-size:.8rem; font-weight:600}
.fosu-cmt-org{font-size:.74rem; color:var(--k-petrol); font-weight:600}
.fosu-cmt-when{font-size:.72rem; color:var(--k-faint)}
.fosu-cmt-text{font-size:.83rem; color:var(--k-ink-soft); margin:.1rem 0 0}
.fosu-cmt-del{font-size:.72rem; color:var(--k-faint); background:none; border:none; cursor:pointer; padding:0}
.fosu-cmt-del:hover{color:var(--k-danger)}
.fosu-cmt-input{display:flex; gap:.5rem; margin-top:.6rem}
.fosu-cmt-input input{flex:1}

/* ---- share wizard ---- */
.fosu-wiz-steps{display:flex; gap:.3rem; padding:.9rem 1.25rem 0}
.fosu-wiz-step{flex:1; text-align:center; font-size:.72rem; font-weight:600; color:var(--k-faint);
  padding-bottom:.55rem; border-bottom:3px solid var(--k-line-soft)}
.fosu-wiz-step--done{color:var(--k-success); border-bottom-color:var(--k-success)}
.fosu-wiz-step--now{color:var(--k-accent); border-bottom-color:var(--k-accent)}
.fosu-choice-grid{display:grid; grid-template-columns:1fr 1fr; gap:.7rem}
@media (max-width:640px){ .fosu-choice-grid{grid-template-columns:1fr} }
.fosu-choice{display:flex; flex-direction:column; gap:.3rem; text-align:left; border:1px solid var(--k-line);
  border-radius:10px; padding:.9rem 1rem; background:var(--k-surface); cursor:pointer;
  transition:border-color .14s ease, box-shadow .14s ease}
.fosu-choice:hover{border-color:var(--k-accent-border); box-shadow:0 1px 2px rgba(15,30,58,.04),0 4px 10px -8px rgba(15,30,58,.12)}
.fosu-choice--sel{border-color:var(--k-accent); box-shadow:0 0 0 3px rgba(45,95,176,.15)}
.fosu-choice-ico{width:2rem; height:2rem; border-radius:8px; background:var(--k-accent-tint); color:var(--k-accent);
  display:flex; align-items:center; justify-content:center; margin-bottom:.2rem}
.fosu-choice-name{font-weight:600; font-size:.9rem}
.fosu-choice-desc{font-size:.78rem; color:var(--k-muted)}
.fosu-chip-input-row{display:flex; gap:.5rem}
.fosu-chip-input-row input{flex:1}
.fosu-chip-tray{display:flex; flex-wrap:wrap; gap:.35rem; margin-top:.5rem}
.fosu-tray-chip{display:inline-flex; align-items:center; gap:.35rem; font-size:.78rem; font-weight:550;
  background:var(--k-petrol-bg); color:var(--k-petrol); border:1px solid var(--k-petrol-border); padding:.2rem .3rem .2rem .6rem; border-radius:999px}
.fosu-tray-chip small{font-weight:400; opacity:.8}
.fosu-tray-chip button{display:flex; padding:.1rem; border-radius:50%; color:inherit; background:none; border:none; cursor:pointer}
.fosu-tray-chip button:hover{background:rgba(0,0,0,.08)}
.fosu-tray-chip--kw{background:var(--k-bg); color:var(--k-ink-soft); border-color:var(--k-line)}
.fosu-gdpr-check{display:flex; gap:.6rem; align-items:flex-start; border:1px solid var(--k-warning-border);
  background:var(--k-warning-bg); border-radius:10px; padding:.8rem .9rem; cursor:pointer}
.fosu-gdpr-check input{width:auto; margin-top:.2rem; accent-color:var(--k-accent)}
.fosu-gdpr-check b{font-size:.86rem}
.fosu-gdpr-check p{margin:.15rem 0 0; font-size:.78rem; color:var(--k-muted)}
.fosu-sum-row{display:flex; gap:.6rem; font-size:.84rem; padding:.3rem 0}
.fosu-sum-row dt{width:9rem; color:var(--k-muted); flex-shrink:0}
.fosu-sum-row dd{margin:0; font-weight:550}
.fosu-file-pick{position:relative; border:1.5px dashed var(--k-line); border-radius:10px; padding:1.2rem;
  text-align:center; color:var(--k-muted); font-size:.85rem; margin-bottom:.7rem}
.fosu-file-pick input[type=file]{position:absolute; inset:0; opacity:0; cursor:pointer; width:100%; height:100%}
.fosu-replace{position:relative; overflow:hidden; display:inline-flex}
.fosu-replace input[type=file]{position:absolute; inset:0; opacity:0; cursor:pointer; width:100%; height:100%}
.fosu-role-select{width:auto; font-size:.78rem; padding:.25rem 1.6rem .25rem .5rem}
.fosu-wiz-lineage{margin-bottom:.9rem}

/* ---- pending banner + membership gate ---- */
.fosu-pending-banner{display:flex; gap:.6rem; align-items:center; background:var(--k-warning-bg);
  border:1px solid var(--k-warning-border); border-radius:10px; padding:.65rem .9rem;
  color:var(--k-warning); font-size:.84rem; font-weight:550; margin-bottom:1rem}
.fosu-locked{max-width:34rem; margin:3rem auto; text-align:center; padding:2rem;
  background:var(--k-surface); border:1px solid var(--k-line); border-radius:12px;
  box-shadow:0 1px 2px rgba(15,30,58,.04)}
.fosu-locked i{font-size:1.6rem; color:var(--k-petrol)}
.fosu-locked h2{font-size:1.05rem; margin:.6rem 0 .3rem}
.fosu-locked p{color:var(--k-muted); font-size:.88rem; margin:0}
