.protein-explorer{margin:26px 0;padding:clamp(16px,4vw,28px);border:2px solid #23684e;border-radius:18px;background:#f7faf4;color:#18382b}.protein-explorer h3{margin:0 0 12px}.protein-explorer h4{margin:24px 0 12px}.protein-explorer p{max-width:72ch}.protein-explorer button,.protein-explorer select{font:inherit;min-height:44px;padding:10px 14px;border:1px solid #23684e;border-radius:10px;background:#fff;color:#18382b;cursor:pointer}.protein-explorer select{width:100%;box-sizing:border-box}.protein-explorer label{display:block;font-weight:700;margin:12px 0 8px}.protein-explorer button[aria-pressed=true]{background:#23684e;color:white}.protein-explorer :is(button,select,textarea):focus-visible{outline:3px solid #bd640d;outline-offset:3px}.protein-diagram{margin:18px 0;padding:12px;background:white;border:1px solid #bdd4c5;border-radius:12px}.protein-diagram svg{display:block;width:100%;max-width:620px;margin:auto}.protein-diagram figcaption{font-size:.9rem}.protein-parts{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0}.protein-readout{padding:14px;background:#e5f0e8;border-left:4px solid #23684e}.protein-chain-panel{border-top:2px solid #bdd4c5;margin-top:28px;padding-top:20px}.protein-chain-panel h4{margin-top:0}.protein-chain{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.protein-chain span{padding:10px;background:white;border:1px solid #bdd4c5;border-radius:9px}.protein-explorer textarea{box-sizing:border-box;width:100%;min-height:120px;font:inherit;padding:12px;border:1px solid #789889;border-radius:10px}.protein-explorer small{display:block;margin-top:10px}.protein-check{display:grid;gap:8px}.protein-explorer details{margin:16px 0}.protein-explorer summary{cursor:pointer;min-height:44px}.protein-explorer .pe-highlight{stroke:#b66b16;stroke-width:4}.protein-explorer .pe-hidden{display:none}@media(max-width:480px){.protein-explorer{padding:14px}.protein-parts button{flex:1 1 130px}.protein-chain{display:grid}.protein-chain b{transform:rotate(90deg);justify-self:center}}

/* Print-inspired finish: warm paper, offset heading, faint halftone corner. Meaning never depends on color. */
.protein-explorer{background:#fbf7ec radial-gradient(circle at 100% 0,rgba(190,60,110,.14) 1.4px,transparent 1.8px) 100% 0/9px 9px no-repeat;background-image:radial-gradient(circle,rgba(190,60,110,.16) 1.3px,transparent 1.8px);background-size:10px 10px;background-position:right top;background-repeat:no-repeat;position:relative}
.protein-explorer::before{content:"";position:absolute;inset:0;pointer-events:none;border-radius:inherit;background:linear-gradient(225deg,#fbf7ec 0,#fbf7ec 38%,transparent 62%)}
.protein-explorer>*{position:relative}
.protein-explorer h3{text-shadow:2px 2px 0 rgba(190,60,110,.28)}
