.library-hero{padding:75px 0 65px;background:linear-gradient(145deg,#fff,#edf5f1)}.library-hero h1{font-size:clamp(2.7rem,5vw,5.2rem);max-width:950px;margin-top:1rem}.library-hero .lead{max-width:850px}.library-hero .hero-bottom{margin-top:1.7rem}.library-layout{padding:52px 0 95px}.library-context{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);margin-bottom:3.2rem}.library-context article{background:#fff;padding:1.5rem}.library-context h2{font-size:1.15rem;margin:.6rem 0}.library-context p{font-size:.9rem;color:var(--muted)}.library-context a{font-weight:700}.controlbar{display:grid;grid-template-columns:2fr 1fr 1fr auto;align-items:end;gap:1rem;padding:1.4rem;background:#fff;border:1px solid var(--line)}.field{display:flex;flex-direction:column;gap:.4rem}.field label{font-size:.78rem;font-weight:750}.field input,.field select{width:100%;min-height:46px;padding:.65rem .8rem;border:1px solid #9fb5b0;background:#fff;color:var(--ink);font:inherit;border-radius:3px}.field input:focus,.field select:focus{outline:3px solid #a8d8c2;outline-offset:1px}.reset{min-height:46px;padding:0 1rem;border:1px solid var(--line);background:#f5f8f6;color:var(--ink);font:inherit;font-weight:650;cursor:pointer}.reset:hover{background:var(--mint)}.resultline{display:flex;justify-content:space-between;gap:1rem;align-items:center;margin:1.4rem 0;color:var(--muted);font-size:.89rem}.resultline strong{color:var(--ink)}.pattern-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.pattern-card{background:#fff;border:1px solid var(--line);padding:1.5rem;min-height:250px;display:flex;flex-direction:column}.pattern-card:hover{border-color:var(--accent);box-shadow:0 9px 25px rgba(24,48,55,.06)}.pattern-card h3{font-size:1.28rem;margin:.7rem 0}.pattern-card p{font-size:.92rem;color:var(--muted);margin:0}.pattern-card .metadata{display:flex;gap:.45rem;flex-wrap:wrap;margin:1.2rem 0 0}.pill{font-size:.68rem;border:1px solid var(--line);background:#f6f9f7;border-radius:99px;padding:.22rem .5rem}.pattern-card button{border:0;background:none;color:var(--accent);font:inherit;font-weight:750;padding:0;text-align:left;cursor:pointer;margin-top:auto;padding-top:1.2rem}.pattern-card button:hover{text-decoration:underline}.empty{padding:3rem;border:1px dashed var(--line);background:white;text-align:center}.empty[hidden]{display:none}.source-note{border-top:1px solid var(--line);margin-top:3.5rem;padding-top:2rem;color:var(--muted);font-size:.9rem}.source-note h2{font-size:1.5rem;color:var(--ink)}.pattern-dialog{border:1px solid var(--line);padding:0;width:min(780px,calc(100% - 28px));max-height:min(90vh,1000px);box-shadow:0 25px 90px #12252b44;color:var(--ink)}.pattern-dialog::backdrop{background:#132a30ac}.detail{padding:2rem 2.3rem 2.5rem;overflow-y:auto;max-height:90vh}.detail-top{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.detail h2{font-size:clamp(1.9rem,3vw,2.5rem);margin:.7rem 0 1rem}.close{border:1px solid var(--line);background:#fff;color:var(--ink);min-width:42px;min-height:42px;font-size:1.35rem;cursor:pointer}.detail .intro{font-size:1.07rem;color:#425c5d}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem 2rem;margin-top:2rem}.detail-block{border-top:1px solid var(--line);padding-top:.8rem}.detail-block h3{font-size:.8rem;letter-spacing:.07em;text-transform:uppercase;color:var(--accent);margin-bottom:.35rem}.detail-block p{margin:0}.detail-block.action{background:var(--mint);padding:1rem;border:0}.detail-sources{border-top:1px solid var(--line);margin-top:2rem;padding-top:1.2rem;font-size:.88rem}.detail-sources ul{margin:.7rem 0 0;padding-left:1.2rem}.detail-sources a{overflow-wrap:anywhere}.detail-sources li+li{margin-top:.4rem}.detail-sources p{color:var(--muted)}.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:900px){.pattern-grid{grid-template-columns:repeat(2,1fr)}.controlbar{grid-template-columns:1fr 1fr}.controlbar .field:first-child{grid-column:1/-1}.library-context{grid-template-columns:1fr}}@media(max-width:620px){.pattern-grid,.controlbar,.detail-grid{grid-template-columns:1fr}.controlbar .field:first-child{grid-column:auto}.pattern-card{min-height:0}.detail{padding:1.3rem}.library-hero{padding:56px 0}.resultline{align-items:flex-start;flex-direction:column}}
