:root{--ink:#0d2340;--teal:#0d9f99;--teal-dark:#087773;--soft:#eaf8f7;--line:#cfdee7;--muted:#5a6f84;--paper:#f6f9fb;--blue:#3d78a8;--red:#bc5c79;--gold:#d79b3d;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--paper)}*{box-sizing:border-box}body{margin:0;min-width:0;overflow-x:hidden}.app-header{display:grid;grid-template-columns:minmax(180px,.42fr) minmax(380px,1.35fr) minmax(240px,.58fr);gap:30px;align-items:start;padding:44px clamp(24px,5vw,76px);border-bottom:1px solid var(--line);background:linear-gradient(135deg,var(--soft),#fff 70%)}.back-link{color:var(--teal-dark);font-weight:750;text-decoration:none}.header-copy>span,.section-label{color:var(--teal-dark);font-size:.72rem;font-weight:800;letter-spacing:.11em}.header-copy h1{margin:.5rem 0 .65rem;font-size:clamp(2.6rem,5vw,5rem);line-height:.94;letter-spacing:-.05em}.header-copy p{max-width:780px;margin:0;color:var(--muted);font-size:1.03rem;line-height:1.65}.dataset-state{display:grid;gap:7px;padding:16px;border:1px solid var(--line);border-radius:16px;background:#fff}.dataset-state small{color:var(--teal-dark);font-weight:800;letter-spacing:.1em}.dataset-state strong{font-size:.95rem}.dataset-state span{color:var(--muted);font-size:.74rem;line-height:1.45}main{display:grid;grid-template-columns:minmax(260px,300px) minmax(0,1fr);gap:24px;width:100%;max-width:1600px;margin:0 auto;padding:28px clamp(20px,4vw,60px) 54px}.controls{display:grid;min-width:0;align-content:start;gap:14px}.controls section,.panel,.metrics article{border:1px solid var(--line);border-radius:18px;background:#fff}.controls section{display:grid;min-width:0;gap:16px;padding:18px}.controls label{display:grid;grid-template-columns:1fr auto;gap:7px 12px;color:var(--muted);font-size:.78rem;font-weight:700}.controls select,.controls input[type="range"]{grid-column:1/-1;width:100%}.controls select{padding:10px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink)}.controls output{color:var(--teal-dark);font-variant-numeric:tabular-nums}.controls input{accent-color:var(--teal)}.file-label{padding:11px;border:1px dashed var(--teal);border-radius:11px;color:var(--teal-dark)!important;cursor:pointer}.file-label input{min-width:0;max-width:100%;font-size:.78rem}.schema,.status,.boundary p{margin:0;color:var(--muted);font-size:.8rem;line-height:1.55}.button-row{display:grid;grid-template-columns:minmax(0,1fr);gap:8px}.button-row button{padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--soft);color:var(--teal-dark);font-weight:750;cursor:pointer}.boundary{border-left:4px solid var(--gold)!important}.workspace{display:grid;gap:18px;min-width:0}.metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;min-width:0}.metrics article{display:grid;gap:4px;padding:18px}.metrics span{color:var(--muted);font-size:.72rem;font-weight:750;text-transform:uppercase;letter-spacing:.08em}.metrics strong{font-size:1.7rem;color:var(--teal-dark)}.metrics small{color:var(--muted)}.panel{padding:20px;overflow:hidden}.panel>header{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.panel h2{margin:.35rem 0 0;font-size:1.05rem}.legend{display:flex;flex-wrap:wrap;gap:7px}.legend span{padding:6px 8px;border-radius:999px;font-size:.67rem;font-weight:750}.protect{background:#dceaf7;color:#285f92}.neutral{background:#edf1f4;color:#5c7084}.expose{background:#f5dfe6;color:#914660}.domain-map{display:flex;height:42px;margin:22px 0 8px;border-radius:10px;overflow:hidden}.domain-map span{display:grid;place-items:center;min-width:44px;border-right:2px solid #fff;color:#fff;font-size:.65rem;font-weight:800}.coverage-map{position:relative;min-height:260px;padding:10px 0;border-top:1px solid var(--line);background:repeating-linear-gradient(to right,transparent 0,transparent calc(10% - 1px),#e6edf2 calc(10% - 1px),#e6edf2 10%)}.peptide-track{position:relative;height:25px}.peptide{position:absolute;top:3px;height:18px;border:0;border-radius:7px;cursor:pointer;box-shadow:inset 0 0 0 1px rgba(13,35,64,.12)}.peptide.protection{background:var(--blue)}.peptide.exposure{background:var(--red)}.peptide.below{background:#bac7d1}.peptide.is-selected{outline:3px solid var(--gold);outline-offset:2px;z-index:2}.peptide-label{position:absolute;right:100%;top:3px;width:66px;padding-right:8px;color:var(--muted);font-size:.63rem;text-align:right}.detail-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(420px,.9fr);gap:18px;min-width:0}.curve-panel svg{display:block;width:100%;height:auto;margin-top:12px}.plot-grid path{fill:none;stroke:#d8e3ea;stroke-width:1}.plot-grid path:first-child{stroke:#7c91a6;stroke-width:1.4}.curve{fill:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round}.curve-a{stroke:var(--blue)}.curve-b{stroke:var(--red)}.point-a{fill:#fff;stroke:var(--blue);stroke-width:3}.point-b{fill:#fff;stroke:var(--red);stroke-width:3}.axis-label,.plot-key{fill:var(--muted);font-size:12px;font-weight:700}.plot-key{font-size:10px}.key-a{fill:var(--blue)}.key-b{fill:var(--red)}.interpretation{margin:0;padding:12px;border-left:3px solid var(--teal);background:var(--soft);color:var(--muted);font-size:.76rem;line-height:1.5}.table-wrap{max-height:none;margin-top:16px;overflow-x:auto;overflow-y:visible}table{width:100%;min-width:520px;border-collapse:collapse;font-size:.78rem}th,td{padding:9px 7px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}th{position:sticky;top:0;background:#fff;color:var(--muted);font-size:.7rem;text-transform:uppercase}tbody tr{cursor:pointer}tbody tr:hover,tbody tr.is-selected{background:var(--soft)}.call{font-weight:800}.call.protection{color:var(--blue)}.call.exposure{color:var(--red)}.call.below{color:var(--muted)}.app-footer{display:flex;align-items:center;gap:16px;padding:18px 4px;color:var(--muted);font-size:.8rem;line-height:1.55}.app-footer p{margin:0 auto 0 0}.app-footer a{white-space:nowrap;color:var(--teal-dark);font-weight:750;text-decoration:none}@media(max-width:1400px){main{grid-template-columns:minmax(0,1fr)}.controls{grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch}.controls section{height:100%}.button-row{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:1150px){.detail-grid{grid-template-columns:minmax(0,1fr)}}@media(max-width:1000px){.app-header{grid-template-columns:1fr}.dataset-state{max-width:460px}}@media(max-width:900px){.controls{grid-template-columns:repeat(2,minmax(0,1fr))}.controls .boundary{grid-column:1/-1}}@media(max-width:800px){.controls,.metrics,.detail-grid{grid-template-columns:minmax(0,1fr)}.controls .boundary{grid-column:auto}.button-row{grid-template-columns:minmax(0,1fr)}.app-footer{align-items:flex-start;flex-direction:column}.peptide-label{display:none}.coverage-map{padding-left:0}}@media(max-width:560px){main{padding:18px 12px 40px}.app-header{padding:28px 18px}.panel{padding:16px}.panel>header{align-items:flex-start;flex-direction:column}.header-copy h1{font-size:clamp(2.35rem,12vw,3.5rem)}.metrics article{padding:16px}.app-footer a{white-space:normal}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
.skip-link{position:fixed;left:16px;top:12px;z-index:20;transform:translateY(-180%);padding:9px 12px;border-radius:8px;background:#0d2340;color:#fff;font-weight:750;text-decoration:none}.skip-link:focus{transform:translateY(0)}


/* v138 refinement: keep every published peptide identifier visible */
.sequence-panel{--sequence-label-gutter:74px}
.sequence-panel .domain-map{margin-left:var(--sequence-label-gutter)}
.sequence-panel .coverage-map{padding-left:var(--sequence-label-gutter)}
.sequence-panel .peptide-label{
  display:block;
  right:100%;
  width:var(--sequence-label-gutter);
  padding-right:10px;
  white-space:nowrap;
  text-align:right;
}
.sequence-panel a:focus-visible,
.sequence-panel button:focus-visible,
.sequence-panel input:focus-visible,
.sequence-panel select:focus-visible{
  outline:3px solid #69a5ff;
  outline-offset:3px;
}
@media(max-width:800px){
  .sequence-panel{--sequence-label-gutter:52px}
  .sequence-panel .coverage-map{padding-left:var(--sequence-label-gutter)}
  .sequence-panel .peptide-label{display:block;font-size:.64rem;padding-right:7px}
}
