/* Portfolio components share the site's light and dark theme tokens. */
.portfolio-library{padding-block:0 72px}
#portfolio-library{min-width:0}
.pl-kind-filters{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.pl-kind-filter{display:inline-flex;align-items:center;justify-content:center;min-height:44px;border:1px solid var(--line);border-radius:5px;padding:8px 12px;background:transparent;color:var(--muted);font:500 12px/1.5 Manrope,Arial,sans-serif;white-space:nowrap;cursor:pointer;transition:background-color .2s,color .2s,border-color .2s}
.pl-kind-filter[aria-pressed=true]{border-color:var(--ink);background:var(--ink);color:var(--bg)}
.pl-kind-filter:not(:disabled):hover{border-color:var(--ink)}
.pl-kind-filter:disabled{cursor:wait;opacity:.55}
.pl-filters{display:flex;flex-wrap:wrap;gap:5px;padding:0}
.pl-filter{display:inline-flex;align-items:center;gap:7px;min-height:44px;border:1px solid transparent;border-radius:5px;padding:8px 11px;background:transparent;color:var(--muted);font:500 12px/1.5 Manrope,Arial,sans-serif;white-space:nowrap;cursor:pointer;transition:background-color .2s,color .2s,border-color .2s}
.pl-filter[aria-pressed=true]{background:var(--bg-soft);border-color:var(--line);color:var(--gold)}
.pl-filter:not(:disabled):hover{background:var(--bg-soft);color:var(--ink)}
.pl-filter:disabled{cursor:wait;opacity:.55}
.pl-filter-count{color:var(--muted);font-size:11px;font-weight:400;line-height:1.5}
.pl-filter[aria-pressed=true] .pl-filter-count{color:var(--gold)}
.pl-overview{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:20px;margin:12px 0 20px}
.pl-status{margin:0;color:var(--muted);font:400 12px/1.7 Manrope,Arial,sans-serif;letter-spacing:0}
.pl-retry,.pl-empty-all{display:inline-flex;align-items:center;min-height:44px;border:0;border-bottom:1px solid var(--line);padding:8px 0;background:none;color:var(--gold);font:600 13px/1.5 Manrope,Arial,sans-serif;cursor:pointer}
.pl-retry:hover,.pl-empty-all:hover{border-color:var(--gold)}
.pl-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 22px}
.pl-card{min-width:0;margin:0}
.pl-card-button{display:block;width:100%;min-width:0;border:0;border-radius:8px;padding:0;background:none;color:var(--ink);text-align:left;text-decoration:none;cursor:pointer}
.pl-card-media{position:relative;display:block;overflow:hidden;width:100%;aspect-ratio:4/3;border:1px solid var(--line);border-radius:8px;background:var(--surface);isolation:isolate}
.pl-card-media[data-category=logos]{background:#101922}
.pl-card-image{display:block;width:100%;height:100%;object-fit:contain;transition:opacity .2s ease}
.pl-card-media[data-image-shape=portrait] .pl-card-image{object-fit:contain}
.pl-card-image[hidden]{display:none}
.pl-card-button:hover .pl-card-image{opacity:.94}
.pl-card-caption{position:relative;display:block;padding:12px 28px 0 0}
.pl-card-title{display:block;margin:0;color:var(--ink);font:600 16px/1.45 Manrope,Arial,sans-serif;letter-spacing:-.015em;overflow-wrap:anywhere}
.pl-card-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:5px;color:var(--muted);font:400 11px/1.6 Manrope,Arial,sans-serif;letter-spacing:0;text-transform:none}
.pl-card-year::before{content:'·';padding-right:10px;color:var(--muted)}
.pl-card-kind,.pl-project-kind{width:max-content;max-width:100%;border:1px solid var(--line);border-radius:4px;padding:2px 7px;color:var(--muted);font:500 10px/1.6 Manrope,Arial,sans-serif;letter-spacing:0;text-transform:none}
.pl-project-kind{margin:8px 0 0}
.pl-card-arrow{position:absolute;right:0;top:11px;color:var(--muted);font:400 20px/1.4 Manrope,Arial,sans-serif;transition:color .2s,transform .2s}
.pl-card-button:hover .pl-card-arrow{color:var(--gold);transform:translate(2px,-2px)}
.pl-card-media-unavailable{display:grid;place-items:center;background:var(--bg-soft)}
.pl-card-placeholder{padding:28px;color:var(--muted);font:400 14px/1.7 Manrope,Arial,sans-serif;text-align:center}
.pl-empty{grid-column:1/-1;min-width:0;border:1px solid var(--line);border-radius:8px;padding:32px;background:var(--bg-soft)}
.pl-empty>.eyebrow{margin:0;color:var(--muted);font:500 11px/1.7 Manrope,Arial,sans-serif;letter-spacing:.06em}
.pl-empty h3{max-width:650px;margin:14px 0;color:var(--ink);font:600 24px/1.35 Manrope,Arial,sans-serif;letter-spacing:-.025em}
.pl-empty-copy{max-width:560px;margin:0 0 20px;color:var(--muted);font:400 14px/1.8 Manrope,Arial,sans-serif}
.pl-empty .line-link,.pl-project-contact,.pl-project-website{display:inline-flex;align-items:center;gap:15px;min-height:44px;border-bottom:1px solid var(--line);padding-block:9px;color:var(--gold);font:600 13px/1.6 Manrope,Arial,sans-serif;text-decoration:none}
.pl-empty .line-link:hover,.pl-project-contact:hover,.pl-project-website:hover{border-color:var(--gold)}
.pl-empty .line-link>span,.pl-project-contact>span,.pl-project-website>span{font-size:18px;font-weight:400}
.pl-empty-all{margin-left:24px;vertical-align:middle}
.pl-loading{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px}
.pl-loading span{display:block;aspect-ratio:4/3;border:1px solid var(--line);border-radius:8px;background:var(--bg-soft)}
.pl-noscript{margin-top:24px;color:var(--muted);font:400 14px/1.8 Manrope,Arial,sans-serif}
.pl-noscript a{color:var(--gold);text-decoration:underline;text-underline-offset:4px}
.pl-modal-open{overflow:hidden}
.pl-dialog{width:min(960px,calc(100% - 48px));max-height:90vh;max-height:90dvh;margin:auto;border:1px solid var(--line);border-radius:10px;padding:0;overflow:auto;overscroll-behavior:contain;background:var(--bg);color:var(--ink);box-shadow:var(--shadow)}
.pl-dialog::backdrop{background:color-mix(in srgb,var(--bg) 70%,transparent);backdrop-filter:blur(6px)}
.pl-dialog-toolbar{position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:18px;border-bottom:1px solid var(--line);padding:6px 24px;background:var(--bg)}
.pl-dialog-toolbar>.eyebrow{margin:0;color:var(--muted);font:500 12px/1.6 Manrope,Arial,sans-serif;letter-spacing:0;text-transform:none}
.pl-dialog-close{display:inline-flex;align-items:center;gap:14px;min-height:44px;border:0;border-radius:6px;padding:0 4px;background:none;color:var(--ink);font:500 13px/1.5 Manrope,Arial,sans-serif;cursor:pointer}
.pl-dialog-close>span:last-child{font-size:24px;font-weight:300}
.pl-dialog-close:hover{color:var(--gold)}
.pl-dialog-body{padding:24px}
.pl-project-category{margin:0;color:var(--gold);font:500 12px/1.7 Manrope,Arial,sans-serif;letter-spacing:0;text-transform:none}
.pl-dialog .pl-project-title{max-width:850px;margin:8px 0 14px;color:var(--ink);font:600 22px/1.4 Manrope,Arial,sans-serif;letter-spacing:-.02em;overflow-wrap:anywhere}
.pl-project-meta{display:flex;flex-wrap:wrap;gap:10px 24px;margin:0 0 14px;padding:0}
.pl-project-meta>div{min-width:70px}
.pl-project-meta dt{margin-bottom:4px;color:var(--muted);font:500 11px/1.6 Manrope,Arial,sans-serif;letter-spacing:0}
.pl-project-meta dd{margin:0;color:var(--ink);font:400 13px/1.7 Manrope,Arial,sans-serif;overflow-wrap:anywhere}
.pl-project-description{max-width:760px;margin:22px 0 12px;color:var(--muted);font:400 14px/1.8 Manrope,Arial,sans-serif;white-space:pre-line;overflow-wrap:anywhere}
.pl-project-website{margin:0 0 12px}
.pl-project-gallery{display:grid;gap:20px;margin-top:2px}
.pl-gallery-figure{min-width:0;margin:0}
.pl-gallery-figure img{display:block;width:100%;height:auto;border-radius:8px;background:var(--surface)}
.pl-gallery-figure[data-category=logos] img{background:#101922}
.pl-gallery-figure img[hidden]{display:none}
.pl-gallery-caption{display:flex;align-items:start;justify-content:space-between;gap:22px;padding-top:11px;color:var(--muted);font:400 12px/1.7 Manrope,Arial,sans-serif}
.pl-gallery-caption>span:first-child{max-width:730px;overflow-wrap:anywhere}
.pl-gallery-caption>span:last-child{flex:none;color:var(--muted);font-size:11px;letter-spacing:0;white-space:nowrap}
.pl-image-unavailable{margin:0;border:1px solid var(--line);border-radius:8px;padding:55px 24px;background:var(--bg-soft);color:var(--muted);font:400 14px/1.7 Manrope,Arial,sans-serif;text-align:center}
.pl-project-contact{margin-top:26px}
#portfolio-library[data-preview=true] .pl-kind-filters,#portfolio-library[data-preview=true] .pl-filters,#portfolio-library[data-preview=true] .pl-overview{display:none}
#portfolio-library[data-preview=true] .pl-card-media{aspect-ratio:16/9}
#portfolio-library[data-preview=true] .pl-card-image{object-fit:contain}
#portfolio-library .pl-card-media[data-curated-cover=true]{aspect-ratio:4/3}
#portfolio-library .pl-card-media[data-curated-cover=true] .pl-card-image{object-fit:cover}
#portfolio-library[data-preview=true] .pl-empty>.pl-retry{margin-left:24px}
#portfolio-library [hidden],.pl-dialog [hidden]{display:none!important}
#portfolio-library button:focus-visible,#portfolio-library a:focus-visible,.pl-dialog button:focus-visible,.pl-dialog a:focus-visible{outline:2px solid var(--gold);outline-offset:4px}
@media(min-width:1200px){#portfolio-library:not([data-preview=true]) .pl-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(min-width:1800px){#portfolio-library:not([data-preview=true]) .pl-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:28px 24px}.pl-card-title{font-size:17px}}
@media(max-width:1000px){.pl-grid{gap:26px 18px}.pl-loading{gap:18px}}
@media(max-width:680px){
  .portfolio-library{padding-bottom:42px}
  .pl-kind-filters{flex-wrap:nowrap;gap:5px;margin-bottom:8px;overflow-x:auto;scrollbar-width:thin;scrollbar-color:var(--line) transparent}
  .pl-kind-filter{flex:none;padding-inline:10px;font-size:11px}
  .pl-filters{flex-wrap:nowrap;gap:4px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:thin;scrollbar-color:var(--line) transparent;padding-bottom:4px}
  .pl-filter{flex:none;padding-inline:10px;font-size:12px;gap:6px}
  .pl-filter-count{font-size:10px}
  .pl-overview{margin:8px 0 16px}
  .pl-grid{grid-template-columns:1fr;row-gap:25px}
  .pl-card-title{font-size:15px}
  .pl-card-meta{font-size:11px;gap:7px}
  .pl-status{font-size:11px}
  .pl-loading{grid-template-columns:1fr;gap:20px}
  .pl-empty{padding:22px}
  .pl-empty h3{font-size:20px}
  .pl-empty-copy{font-size:13px}
  .pl-empty-all{display:flex;width:max-content;margin:12px 0 0}
  .pl-dialog{width:calc(100% - 16px);max-height:96vh;max-height:96dvh}
  .pl-dialog-toolbar{padding:4px 15px}
  .pl-dialog-toolbar>.eyebrow{font-size:10px}
  .pl-dialog-body{padding:16px}
  .pl-project-category{font-size:11px}
  .pl-project-kind{margin-top:5px}
  .pl-dialog .pl-project-title{font-size:21px;margin:7px 0 10px}
  .pl-project-meta{gap:6px 18px;margin-bottom:12px}
  .pl-project-meta dt{font-size:10px;margin-bottom:2px}
  .pl-project-meta dd{font-size:12px}
  .pl-project-description{font-size:13px;margin-top:18px}
  .pl-project-gallery{gap:16px}
  .pl-gallery-caption{font-size:10px;gap:12px;padding-top:8px}
  .pl-gallery-caption>span:last-child{font-size:10px}
  .pl-project-contact{font-size:12px;gap:14px;margin-top:18px}
}
@media(max-width:680px){#portfolio-library[data-preview=true] .pl-empty>.pl-retry{display:flex;width:max-content;margin:12px 0 0}}
@media(prefers-reduced-motion:reduce){.pl-filter,.pl-kind-filter,.pl-card-image,.pl-card-arrow{transition:none}.pl-card-button:hover .pl-card-image,.pl-card-button:hover .pl-card-arrow{transform:none}}
