/* Portfolio and cases: shared brand tokens are defined in site.css. */
.portfolio-hub { padding:24px 0 28px; background:var(--paper); color:var(--ink); }
.portfolio-hub-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:28px; margin-bottom:20px; }
.portfolio-hub-heading .eyebrow { margin:0 0 8px; font-size:10px; }
.portfolio-hub-heading h1 { margin:0; max-width:760px; font-family:var(--display); font-size:clamp(38px,3.6vw,50px); line-height:1.12; letter-spacing:-.045em; }
.portfolio-hub-heading h1 em { color:var(--blue); font-style:normal; }
.portfolio-hub-heading > p { margin:0 0 3px; font-size:13px; line-height:1.65; color:var(--muted); }
.portfolio-hub-heading > p span { font-size:11px; }
.portfolio-hub-filter { display:grid; grid-template-columns:minmax(180px,.65fr) minmax(240px,1fr) auto; gap:12px; align-items:end; padding:14px 0; border-block:1px solid var(--line); }
.portfolio-hub-field { display:grid; grid-template-columns:auto minmax(0,1fr); align-items:center; gap:12px; }
.portfolio-hub-filter label { margin:0; color:var(--muted); font-size:12px; white-space:nowrap; }
.portfolio-hub-filter select,.portfolio-hub-filter input { width:100%; min-width:0; min-height:42px; padding:9px 12px; border:1px solid var(--line); border-radius:3px; background:transparent; color:var(--ink); font:400 13px var(--font); }
.portfolio-hub-filter input::placeholder { color:var(--muted); opacity:1; }
.portfolio-hub-filter .button { min-height:42px; padding:9px 20px; font-size:12px; border-radius:3px; }
.portfolio-hub-summary { min-height:36px; display:flex; justify-content:space-between; align-items:center; gap:16px; color:var(--muted); font-size:11px; }
.portfolio-hub-summary p { margin:0; overflow-wrap:anywhere; }
.portfolio-hub-summary a { flex-shrink:0; color:var(--blue); }
.portfolio-hub-summary a:hover { text-decoration:underline; }
.portfolio-hub-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:18px 24px; }
.pc-card { min-width:0; margin:0; display:flex; flex-direction:column; border:1px solid var(--line); border-radius:4px; overflow:hidden; background:#fff; color:var(--ink); }
.pc-image-link { display:block; height:clamp(148px,24svh,215px); flex:0 0 auto; padding:9px 16px; overflow:hidden; background:linear-gradient(110deg,#e2e9e9 8%,#edf4f4 18%,#e2e9e9 33%); background-size:200% 100%; animation:alpha-image-shimmer 1.8s linear infinite; }
.pc-card > .pc-image-link.project-character-cover { padding:0; background:linear-gradient(110deg,#0e2739 8%,#193c54 18%,#0e2739 33%); background-size:200% 100%; animation:alpha-image-shimmer 1.8s linear infinite; }
.pc-image-link > img { display:block; width:100%; height:100%; object-fit:contain; transition:transform .25s ease,opacity .3s ease; }
.pc-image-link > img:not(.is-loaded) { opacity:0; }
.pc-image-link > img.is-loaded { opacity:1; }
.pc-image-link:hover > img { transform:scale(1.025); }
.pc-identity { display:flex; width:100%; height:100%; flex-direction:column; justify-content:center; align-items:center; gap:8px; }
.pc-identity img { width:96px; height:54px; object-fit:contain; }
.pc-identity span { font-size:12px; text-align:center; color:var(--blue); }
.pc-copy { flex:1; display:flex; flex-direction:column; padding:11px 15px 12px; }
.pc-meta { display:flex; align-items:baseline; justify-content:space-between; gap:10px; color:var(--muted); font-size:10px; line-height:1.5; }
.pc-meta span:first-child { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pc-meta span:last-child { flex-shrink:0; }
.pc-card h3 { margin:5px 0; font-family:var(--display); font-size:20px; line-height:1.2; letter-spacing:-.03em; }
.pc-card h3 a { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.pc-card h3 a:hover { color:var(--blue); }
.pc-card h3 svg { width:17px; height:17px; flex:0 0 auto; color:var(--blue); }
.pc-card .pc-copy > p { margin:0; font-size:12px; line-height:1.55; color:var(--muted); max-width:none; display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; line-clamp:2; overflow:hidden; min-height:3.1em; }
.pc-status { display:block; margin-top:auto; padding-top:7px; font-size:10px; line-height:1.45; color:var(--blue); }
.portfolio-pagination { display:flex; justify-content:space-between; align-items:center; gap:18px; margin-top:26px; padding-top:15px; border-top:1px solid var(--line); }
.portfolio-pagination > p { margin:0; font-size:11px; color:var(--muted); }
.portfolio-pagination > p span { color:var(--ink); font-weight:700; }
.portfolio-pagination-controls { display:flex; align-items:center; gap:5px; }
.portfolio-page-number,.portfolio-page-direction { display:inline-flex; align-items:center; justify-content:center; min-width:38px; min-height:38px; gap:8px; font-size:12px; color:var(--ink); border:1px solid transparent; border-radius:3px; }
.portfolio-page-number[aria-current="page"] { background:var(--navy); color:#fff; border-color:var(--navy); }
.portfolio-page-number:hover,a.portfolio-page-direction:hover { border-color:var(--line); color:var(--blue); }
.portfolio-page-direction { padding:0 10px; }
.portfolio-page-direction.is-disabled { color:var(--muted); opacity:.5; }
.portfolio-hub-empty { padding:50px 0 80px; max-width:640px; }
.portfolio-hub-empty h2 { font-size:30px; line-height:1.2; margin-bottom:14px; }
.portfolio-hub-empty > p { color:var(--muted); margin-bottom:20px; }
.project-page { color:var(--ink); background:var(--paper); }
.project-page section[id] { scroll-margin-top:142px; }
.project-page section#projeto-inicio { scroll-margin-top:0; }
.project-page section[data-chapter] {
    display: flex;
    flex-direction: column;
    justify-content: center;
    box-sizing: border-box;
    min-height: calc(100svh - var(--header-height) - 56px - 52px);
    padding: clamp(36px, 5vh, 64px) 0 max(76px, 5vw);
}
.project-page section#projeto-inicio {
    min-height: calc(100svh - var(--header-height) - 52px);
    padding: clamp(26px, 4vh, 52px) 0 max(76px, 5vw);
    color: #f1f7f9;
    background: var(--navy);
}
.project-page section[data-chapter] > .container {
    width: min(1320px, calc(100% - 96px));
    margin-inline: auto;
    margin-block: auto;
}
.case-opening-grid { display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr); gap:clamp(30px,5vw,68px); align-items:center; }
.case-opening-copy { min-width:0; padding:8px 0; }
.case-back { display:inline-flex; align-items:center; gap:10px; color:#b6cbd5; font-size:12px; margin-bottom:30px; }
.case-back:hover { color:var(--cyan); }
.case-opening .eyebrow { color:var(--cyan); margin:0 0 14px; font-size:11px; }
.case-opening h1 { margin:0; font-family:var(--display); font-size:clamp(38px,4.2vw,54px); line-height:1.1; letter-spacing:-.045em; overflow-wrap:anywhere; }
.case-lead { margin:20px 0; max-width:510px; font-size:clamp(16px,1.4vw,19px); line-height:1.65; color:#c9d8df; }
.case-context { display:inline-block; max-width:100%; margin:0; padding:8px 11px; border:1px solid #95b9c33b; border-radius:3px; font-size:11px; line-height:1.5; color:#c9d8df; }
.case-opening-art { margin:0; min-width:0; }
.case-opening-art > a { display:flex; width:100%; min-height:280px; height:clamp(300px,45vh,480px); align-items:center; justify-content:center; padding:14px; background:#edf2f0; border-radius:4px; overflow:hidden; }
.case-opening-art img { display:block; width:100%; height:100%; object-fit:contain; }
.case-opening-art figcaption { margin-top:10px; font-size:11px; line-height:1.5; color:#9fb7c3; }
.case-opening-identity { display:flex; min-height:320px; flex-direction:column; align-items:center; justify-content:center; padding:32px; border:1px solid #95b9c33b; border-radius:4px; background:#ffffff05; text-align:center; }
.case-opening-identity img { width:168px; height:95px; object-fit:contain; padding:14px; background:var(--paper); border-radius:3px; margin-bottom:25px; }
.case-opening-identity span { font-size:11px; color:var(--cyan); margin-bottom:10px; }
.case-opening-identity strong { font:700 27px/1.2 var(--display); }
.case-opening-identity p { margin:12px 0 0; font-size:12px; color:#9fb7c3; }
.case-topic-nav { position:sticky; top:76px; z-index:12; background:var(--paper); border-bottom:1px solid var(--line); }
.case-topic-nav > .container { display:flex; align-items:center; gap:30px; min-height:56px; overflow-x:auto; scrollbar-width:thin; white-space:nowrap; }
.case-topic-nav span { font-size:10px; text-transform:uppercase; letter-spacing:.08em; color:var(--muted); }
.case-topic-nav a { padding-block:18px; font-size:12px; color:var(--ink); }
.case-topic-nav a:hover { color:var(--blue); }
.case-overview-grid { display:grid; grid-template-columns:minmax(190px,.7fr) minmax(0,2fr); gap:clamp(32px,8vw,100px); align-items:center; }
.case-information .eyebrow { font-size:10px; margin:0 0 22px; }
.case-information dl { margin:0; }
.case-information dl > div { padding:14px 0; border-bottom:1px solid var(--line); }
.case-information dt { margin-bottom:5px; font-size:11px; color:var(--muted); }
.case-information dd { margin:0; font-size:13px; line-height:1.65; }
.case-information h3 { margin:26px 0 12px; font-family:var(--font); font-size:12px; }
.case-information ul { padding:0; list-style:none; margin:0; font-size:12px; line-height:1.7; color:var(--muted); }
.case-information li { padding:5px 0; }
.case-narrative { max-width:760px; }
.case-narrative .eyebrow { margin:0 0 12px; font-size:10px; }
.case-narrative h2 { margin:0 0 24px; font:700 clamp(26px,2.6vw,36px)/1.2 var(--display); letter-spacing:-.035em; }
.case-narrative > p { margin:0 0 21px; font-size:16px; line-height:1.85; color:var(--muted); }
.case-narrative > h3 { font-size:24px; line-height:1.3; margin:30px 0 18px; }
.case-narrative > ul { padding-left:20px; font-size:15px; line-height:1.8; color:var(--muted); }
.case-public-links { border-top:1px solid var(--line); margin-top:26px; padding-top:20px; display:grid; gap:12px; }
.case-public-links a { color:var(--blue); font-size:13px; line-height:1.6; }
.case-public-links a:hover { text-decoration:underline; }
.case-materials { background:#e4edee; }
.case-section-heading { display:flex; justify-content:space-between; align-items:flex-end; gap:24px; margin-bottom:26px; }
.case-section-heading .eyebrow { margin:0 0 10px; font-size:10px; }
.case-section-heading h2 { margin:0; font:700 clamp(26px,2.5vw,36px)/1.2 var(--display); letter-spacing:-.035em; }
.case-section-heading > p { margin:0; font-size:12px; line-height:1.6; color:var(--muted); }
.case-section-heading .text-link { font-size:13px; }
.case-gallery-container { display:flex; flex-direction:column; gap:16px; width:100%; }
.case-gallery-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:18px 22px; }
.case-gallery-grid .case-material[hidden] { display:none !important; }
.case-material { min-width:0; margin:0; }
.case-material > a { display:flex; align-items:center; justify-content:center; height:185px; padding:12px; background:#f7faf8; border:1px solid #c7d5d8; border-radius:4px; overflow:hidden; }
.case-material img { display:block; width:100%; height:100%; object-fit:contain; }
.case-material figcaption { font-size:11px; line-height:1.45; color:var(--muted); margin-top:8px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.case-gallery-pagination { margin-top:8px; padding-top:12px; border-top:1px solid #c7d5d8; }
.case-credits { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:0 30px; }
.case-credits article { min-width:0; padding:18px 0; border-top:1px solid var(--line); }
.case-credits h3 { margin:0 0 7px; font-size:17px; line-height:1.3; letter-spacing:-.02em; }
.case-credits p { margin:0; font-size:13px; line-height:1.7; color:var(--muted); }
.case-related { background:#e4edee; }
.case-related-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px; }
.portfolio-hub :focus-visible,.project-page :focus-visible { outline:2px solid var(--blue); outline-offset:4px; }
.case-opening :focus-visible { outline-color:var(--cyan); }
@media (min-width:1101px) and (max-height:820px) {
    .portfolio-hub { padding-block:16px 20px; }
    .portfolio-hub-heading { margin-bottom:12px; }
    .portfolio-hub-heading .eyebrow { margin-bottom:6px; }
    .portfolio-hub-heading h1 { font-size:44px; }
    .portfolio-hub-filter { padding-block:10px; }
    .portfolio-hub-summary { min-height:30px; }
    .portfolio-hub-grid { row-gap:12px; }
    .portfolio-hub .pc-image-link { height:136px; padding-block:6px; }
    .portfolio-hub .pc-copy { padding:7px 14px; }
    .portfolio-hub .pc-meta { line-height:1.3; }
    .portfolio-hub .pc-card h3 { font-size:20px; line-height:1.15; margin-block:2px; }
    .portfolio-hub .pc-copy > p { line-height:1.4; min-height:2.8em; }
    .portfolio-hub .pc-status { padding-top:3px; line-height:1.3; }
    .portfolio-pagination { margin-top:18px; padding-top:10px; }
}
@media (max-width:1100px) {
    .portfolio-hub-heading { align-items:flex-start; }
    .portfolio-hub-heading > p { max-width:250px; }
    .portfolio-hub-grid,.case-related-grid { gap:18px; }
    .portfolio-hub-field { display:flex; flex-direction:column; align-items:stretch; gap:6px; }
    .pc-card h3 { font-size:18px; }
    .case-topic-nav > .container { gap:24px; }
}
@media (max-width:960px) {
    .project-page section[data-chapter],
    .project-page section#projeto-inicio {
        min-height: auto;
        padding-bottom: 76px;
    }
    .project-page section[data-chapter] > .container {
        width: calc(100% - 48px);
        margin-block: 0;
    }
    .portfolio-hub-heading { display:block; margin-bottom:20px; }
    .portfolio-hub-heading > p { max-width:none; margin-top:12px; }
    .portfolio-hub-heading > p br { display:none; }
    .portfolio-hub-heading > p span { display:block; margin-top:3px; }
    .portfolio-hub-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .pc-image-link { height:150px; }
    .case-opening-grid { gap:28px; }
    .case-opening h1 { font-size:40px; }
    .case-back { margin-bottom:24px; }
    .case-opening-art > a { height:320px; min-height:0; }
    .case-overview-grid { grid-template-columns:minmax(170px,.7fr) minmax(0,2fr); gap:36px; }
    .case-gallery-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
    .case-material > a { height:160px; }
    .case-credits { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:680px) {
    .portfolio-hub { padding:25px 0 30px; }
    .portfolio-hub-heading h1 { font-size:38px; }
    .portfolio-hub-heading > p { font-size:13px; line-height:1.65; }
    .portfolio-hub-filter { grid-template-columns:minmax(0,1fr) auto; gap:10px; align-items:end; padding-block:12px; }
    .portfolio-hub-field:first-child { grid-column:1 / -1; }
    .portfolio-hub-search { min-width:0; }
    .portfolio-hub-filter .button { padding-inline:16px; }
    .portfolio-hub-summary { min-height:42px; }
    .portfolio-hub-grid { grid-template-columns:1fr; gap:18px; }
    .pc-image-link { height:165px; }
    .pc-copy { padding:14px 16px; }
    .pc-card h3 { font-size:22px; margin-block:7px; }
    .pc-meta { font-size:11px; }
    .pc-card .pc-copy > p { font-size:13px; }
    .pc-status { font-size:11px; padding-top:9px; }
    .portfolio-pagination { flex-direction:column; align-items:flex-start; gap:10px; }
    .portfolio-pagination-controls { width:100%; justify-content:center; gap:4px; }
    .portfolio-page-label { display:none; }
    .portfolio-page-number,.portfolio-page-direction { min-width:40px; min-height:42px; }
    .portfolio-hub-empty { padding:35px 0 50px; }
    .portfolio-hub-empty h2 { font-size:27px; }
    .case-opening { padding:24px 0 25px; }
    .case-opening-grid { grid-template-columns:1fr; min-height:0; gap:25px; }
    .case-opening-copy { padding:0; }
    .case-back { margin-bottom:24px; font-size:12px; }
    .case-opening .eyebrow { font-size:10px; margin-bottom:12px; }
    .case-opening h1 { font-size:38px; }
    .case-lead { font-size:16px; margin-block:16px; }
    .case-opening-art > a { height:280px; }
    .case-opening-art figcaption { font-size:11px; }
    .case-opening-identity { min-height:250px; }
    .case-opening-identity img { width:132px; height:75px; margin-bottom:20px; }
    .case-opening-identity strong { font-size:24px; }
    .case-topic-nav > .container { gap:20px; min-height:52px; }
    .case-topic-nav span { display:none; }
    .case-topic-nav a { font-size:11px; padding-block:17px; }
    .project-page section[data-chapter] > .container { width: calc(100% - 36px); }
    .project-page section[id] { scroll-margin-top:132px; }
    .project-page section[data-chapter] { padding-block:38px 76px; }
    .case-overview-grid { display:flex; flex-direction:column; gap:28px; }
    .case-information { padding-bottom:25px; border-bottom:1px solid var(--line); }
    .case-information .eyebrow { margin-bottom:10px; }
    .case-information dl { display:grid; grid-template-columns:1fr 1fr; gap:0 18px; }
    .case-information dl > div:last-child { grid-column:1 / -1; }
    .case-information dt { font-size:11px; }
    .case-information dd { font-size:13px; }
    .case-information h3 { margin-top:20px; }
    .case-information ul { display:flex; flex-wrap:wrap; gap:5px 16px; font-size:12px; }
    .case-information li { padding:2px 0; }
    .case-narrative h2 { font-size:28px; margin-bottom:20px; }
    .case-narrative > p { font-size:15px; line-height:1.85; margin-bottom:20px; }
    .case-section-heading { display:block; margin-bottom:20px; }
    .case-section-heading h2 { font-size:28px; }
    .case-section-heading > p,.case-section-heading > .text-link { display:block; margin-top:12px; font-size:12px; }
    .case-gallery-grid { grid-template-columns:1fr; gap:16px; }
    .case-material > a { height:195px; }
    .case-material figcaption { font-size:12px; }
    .case-credits { grid-template-columns:1fr; }
    .case-credits article { padding-block:15px; }
    .case-credits h3 { font-size:18px; }
    .case-credits p { font-size:13px; }
    .case-related-grid { grid-template-columns:1fr; gap:18px; }
}
@media (prefers-reduced-motion:reduce) {
    .pc-image-link > img { transition:none; }
    .pc-image-link:hover > img { transform:none; }
    .case-materials-track { scroll-behavior:auto; }
}
