@font-face{font-family:'Open Sans';font-style:normal;font-weight:300;font-display:swap;src:url('assets/open-sans-300.ttf') format('truetype')}
@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;font-display:swap;src:url('assets/open-sans-400.ttf') format('truetype')}
@font-face{font-family:'Open Sans';font-style:normal;font-weight:600;font-display:swap;src:url('assets/open-sans-600.ttf') format('truetype')}
:root{--ink:#222;--muted:#666;--line:#e5e7eb;--wine:#1979c3;--wine-hover:#333;--green:#1979c3;--soft:#f7f7f7;--sans:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;--serif:var(--sans)}
body{font-size:14px}
.utility-bar{text-align:center;background:#f8f8f8;padding:11px 20px;font-size:12px;line-height:20px}
.header-inner{max-width:1400px;min-height:108px;padding-top:16px;padding-bottom:16px}
.brand{flex-direction:row;align-items:center;gap:23px;line-height:1.4}
.brand img{width:160px;height:74px;object-fit:contain;flex-shrink:0}
.brand small{padding:0 0 0 23px;border-left:1px solid #dedede;font-size:16px;margin:0;color:#555}
.brand small:before{display:none}
.primary{border-radius:2px;font-size:13px}
.selection-button{color:#333;font-size:13px;font-weight:400}
.staff-bar{background:#edf6fc;border-bottom:1px solid #c4ddec;color:#24485e}
.staff-bar-inner{max-width:1400px;margin:auto;padding:8px 32px;display:flex;align-items:center;justify-content:space-between;gap:8px 24px;flex-wrap:wrap}
.staff-identity{display:flex;align-items:center;gap:10px;min-width:0;flex-wrap:wrap;font-size:13px}
.staff-identity>span{overflow-wrap:anywhere;color:#465a66}
.staff-bar nav{gap:18px;flex-wrap:wrap}
.staff-bar a,.staff-bar button{display:inline-flex;align-items:center;gap:7px;min-height:36px;color:#135f94;font-size:13px;font-weight:600;text-decoration:none;padding:0}
.staff-bar a:hover,.staff-bar button:hover{text-decoration:underline}
.staff-bar a[aria-current="page"]{color:#222;border-bottom:2px solid #1979c3}
.staff-bar svg{width:17px;height:17px}
.staff-bar p{flex-basis:100%;margin:0;color:#a02020;font-size:13px}
@media(max-width:700px){.staff-bar-inner{padding:10px 20px}.staff-bar nav{gap:8px 18px}.staff-identity{gap:6px 8px}}
button:focus-visible,a:focus-visible{outline-color:#1979c3}
input:focus,select:focus{outline-color:#1979c3}
.search input{font-size:14px;border-color:#d1d5dc}
.category-filters{display:flex;align-items:flex-end;gap:18px;margin:20px 0 24px}
.category-filters label{display:flex;flex-direction:column;gap:7px;font-size:12px;color:#555;min-width:0;flex:0 1 320px}
.category-filters select{height:42px;width:100%;max-width:100%;border:1px solid #d1d5dc;border-radius:2px;background:#fff;padding:0 30px 0 12px;color:#222;font:14px var(--sans);text-overflow:ellipsis}
.category-filters select:disabled{background:#f7f7f7;color:#777}
.category-filters .text-button{font-size:12px;min-height:42px;white-space:nowrap}
.pagination{display:flex;justify-content:space-between;align-items:center;gap:16px;border-top:1px solid var(--line);padding-top:20px;margin-top:28px;font-size:13px}
.page-controls{display:flex;align-items:center;gap:10px}
.page-controls input{width:70px;height:38px;border:1px solid #d1d5dc;border-radius:2px;padding:0 8px;font:inherit}
.page-controls button:disabled{opacity:.35;cursor:default}
.item-title{overflow-wrap:anywhere;min-width:0}
@media(max-width:700px){.pagination{flex-direction:column;align-items:center}.category-filters label{max-width:100%}.page-controls{gap:8px}}
@media(max-width:700px){.category-filters{flex-wrap:wrap;gap:12px}.category-filters label{flex:1 1 calc(50% - 6px);max-width:calc(50% - 6px)}.category-filters select{font-size:12px;padding-left:8px}.category-filters .text-button{min-height:30px}}
main{padding-top:24px;min-height:calc(100vh - 222px)}
h1{font-weight:300;font-size:32px;margin-bottom:24px}
h2{font-weight:300}
.results-heading .text-button{font-size:15px}
.results-heading>span{font-size:13px}
.gallery{grid-template-columns:repeat(6,minmax(0,1fr));gap:24px 22px}
.image-open{aspect-ratio:1.12}
.image-caption{min-height:44px;gap:5px}
.item-title{font-size:12px;font-weight:400}
.item-actions{gap:4px}
.item-actions label{width:24px}
.item-actions input{width:16px;height:16px}
.download-button{width:26px}
.download-button svg{width:18px;height:18px}
.gallery.compact{grid-template-columns:repeat(8,minmax(0,1fr));gap:20px 16px}
.gallery.compact .image-caption{height:76px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:0}
.gallery.compact .item-title{min-height:30px;justify-content:center}
.gallery.compact .item-actions{justify-content:center;min-height:34px}
.gallery.list{grid-template-columns:1fr}
.gallery.list .image-caption{height:auto;flex-direction:row;align-items:center}
.gallery.list .item-title{font-size:14px}
.dialog-logo{object-fit:contain;width:130px;height:60px}
.login-status{background:#f0f7fc}
.customer-modes{display:flex;gap:20px;border-bottom:1px solid #ddd;margin-bottom:20px}
.customer-modes button{font-size:13px;padding:0 0 8px;min-height:38px;border-bottom:2px solid transparent}
.customer-modes button[aria-selected="true"]{color:#135f94;border-color:#1979c3;font-weight:600}
.customer-modes button{cursor:pointer;transition:color .15s,background-color .15s,border-color .15s;border-radius:3px 3px 0 0;padding-left:8px;padding-right:8px}
.customer-modes button:hover{color:#811b23;background:#f8edf0;border-bottom-color:#811b23}
.customer-modes button:focus-visible{outline:2px solid #1979c3;outline-offset:3px}
.login-dialog form{display:flex;flex-direction:column}
.login-dialog .text-button{font-size:13px;align-self:flex-start;margin-top:10px}
.login-dialog button:disabled{opacity:.5}
.preview-dialog h2{font-weight:400}
.site-footer{display:block;background:#f4f4f4;color:#333;border:0;padding:0;margin-top:64px;font-size:14px;line-height:1.6}
.footer-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:32px;max-width:1280px;margin:0 auto;padding:48px 32px 64px}
.footer-brand img{display:block;width:160px;height:74px;object-fit:contain}
.site-footer h2{font-size:14px;font-weight:600;line-height:1.6;margin:10px 0 24px}
.footer-service{margin:0 0 20px;line-height:1.8}
.site-footer address{font-style:normal;line-height:1.8}
.site-footer ul{list-style:none;padding:0;margin:0}
.site-footer li{margin:0 0 10px}
.site-footer a,.site-footer button{color:#333;text-decoration:none;font:inherit}
.site-footer button{display:inline;min-height:0;height:auto;padding:0;border:0;background:none;cursor:pointer;text-align:left}
.site-footer a:hover,.site-footer button:hover{text-decoration:underline;color:#006bb4}
.footer-copyright{text-align:center;background:#e8e8e8;font-size:13px;line-height:1.6;padding:20px 16px}
@media(max-width:1000px){.footer-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:32px 48px}}
@media(max-width:540px){.footer-grid{grid-template-columns:1fr;gap:28px;padding:36px 24px 40px}.site-footer h2{margin:0 0 16px}.site-footer{margin-top:40px}.footer-copyright{font-size:12px}}
@media(max-width:1100px){
  .gallery{grid-template-columns:repeat(4,minmax(0,1fr))}
  .gallery.compact{grid-template-columns:repeat(6,minmax(0,1fr))}
}
@media(max-width:700px){
  .utility-bar{font-size:10px;padding:7px 15px;line-height:16px}
  .header-inner{min-height:98px;padding:12px 20px;gap:10px}
  .brand{flex-direction:column;align-items:flex-start;gap:0;line-height:1.3}
  .brand img{width:116px;height:54px}
  .brand small{font-size:11px;padding:0;border:0}
  nav{gap:3px}
  .primary{font-size:11px;padding:0 11px}
  h1{font-size:28px;margin-bottom:20px}
  .gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
  .gallery.compact{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px 12px}
  .gallery.compact .item-title{font-size:11px}
  .image-open{aspect-ratio:1.12}
  .results-heading .text-button{font-size:14px}
  .gallery.list{grid-template-columns:1fr}
  .login-dialog .primary{font-size:13px}
}

.library-banner{position:relative;width:100%;height:300px;overflow:hidden;background:#f5f1ea;border-bottom:1px solid #e5e0da}
.library-banner>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center}
.library-banner:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(255,253,249,.98),rgba(255,253,249,.92) 24%,rgba(255,253,249,.45) 43%,transparent 65%);pointer-events:none}
.library-banner-inner{position:relative;z-index:1;max-width:1400px;height:100%;margin:auto;padding:30px 32px;display:flex;align-items:center}
.library-banner-copy{max-width:490px;color:#3b2725}
.library-banner-eyebrow{margin:0 0 12px;font-size:12px;font-weight:600;letter-spacing:2px;color:#811a1e}
.library-banner h2{margin:0 0 14px;font-size:34px;font-weight:600;line-height:1.15;letter-spacing:-.6px}
.library-banner-copy>p:last-child{margin:0;font-size:15px;line-height:1.8;color:#4a4240}
@media(max-width:700px){.library-banner-inner{padding:24px 20px}.library-banner h2{font-size:29px}.library-banner-copy{max-width:340px}.library-banner-copy>p:last-child{font-size:14px}.library-banner:after{background:linear-gradient(90deg,rgba(255,253,249,.96),rgba(255,253,249,.88) 55%,rgba(255,253,249,.25))}.library-banner>img{object-position:65% center}}

.library-banner{position:relative;width:100%;height:300px;overflow:hidden;background:#f8f5f0;border-bottom:1px solid #e5e0da}
.library-banner-products{position:absolute;top:-50px;bottom:-50px;left:37%;right:-70px;display:grid;grid-template-columns:repeat(6,minmax(120px,1fr));grid-template-rows:repeat(2,1fr);gap:16px;transform:rotate(-7deg);padding:15px}
.banner-product{display:flex;align-items:center;justify-content:center;min-width:0;overflow:hidden;padding:14px;background:#fff;border:1px solid #ebe5dc;border-radius:5px;box-shadow:0 6px 18px #34281c12}
.banner-product img{display:block;width:100%;height:100%;min-height:0;object-fit:contain}
.library-banner:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#f8f5f0 0%,#f8f5f0 27%,rgba(248,245,240,.92) 36%,transparent 56%);pointer-events:none}
.library-banner-inner{position:relative;z-index:1;max-width:1400px;height:100%;margin:auto;padding:30px 32px;display:flex;align-items:center}
.library-banner-copy{max-width:490px;color:#3b2725}
.library-banner-eyebrow{margin:0 0 12px;font-size:12px;font-weight:600;letter-spacing:2px;color:#811a1e}
.library-banner h2{margin:0 0 14px;font-size:34px;font-weight:600;line-height:1.15;letter-spacing:-.6px}
.library-banner-copy>p:last-child{margin:0;font-size:15px;line-height:1.8;color:#4a4240}
@media(max-width:700px){.library-banner-inner{padding:24px 20px}.library-banner h2{font-size:29px}.library-banner-copy{max-width:340px}.library-banner-copy>p:last-child{font-size:14px}.library-banner-products{left:22%;right:-470px;opacity:.38}.library-banner:after{background:linear-gradient(90deg,#f8f5f0,rgba(248,245,240,.92) 60%,rgba(248,245,240,.3))}}

/* Larger, unchanged product photos with a seamless diagonal drift. */
.library-banner-products{position:absolute;top:-54px;bottom:auto;left:37%;right:auto;display:block;width:max-content;height:408px;gap:0;transform:rotate(-7deg);transform-origin:0 50%;padding:0}
.banner-track{display:flex;width:max-content;height:100%;animation:hirten-banner-drift 65s linear infinite;will-change:transform}
.banner-product-group{display:grid;flex:none;grid-template-columns:repeat(6,clamp(176px,12vw,250px));grid-template-rows:repeat(2,196px);gap:16px;padding-right:16px}
.banner-product{padding:3px;position:relative}
.banner-product img{transform:scale(1.28);transform-origin:center;object-fit:contain}
.banner-motion-toggle{position:absolute;z-index:2;right:20px;bottom:12px;display:flex;align-items:center;gap:7px;padding:7px 10px;border:1px solid #d8d0c6;border-radius:4px;background:#fffefaed;color:#51433d;font-size:12px;line-height:1.3;cursor:pointer}
.banner-motion-toggle input{margin:0;accent-color:#811a1e;width:14px;height:14px}
.banner-motion-toggle:focus-within{outline:2px solid #811a1e;outline-offset:3px}
.library-banner:has(.banner-motion-toggle input:checked) .banner-track,.library-banner:hover .banner-track{animation-play-state:paused}
@keyframes hirten-banner-drift{to{transform:translateX(-33.333333%)}}
@media(max-width:700px){.library-banner-products{left:22%;right:auto;opacity:.38}.banner-motion-toggle{right:12px;bottom:10px;font-size:11px}.banner-track{animation-duration:80s}}
@media(prefers-reduced-motion:reduce){.banner-track{animation:none;will-change:auto}.banner-motion-toggle{display:none}}

/* Recent image-server photographs, 48 distinct products. */
.banner-product-group{grid-template-columns:repeat(24,clamp(176px,12vw,250px))}
.banner-track{animation-duration:260s}
@media(max-width:700px){.banner-track{animation-duration:320s}}

/* Primary photos only; interleaved types across columns and rows. */
.banner-product-group{grid-template-columns:repeat(24,clamp(176px,12vw,250px));grid-auto-flow:column}
.banner-track{animation-duration:260s}
@media(max-width:700px){.banner-track{animation-duration:320s}}

/* Visually audited primary photographs; no repeated type in neighboring cards. */
.banner-product-group{grid-template-columns:repeat(21,clamp(176px,12vw,250px));grid-auto-flow:column}
.banner-track{animation-duration:227.5s}
@media(max-width:700px){.banner-track{animation-duration:280s}}

/* Phone: readable copy above a clear single row containing every product. */
@media(max-width:700px){
 .library-banner-inner{padding:20px 20px 0;align-items:flex-start}
 .library-banner-copy{max-width:100%}
 .library-banner h2{font-size:clamp(23px,7vw,29px);margin-bottom:8px}
 .library-banner-copy>p:last-child{font-size:14px;line-height:1.6}
 .library-banner-products{top:190px;left:-25px;right:auto;height:144px;opacity:1}
 .banner-track{height:144px}
 .banner-product-group{grid-template-columns:repeat(42,148px);grid-template-rows:144px;grid-auto-flow:row}
 .library-banner:after{background:linear-gradient(180deg,#f8f5f0 0%,#f8f5f0 48%,rgba(248,245,240,.86) 53%,transparent 64%)}
 .banner-motion-toggle{min-height:36px;bottom:8px;right:10px;padding:8px 10px}
}
@media(min-width:701px) and (max-width:1024px){
 .library-banner-products{left:48%}
 .library-banner:after{background:linear-gradient(90deg,#f8f5f0 0%,#f8f5f0 34%,rgba(248,245,240,.95) 51%,rgba(248,245,240,.65) 61%,transparent 79%)}
}

/* Touch must resume after Pause is unchecked; hover pause is mouse-only. */
.library-banner:hover .banner-track{animation-play-state:running}
.library-banner:has(.banner-motion-toggle input:checked) .banner-track{animation-play-state:paused}
@media(hover:hover) and (pointer:fine){.library-banner:hover .banner-track{animation-play-state:paused}}
