/* BioLab Analysis Tools. Builds on the BioLab tokens (--bl-*) of biolab.css;
   everything here is scoped to .ana-* classes. Tables keep table semantics on
   every width and reflow into cards below 900 px. */

.ana-body .bl-main{padding-bottom:48px}

/* Hero */
.ana-hero{padding:32px 0 26px;background:radial-gradient(60% 80% at 85% 10%,#dbe9fa 0,rgba(244,248,252,0) 70%),radial-gradient(40% 60% at 5% 100%,#ece7fb 0,rgba(244,248,252,0) 70%),var(--bl-bg);border-bottom:1px solid var(--bl-line)}
.ana-hero--compact{padding:26px 0 22px}
.ana-hero-row{display:flex;align-items:flex-end;justify-content:space-between;gap:28px}
.ana-hero h1{font-size:clamp(1.8rem,3vw,2.5rem)}
.ana-hero--compact h1{font-size:clamp(1.5rem,2.4vw,2.05rem)}
.ana-tagline{margin-top:8px;font-size:1.12rem;font-weight:500;color:var(--bl-text)}
.ana-principle{margin-top:10px;max-width:720px;color:var(--bl-text-soft);font-size:.94rem;line-height:1.6}
.ana-principle strong{color:var(--bl-text);font-weight:600}
.ana-stats{display:flex;gap:10px;margin:0;flex:none}
.ana-stats div{min-width:120px;background:#fff;border:1px solid var(--bl-line);border-radius:var(--bl-radius-sm);padding:12px 16px;box-shadow:var(--bl-shadow)}
.ana-stats dt{font-size:.72rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--bl-muted)}
.ana-stats dd{margin:4px 0 0;font-size:1.6rem;font-weight:700;letter-spacing:-.03em;color:var(--bl-blue-deep);font-variant-numeric:tabular-nums;line-height:1}
.ana-top-note{margin-top:20px}

/* Statuses: three states, each with a backing record */
.ana-statuses{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:12px 0 0;padding:0}
.ana-statuses--compact{margin:0}
.ana-status{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:4px 11px;font-size:.76rem;font-weight:700;letter-spacing:.02em;border:1px solid transparent;white-space:nowrap}
.ana-status::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;opacity:.8}
.ana-status--archived{background:var(--bl-violet-soft);color:#5236ad}
.ana-status--executed{background:var(--bl-teal-soft);color:#046b6f}
.ana-status--exploration{background:var(--bl-blue-soft);color:var(--bl-blue-deep)}
.ana-status--none{background:var(--bl-bg-deep);color:var(--bl-muted)}
.ana-status-defs{margin:10px 0 0;display:flex;flex-direction:column;gap:10px}
.ana-status-defs dt{margin-bottom:4px}
.ana-status-defs dd{margin:0;font-size:.82rem;line-height:1.5;color:var(--bl-text-soft)}

/* Toolbar */
.ana-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:12px 18px;margin-top:24px}
.ana-search{flex:1 1 360px;display:flex;align-items:center;gap:10px;min-width:0;background:#fff;border:1px solid var(--bl-line-strong);border-radius:14px;padding:0 14px;min-height:48px}
.ana-search:focus-within{border-color:var(--bl-blue);box-shadow:0 0 0 4px rgba(38,117,200,.14)}
.ana-search .bl-icon{color:var(--bl-muted);flex:none}
.ana-search input{flex:1;min-width:0;border:0;background:none;font:inherit;font-size:.96rem;color:var(--bl-text);outline:none}
.ana-case{display:inline-flex;align-items:center;gap:8px;font-size:.86rem;color:var(--bl-muted);font-weight:600}
.ana-case select{font:inherit;font-size:.9rem;color:var(--bl-text);background:#fff;border:1px solid var(--bl-line-strong);border-radius:12px;padding:10px 12px;min-height:44px}
.ana-case-note{font-size:.78rem;color:var(--bl-muted)}

/* Sections */
.ana-section{margin-top:40px}
.ana-section-head{max-width:760px;margin-bottom:18px}
.ana-section-head h2{font-size:clamp(1.35rem,2.2vw,1.7rem)}
.ana-section-head p{color:var(--bl-text-soft);font-size:.95rem;line-height:1.6;margin-top:8px}
.ana-section-head--row{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;max-width:none}
.ana-section-head--row>div{max-width:760px}
.ana-empty{margin-top:10px;color:var(--bl-muted);font-size:.9rem}
.ana-link{display:inline-flex;align-items:center;gap:5px;color:var(--bl-blue-deep);text-decoration:none;font-weight:600;font-size:.88rem}
.ana-link:hover{text-decoration:underline;text-underline-offset:3px}
.ana-link .bl-icon{width:.95em;height:.95em}

/* Tool cards */
.ana-tool-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;list-style:none;margin:0;padding:0}
.ana-tool{display:flex;gap:14px;align-items:flex-start;background:#fff;border:1px solid var(--bl-line);border-radius:var(--bl-radius);padding:20px;box-shadow:var(--bl-shadow)}
.ana-tool--planned{background:var(--bl-bg);box-shadow:none}
.ana-tool-icon{display:grid;place-items:center;width:46px;height:46px;flex:none;border-radius:14px;background:var(--bl-blue-soft);color:var(--bl-blue)}
.ana-tool--planned .ana-tool-icon{background:#fff;color:var(--bl-muted)}
.ana-tool-icon .bl-icon{width:22px;height:22px}
.ana-tool-body{min-width:0;flex:1}
.ana-tool-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.ana-tool h3{font-size:1.02rem}
.ana-tool p{color:var(--bl-text-soft);font-size:.9rem;line-height:1.55;margin:6px 0 12px}
.ana-pill{display:inline-flex;align-items:center;border-radius:999px;padding:3px 10px;font-size:.72rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.ana-pill--available{background:var(--bl-teal-soft);color:#046b6f}
.ana-pill--exploration{background:var(--bl-blue-soft);color:var(--bl-blue-deep)}
.ana-pill--planned{background:#fff;color:var(--bl-muted);border:1px solid var(--bl-line-strong)}

/* Tables */
.ana-table{width:100%;border-collapse:separate;border-spacing:0;text-align:left;font-size:.88rem;line-height:1.5;color:var(--bl-text);background:#fff;border:1px solid var(--bl-line);border-radius:var(--bl-radius-sm);overflow:hidden}
.ana-table caption{text-align:left;caption-side:top;color:var(--bl-text-soft);font-size:.84rem;padding:0 0 10px}
.ana-table :is(th,td){padding:11px 13px;vertical-align:top;border-bottom:1px solid var(--bl-line)}
.ana-table thead th{font-size:.71rem;text-transform:uppercase;letter-spacing:.05em;color:var(--bl-muted);font-weight:700;background:var(--bl-bg)}
.ana-table tbody th[scope=row]{font-weight:600}
.ana-table tbody tr:last-child :is(th,td){border-bottom:0}
.ana-table a{color:var(--bl-blue-deep)}
.ana-cell-label{display:none}
.ana-cell-note{display:block;color:var(--bl-muted);font-size:.78rem;line-height:1.45;margin-top:3px;font-weight:400}
.ana-value{font-variant-numeric:tabular-nums}
.ana-value small{display:block;color:var(--bl-muted);font-size:.72rem}
.ana-hash{font:.74rem ui-monospace,SFMono-Regular,Menlo,monospace;overflow-wrap:anywhere;color:var(--bl-text-soft)}
.ana-table code,.ana-kv code,.ana-dates code,.ana-viewer-facts code,.ana-variant code{font:.8rem ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--bl-bg);border:1px solid var(--bl-line);border-radius:6px;padding:1px 6px;overflow-wrap:anywhere}
.ana-origin{display:block;margin-top:4px;font-size:.72rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.ana-origin--stackfire{color:#046b6f}
.ana-origin--repository{color:#5236ad}
.ana-artifacts{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.ana-flag{display:inline-flex;align-items:center;border-radius:6px;padding:2px 7px;font-size:.72rem;font-weight:700;background:var(--bl-bg-deep);color:var(--bl-text-soft);margin-right:6px;white-space:nowrap}
.ana-flag--ok{background:var(--bl-teal-soft);color:#046b6f}
.ana-flag--note{background:var(--bl-amber-soft);color:#8a5600}
.ana-flag--warn{background:var(--bl-coral-soft);color:#9c2f45}

/* Analysis list (MVA page) */
.ana-analysis-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.ana-analysis{padding:20px 22px;display:flex;flex-direction:column;gap:12px}
.ana-analysis-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}
.ana-analysis h3{font-size:1.05rem}
.ana-analysis h3 a{color:var(--bl-text);text-decoration:none}
.ana-analysis h3 a:hover{color:var(--bl-blue-deep)}
.ana-analysis-meta{margin:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px 16px}
.ana-analysis-meta dt{font-size:.72rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--bl-muted)}
.ana-analysis-meta dd{margin:2px 0 0;font-size:.88rem;color:var(--bl-text)}
.ana-analysis-not{color:var(--bl-text-soft);font-size:.88rem;line-height:1.55}
.ana-analysis-not strong{color:var(--bl-text);font-weight:600}
.ana-analysis .bl-btn{align-self:flex-start;margin-top:auto}

/* Detail page */
.ana-detail-grid{display:grid;grid-template-columns:minmax(0,1fr) 272px;gap:28px;padding-top:24px;align-items:start}
.ana-detail-main{min-width:0;display:flex;flex-direction:column;gap:36px}
.ana-block h2{font-size:1.3rem;margin-bottom:10px}
.ana-block-lead{color:var(--bl-text-soft);font-size:.92rem;line-height:1.6;margin-bottom:14px}
.ana-dates,.ana-kv{margin:0;display:grid;gap:10px}
.ana-dates div,.ana-kv div{display:grid;grid-template-columns:200px minmax(0,1fr);gap:4px 16px;padding:10px 0;border-bottom:1px solid var(--bl-line)}
.ana-dates div:last-child,.ana-kv div:last-child{border-bottom:0}
.ana-dates dt,.ana-kv dt{font-size:.78rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--bl-muted);padding-top:2px}
.ana-dates dd,.ana-kv dd{margin:0;font-size:.92rem;line-height:1.55;color:var(--bl-text)}
.ana-kv--tight div{grid-template-columns:130px minmax(0,1fr);padding:6px 0}
.ana-inline-list,.ana-plain-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:4px}
.ana-plain-list li{position:relative;padding-left:14px}
.ana-plain-list li::before{content:"";position:absolute;left:0;top:.6em;width:6px;height:6px;border-radius:50%;background:var(--bl-blue)}
.ana-detail-side{position:sticky;top:calc(var(--bl-header-h) + 60px);display:flex;flex-direction:column;gap:16px}
.ana-side-block{background:#fff;border:1px solid var(--bl-line);border-radius:var(--bl-radius);padding:16px 18px;box-shadow:var(--bl-shadow)}
.ana-side-block h2{font-size:.78rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--bl-muted);margin-bottom:8px}
.ana-side-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;font-size:.9rem}
.ana-side-list a{color:var(--bl-text-soft);text-decoration:none}
.ana-side-list a:hover{color:var(--bl-blue-deep)}

/* Downloads */
.ana-downloads-head{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-bottom:16px}
.ana-downloads-note{flex-basis:100%;color:var(--bl-muted);font-size:.84rem;line-height:1.5}
.ana-download-group+.ana-download-group{margin-top:16px}
.ana-download-group h4{font-size:.82rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--bl-muted);margin-bottom:8px}
.ana-file-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.ana-file{background:#fff;border:1px solid var(--bl-line);border-radius:var(--bl-radius-sm);padding:10px 14px}
.ana-file-name{display:inline-flex;align-items:center;gap:6px;font-weight:600;color:var(--bl-blue-deep);text-decoration:none;font-size:.92rem}
.ana-file-name:hover{text-decoration:underline}
.ana-file-name--unavailable{color:var(--bl-coral)}
.ana-file-meta{display:block;margin-top:3px;color:var(--bl-muted);font-size:.78rem;line-height:1.5;overflow-wrap:anywhere}
.ana-export-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;font-size:.9rem;color:var(--bl-text-soft)}
.ana-missing{padding:40px 0;max-width:600px}
.ana-missing h1{font-size:2rem;margin-bottom:12px}
.ana-missing p{color:var(--bl-text-soft);margin-top:10px}

/* Structure Explorer */
.ana-structure-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(300px,1fr);gap:24px;padding-top:24px;align-items:start}
.ana-viewer-card{padding:18px 20px 20px;display:flex;flex-direction:column;gap:12px;box-shadow:var(--bl-shadow)}
.ana-viewer-head h2{font-size:1.15rem}
.ana-viewer-status{color:var(--bl-text-soft);font-size:.86rem;margin-top:4px}
.ana-viewer-controls{display:flex;align-items:center;flex-wrap:wrap;gap:8px 16px}
.ana-control-group{display:inline-flex;flex-wrap:wrap;gap:6px}
.ana-residue.is-active{border-color:var(--bl-blue);background:var(--bl-blue-soft);color:var(--bl-blue-deep)}
.ana-residue--nonsense{border-color:#e5b4bf}
.ana-viewer{position:relative;width:100%;aspect-ratio:4/3;min-height:360px;border-radius:var(--bl-radius-sm);overflow:hidden;border:1px solid var(--bl-line);background:#fff}
.ana-viewer .msp-plugin{position:absolute;inset:0}
.ana-viewer-fallback{color:var(--bl-coral);font-size:.9rem}
.ana-viewer-facts{margin:0;display:grid;gap:6px}
.ana-viewer-facts div{display:grid;grid-template-columns:220px minmax(0,1fr);gap:4px 14px;font-size:.86rem;line-height:1.5}
.ana-viewer-facts dt{color:var(--bl-muted);font-weight:600}
.ana-viewer-facts dd{margin:0;overflow-wrap:anywhere}
.ana-match--ok{color:#046b6f;font-weight:600}
.ana-match--warn{color:#9c2f45;font-weight:600}
.ana-plddt{display:inline-flex;align-items:center;gap:6px;margin-right:10px;font-size:.8rem}
.ana-plddt::before{content:"";width:12px;height:12px;border-radius:3px;background:var(--c)}
.ana-plddt--vh{--c:#0053d6}
.ana-plddt--h{--c:#65cbf3}
.ana-plddt--l{--c:#ffdb13}
.ana-plddt--vl{--c:#ff7d45}
.ana-structure-side{display:flex;flex-direction:column;gap:16px;min-width:0}
.ana-metrics{margin:0;display:grid;gap:6px}
.ana-metrics div{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:4px 12px;padding:6px 0;border-bottom:1px solid var(--bl-line);font-size:.84rem}
.ana-metrics div:last-child{border-bottom:0}
.ana-metrics dt{color:var(--bl-text-soft)}
.ana-metrics dd{margin:0;font-variant-numeric:tabular-nums;font-weight:600;overflow-wrap:anywhere}
.ana-metrics dd small{display:block;font-weight:400;color:var(--bl-muted);font-size:.74rem}
.ana-track{margin-top:10px}
.ana-track-svg{width:100%;height:auto;display:block}
.ana-track-axis{fill:var(--bl-line-strong)}
.ana-track-label{font-size:11px;fill:var(--bl-muted);font-family:Inter,system-ui,sans-serif}
.ana-track-feature{fill:var(--bl-blue);opacity:.75}
.ana-track-feature--region{fill:var(--bl-violet)}
.ana-track-feature--binding-site,.ana-track-feature--active-site{fill:var(--bl-teal)}
.ana-track-feature--modified-residue{fill:var(--bl-amber)}
.ana-track-marker{stroke:var(--bl-text);stroke-width:1.5;stroke-dasharray:3 3}
.ana-track-marker--nonsense{stroke:var(--bl-coral)}
.ana-track-marker-label{font-size:11px;fill:var(--bl-text);font-weight:600;font-family:Inter,system-ui,sans-serif}
.ana-track-status{color:var(--bl-muted);font-size:.84rem}
.ana-feature-list{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:.8rem;color:var(--bl-text-soft);max-height:220px;overflow:auto}
.ana-variant+.ana-variant{margin-top:14px;padding-top:12px;border-top:1px solid var(--bl-line)}
.ana-variant h3{font-size:.95rem;margin-bottom:6px}
.ana-variant-warning{margin-top:8px;font-size:.84rem}
.ana-conservation{font-size:.82rem}

/* Narrow layouts: tables become cards, grids stack */
@media(max-width:1023px){
  .ana-tool-grid{grid-template-columns:1fr 1fr}
  .ana-detail-grid,.ana-structure-grid{grid-template-columns:1fr}
  .ana-detail-side{position:static;order:-1}
  .ana-analysis-list{grid-template-columns:1fr}
}
@media(max-width:899px){
  .ana-table,.ana-table thead,.ana-table tbody,.ana-table tr,.ana-table th,.ana-table td,.ana-table caption{display:block}
  .ana-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
  .ana-table tbody tr{padding:6px 0 10px;border-bottom:1px solid var(--bl-line)}
  .ana-table tbody tr:last-child{border-bottom:0}
  .ana-table :is(th,td){border-bottom:0;padding:6px 14px}
  .ana-table tbody th[scope=row]{padding-top:12px;font-size:.95rem}
  .ana-cell-label{display:block;font-size:.7rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--bl-muted);margin-bottom:2px}
  .ana-dates div,.ana-kv div,.ana-kv--tight div,.ana-viewer-facts div{grid-template-columns:1fr}
}
@media(max-width:680px){
  .ana-hero-row{flex-direction:column;align-items:flex-start}
  .ana-stats{width:100%;flex-wrap:wrap}
  .ana-stats div{flex:1 1 120px}
  .ana-tool-grid{grid-template-columns:1fr}
  .ana-section-head--row{flex-direction:column;align-items:flex-start}
  .ana-viewer{min-height:300px;aspect-ratio:1}
  .ana-metrics div{grid-template-columns:1fr}
}
