:root{font-family:Inter,"Noto Sans SC","Microsoft YaHei",system-ui,sans-serif;color:#18212f;background:#eef2f6}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#eef2f6}#stage{position:fixed;inset:0;overflow:hidden}.card-canvas{position:absolute;left:50%;top:50%;width:1600px;height:900px;transform:translate(-50%,-50%) scale(var(--card-scale,1));transform-origin:center;background:#fff;border:1px solid #dbe1e8;box-shadow:0 18px 48px rgba(26,38,52,.14);overflow:hidden;display:grid;grid-template-rows:150px 1fr 44px}.loading{display:grid;place-items:center;height:100%;color:#697586}.card-head{display:flex;align-items:flex-start;justify-content:space-between;padding:48px 64px 24px;border-bottom:1px solid #e6e9ee}.card-head>div:last-child{text-align:right}.eyebrow{font-size:15px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#526777}.card-title{font-size:48px;line-height:1.05;margin:8px 0 6px}.subtitle{font-size:18px;color:#657180;max-width:1050px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.badge{display:inline-block;font-size:15px;padding:8px 12px;border:1px solid #d8dee7;border-radius:999px;white-space:nowrap}.readiness-badge{display:inline-block;margin-bottom:8px;padding:6px 10px;border-radius:999px;font-size:12px;font-weight:900;letter-spacing:.06em;text-transform:uppercase}.readiness-badge.delivery-ready,.readiness-badge.general-ready{background:#e9f7ef;border:1px solid #b9dfc7;color:#205b39}.readiness-badge.preview{background:#f4f2ff;border:1px solid #d8d1fb;color:#5b4a86}.readiness-note{margin-bottom:4px;padding:6px 9px;border-radius:7px;font-size:12px;line-height:1.3}.readiness-note.delivery-ready{background:#f2faf5;border-left:3px solid #5a9c73}.readiness-note.preview{background:#f8f7fd;border-left:3px solid #8b7fba}.card-body{display:grid;grid-template-columns:35fr 65fr;min-height:0}.pane{padding:30px 42px 22px;min-width:0;overflow:hidden}.pane+.pane{border-left:1px solid #e6e9ee}.pane.right-tight{padding-top:20px;padding-bottom:14px}.section{margin-bottom:18px}.section:last-child{margin-bottom:0}.section h3{font-size:14px;letter-spacing:.06em;text-transform:uppercase;color:#526777;margin:0 0 7px}.section p{font-size:16px;line-height:1.38;margin:3px 0}.section .compact{font-size:15px}.clamp1{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;overflow:hidden}.clamp2{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.clamp3{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{font-size:13px;line-height:1.25;padding:5px 8px;border-radius:6px;background:#f2f5f8;border:1px solid #e2e7ed;max-width:100%}.work-list,.evidence-list,.sota-list{display:grid;gap:7px}.work,.evidence,.sota{padding:7px 10px;border-left:3px solid #9aa8b6;background:#f8fafb;font-size:13px;line-height:1.32;overflow:hidden}.evidence b,.sota b,.work b{display:block;margin-bottom:2px;font-size:13px}.boundary{padding:8px 10px;border:1px solid #e2e7ed;border-radius:7px;background:#fbfcfd;font-size:13px;line-height:1.35}.contact{font-size:13px;line-height:1.35}.contact a{color:#205f76}.card-foot{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 64px;border-top:1px solid #e6e9ee;color:#697586;font-size:12px}.match-score{font-size:48px;font-weight:800;line-height:1;text-align:right}.match-score small{font-size:16px;color:#6a7785;font-weight:600}.error{padding:64px;color:#9b2c2c}.muted{color:#697586}.mini-label{font-size:12px;color:#697586;margin-top:6px}.right-tight .section{margin-bottom:4px}.right-tight .section h3{margin-bottom:3px}.right-tight .chips{gap:3px}.right-tight .section p{font-size:14px;line-height:1.25;margin:2px 0}.right-tight .boundary{font-size:12.5px;padding-top:6px;padding-bottom:6px}.right-tight .work-list,.right-tight .evidence-list,.right-tight .sota-list{gap:5px}.right-tight .work,.right-tight .evidence,.right-tight .sota{padding-top:5px;padding-bottom:5px;font-size:12.5px;line-height:1.24}.portfolio-head{padding:20px 38px 14px;gap:28px;align-items:stretch}.portfolio-head>div:last-child{text-align:left}.portfolio-challenge{min-width:0;flex:1}.portfolio-title{margin:6px 0 4px;font-size:29px;line-height:1.08;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.portfolio-subtitle{font-size:12px;color:#667085;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.portfolio-target{margin:5px 0 4px;font-size:12.5px;line-height:1.22;color:#263443}.portfolio-constraints{display:flex;gap:4px;min-width:0}.portfolio-constraints span{font-size:10px;line-height:1.15;padding:3px 6px;border:1px solid #e1e6ec;border-radius:5px;background:#f7f9fb;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:31%}.portfolio-counters{display:grid;grid-template-columns:repeat(2,108px);grid-auto-rows:51px;gap:6px;align-content:center}.portfolio-counters div{border:1px solid #dfe5eb;border-radius:8px;padding:6px 8px;background:#fbfcfd;display:flex;flex-direction:column;justify-content:center}.portfolio-counters b{font-size:20px;line-height:1}.portfolio-counters span{font-size:9px;color:#667085;margin-top:4px;text-transform:uppercase;letter-spacing:.04em}.portfolio-body{min-height:0;overflow:hidden;padding:12px 18px 10px;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;grid-template-areas:"regional-ready global-sota" "regional-preview global-reference";gap:9px 11px;background:#f8fafc}.portfolio-lane{min-width:0;min-height:0;overflow:hidden;border:1px solid #dfe5eb;border-radius:9px;background:#fff;display:grid;grid-template-rows:28px 1fr}.portfolio-lane.regional_delivery_ready{grid-area:regional-ready}.portfolio-lane.regional_evidence_preview{grid-area:regional-preview}.portfolio-lane.global_sota{grid-area:global-sota}.portfolio-lane.global_reference{grid-area:global-reference}.portfolio-lane>header{display:flex;align-items:center;justify-content:space-between;padding:0 9px;border-bottom:1px solid #e7ebf0;background:#f5f7fa}.portfolio-lane>header strong{font-size:11px;letter-spacing:.03em}.portfolio-lane>header span{font-size:10px;color:#687386}.portfolio-lane-body{min-height:0;overflow:hidden;padding:4px;display:flex;flex-direction:column;gap:4px}.portfolio-atom{min-width:0;color:inherit;text-decoration:none;border:1px solid #e5e9ef;border-radius:6px;padding:4px 6px;background:#fff;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"top top" "meta scores" "role scores" "why why" "evidence evidence";column-gap:8px;line-height:1.12}.portfolio-atom:hover{border-color:#aebdcb;background:#fbfcfe}.portfolio-atom-top{grid-area:top;display:flex;align-items:center;justify-content:space-between;gap:6px;min-width:0}.portfolio-atom-top strong{font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.portfolio-readiness{flex:none;font-size:8.5px;font-weight:900;letter-spacing:.04em;padding:2px 4px;border-radius:4px}.portfolio-readiness.delivery-ready{background:#e9f7ef;color:#205b39}.portfolio-readiness.preview{background:#f1effb;color:#5b4a86}.portfolio-meta{grid-area:meta;font-size:9px;color:#7a8491;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.portfolio-role{grid-area:role;font-size:9.5px;font-weight:750;color:#334155;margin-top:1px}.portfolio-why{grid-area:why;font-size:10px;line-height:1.16;color:#1f2937;margin-top:2px}.portfolio-evidence{grid-area:evidence;font-size:8.8px;color:#687386;border-left:2px solid #b8c2cc;padding-left:4px;margin-top:2px}.portfolio-scores{grid-area:scores;align-self:end;justify-self:end;font-size:8px;color:#7a8491;white-space:nowrap}.portfolio-empty{font-size:10px;color:#89929e;padding:10px}.portfolio-foot{padding:0 38px;font-size:10px}.portfolio-lane.dense-lane .portfolio-lane-body{gap:3px;padding:3px}.portfolio-lane.dense-lane .portfolio-atom{padding:3px 5px;grid-template-areas:"top top" "meta scores" "role scores" "why why"}.portfolio-lane.dense-lane .portfolio-why{-webkit-line-clamp:1}.portfolio-lane.dense-lane .portfolio-evidence{display:none}.portfolio-lane.dense-lane .portfolio-scores{font-size:7.5px}

.resource-head{padding:21px 64px 18px;align-items:center}.resource-head-identity{display:flex;align-items:center;gap:20px;min-width:0;flex:1}.resource-head-copy{min-width:0}.portrait-frame{position:relative;flex:none;display:grid;place-items:center;overflow:hidden;background:#eef2f6;border:1px solid #d9e0e8;color:#596574;font-weight:850;letter-spacing:.03em}.portrait-frame.hero{width:104px;height:104px;border-radius:18px;box-shadow:0 4px 12px rgba(31,41,55,.08)}.portrait-frame.portfolio{width:42px;height:42px;border-radius:10px;align-self:start}.portrait-frame.primary{border-color:#b9d5c5;background:#eef8f2}.portrait-frame.secondary{border-color:#d6d0e9;background:#f5f3fb}.portrait-frame img{display:block;width:100%;height:100%;object-fit:cover;object-position:center}.portrait-initials{display:none;width:100%;height:100%;place-items:center;font-size:18px;background:linear-gradient(135deg,#f4f6f8,#e8edf2)}.portrait-frame.portfolio .portrait-initials{font-size:12px}.portrait-frame.failed img{display:none}.portrait-frame.failed .portrait-initials{display:grid}.portfolio-atom{display:block}.portfolio-atom.has-portrait{display:grid;grid-template-columns:42px minmax(0,1fr);gap:6px;align-items:start}.portfolio-atom-content{min-width:0;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"top top" "meta scores" "role scores" "why why" "evidence evidence";column-gap:8px}.portfolio-lane.dense-lane .portfolio-atom.has-portrait{grid-template-columns:34px minmax(0,1fr);gap:5px}.portfolio-lane.dense-lane .portrait-frame.portfolio{width:34px;height:34px;border-radius:8px}.portfolio-lane.dense-lane .portfolio-atom-content{grid-template-areas:"top top" "meta scores" "role scores" "why why"}

/* Resource Card visual grammar v10: stronger identity, evidence hierarchy, and dense portfolio fit. */
.card-canvas{--accent:#356b7b;border-color:#d7e0e8;box-shadow:0 24px 72px rgba(23,38,54,.16)}
.card-canvas::before{content:"";position:absolute;left:0;right:0;top:0;height:6px;background:var(--accent);z-index:5}
.card-general{--accent:#2f7a73}.card-challenge{--accent:#315f7d}.card-portfolio{--accent:#5268a3}
.card-general .resource-head{background:linear-gradient(90deg,#fbfefd 0%,#fff 62%,#f2f8f7 100%)}
.card-challenge .resource-head{background:linear-gradient(90deg,#fbfdff 0%,#fff 62%,#f1f6fa 100%)}
.resource-head{padding:15px 58px 14px}.resource-head-identity{gap:22px}.portrait-frame.hero{width:112px;height:112px;border-radius:22px;box-shadow:0 8px 24px rgba(31,41,55,.10)}.portrait-frame img{object-position:50% 24%}
.card-title{font-size:47px;letter-spacing:-.025em}.eyebrow{font-size:13.5px;color:var(--accent);letter-spacing:.1em}.subtitle{color:#5f6f7e}
.card-general .card-body{grid-template-columns:40fr 60fr}.card-general .pane:first-child,.card-challenge .pane:first-child{background:#fbfcfd}.card-challenge .pane.right-tight{background:linear-gradient(180deg,#fbfdff 0,#fff 45%)}
.match-score{font-size:36px;color:#29485b}.match-score small{font-size:12px}.card-challenge .badge{font-size:12px;padding:6px 10px;color:#526777}.readiness-badge{font-size:12.5px;padding:7px 11px}
.section h3{font-size:13px;letter-spacing:.04em;color:#496272}.card-general .section h3,.card-challenge .pane:first-child .section h3{display:flex;align-items:center;gap:10px}.card-general .section h3::after,.card-challenge .pane:first-child .section h3::after{content:"";height:1px;flex:1;background:#e7edf1}
.work,.evidence,.sota{border-radius:0 7px 7px 0}.card-general .work,.card-challenge .pane:first-child .work{border-left-color:#6f96a5;background:#f5f9fa}.card-challenge .right-tight .section h3{color:#315f7d}.card-challenge .right-tight .evidence{background:#f4f8fb;border-left-color:#5f86a0}.card-challenge .right-tight .sota{background:#f7f7fb;border-left-color:#7c84a8}.contact a{font-weight:700;color:#27667b}.card-foot span:first-child{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:#526777}
.card-portfolio .portfolio-head{background:linear-gradient(100deg,#fbfcff 0%,#fff 62%,#f2f4fb 100%)}.portfolio-title{font-size:31px;letter-spacing:-.02em}.portfolio-counters div{border-color:#d9e0ea;box-shadow:0 2px 7px rgba(31,41,55,.045)}.portfolio-counters div:nth-child(1){background:#f6f8fb}.portfolio-counters div:nth-child(2){background:#eff8f2;border-color:#cfe2d5}.portfolio-counters div:nth-child(3){background:#f7f4fb;border-color:#e2daee}.portfolio-counters div:nth-child(4){background:#f1f6fb;border-color:#d4e1ed}
.portfolio-body{background:#f3f6f9}.portfolio-lane{border-color:#dbe2e9;border-radius:10px;box-shadow:0 4px 12px rgba(31,41,55,.045);grid-template-rows:30px 1fr}.portfolio-lane>header{padding:0 10px}.portfolio-lane.regional_delivery_ready{border-top:3px solid #5a9c73}.portfolio-lane.regional_delivery_ready>header{background:#eff8f2;color:#285f3d}.portfolio-lane.regional_evidence_preview{border-top:3px solid #8b7fba}.portfolio-lane.regional_evidence_preview>header{background:#f6f3fb;color:#5b4a86}.portfolio-lane.global_sota{border-top:3px solid #5f86a0}.portfolio-lane.global_sota>header{background:#eef5fa;color:#315f7d}.portfolio-lane.global_reference{border-top:3px solid #94a0ad}.portfolio-lane.global_reference>header{background:#f4f6f8;color:#596574}
.portfolio-atom{border-color:#e1e7ed;border-radius:8px;padding:5px 7px}.portfolio-atom:hover{border-color:#9fb2c2;box-shadow:0 3px 9px rgba(31,41,55,.07)}.portfolio-atom-top strong{font-size:12.2px}.portfolio-meta{font-size:9.2px}.portfolio-role{font-size:9.8px;color:#324b5b}.portfolio-why{font-size:10.3px;line-height:1.17}.portrait-frame.portfolio{width:44px;height:44px;border-radius:50%}.portfolio-atom.has-portrait{grid-template-columns:44px minmax(0,1fr);gap:7px}
.portfolio-lane.dense-lane .portfolio-lane-body{display:grid;grid-auto-rows:minmax(0,1fr);gap:3px;padding:3px}.portfolio-lane.dense-lane .portfolio-atom{height:auto;min-height:0;padding:3px 5px;overflow:hidden}.portfolio-lane.dense-lane .portfolio-atom.has-portrait{grid-template-columns:30px minmax(0,1fr);gap:5px}.portfolio-lane.dense-lane .portrait-frame.portfolio{width:30px;height:30px;border-radius:50%}.portfolio-lane.dense-lane .portfolio-atom-content{grid-template-columns:minmax(0,1fr);grid-template-areas:"top" "role" "why";row-gap:0}.portfolio-lane.dense-lane .portfolio-meta,.portfolio-lane.dense-lane .portfolio-scores{display:none}.portfolio-lane.dense-lane .portfolio-role{font-size:8.9px;line-height:1.05;margin-top:0}.portfolio-lane.dense-lane .portfolio-why{font-size:9.5px;line-height:1.05;margin-top:0}.portfolio-lane.dense-lane .portfolio-atom-top strong{font-size:11px}.portfolio-lane.dense-lane .portfolio-readiness{font-size:7.8px}

/* Resource Card visual grammar v11: source identity + action-first sharing. */
.evidence-source a{display:flex;align-items:baseline;justify-content:space-between;gap:12px;color:#315f70;text-decoration:none;min-width:0}.evidence-source a:hover{text-decoration:underline}.evidence-source b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.evidence-source span{flex:none;font-size:10.5px;color:#7a8794;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.resource-kind-glyph{position:relative;flex:none;display:grid;place-items:center;overflow:hidden;border:1px solid #d9e0e8;color:#526777;background:linear-gradient(145deg,#f8fafc,#e9eef3);font-weight:850;letter-spacing:.08em}.resource-kind-glyph.hero{width:112px;height:112px;border-radius:22px;box-shadow:0 8px 24px rgba(31,41,55,.08)}.resource-kind-glyph.portfolio{width:44px;height:44px;border-radius:12px;align-self:start}.resource-kind-glyph.hero b{font-size:20px}.resource-kind-glyph.portfolio b{font-size:8.5px}.resource-kind-glyph.kind-team{background:linear-gradient(145deg,#f3f6fb,#e6ebf4);color:#5268a3;border-color:#d4dbea}.resource-kind-glyph.kind-lab{background:linear-gradient(145deg,#f1f8f6,#e3efeb);color:#2f7a73;border-color:#cfe0da}.resource-kind-glyph.kind-institution{background:linear-gradient(145deg,#f8f6f1,#eee9dd);color:#786848;border-color:#e3dccb}
.portfolio-atom.has-visual{display:grid;grid-template-columns:44px minmax(0,1fr);gap:7px;align-items:start}.portfolio-lane.dense-lane .portfolio-atom.has-visual{grid-template-columns:30px minmax(0,1fr);gap:5px}.portfolio-lane.dense-lane .resource-kind-glyph.portfolio{width:30px;height:30px;border-radius:8px}.portfolio-lane.dense-lane .resource-kind-glyph.portfolio b{font-size:7px}
.action-callout{display:grid;grid-template-columns:82px minmax(0,1fr);gap:9px;align-items:start;margin:2px 0 5px;padding:7px 9px;border:1px solid #d7e5eb;border-left:4px solid #315f7d;border-radius:8px;background:linear-gradient(90deg,#eef6f9,#f8fbfc);font-size:12.5px;line-height:1.22;color:#29485b}.action-callout b{font-size:10.5px;letter-spacing:.07em;color:#315f7d}.action-callout span{font-weight:650}.card-challenge:has(.readiness-badge.preview) .action-callout{border-left-color:#8b7fba;background:linear-gradient(90deg,#f5f2fb,#fbfaff);color:#5b4a86}.card-challenge:has(.readiness-badge.preview) .action-callout b{color:#5b4a86}
.portfolio-lane.ultra-dense .portfolio-lane-body{gap:2px;padding:2px}.portfolio-lane.ultra-dense .portfolio-atom{padding:2px 4px}.portfolio-lane.ultra-dense .portfolio-atom.has-visual{grid-template-columns:26px minmax(0,1fr);gap:4px}.portfolio-lane.ultra-dense .portrait-frame.portfolio,.portfolio-lane.ultra-dense .resource-kind-glyph.portfolio{width:26px;height:26px}.portfolio-lane.ultra-dense .portfolio-atom-top strong{font-size:10.5px}.portfolio-lane.ultra-dense .portfolio-role{font-size:8.5px}.portfolio-lane.ultra-dense .portfolio-why{font-size:9px}.portfolio-lane.ultra-dense .portfolio-readiness{font-size:7.2px;padding:1px 3px}
.foot-right{display:flex;align-items:center;gap:14px;min-width:0}.canonical-nav{display:flex;align-items:center;gap:5px}.canonical-nav a{display:inline-flex;align-items:center;padding:4px 7px;border:1px solid #dce4ea;border-radius:6px;background:#f8fafb;color:#315f70;text-decoration:none;font-size:10.5px;font-weight:750;white-space:nowrap}.canonical-nav a:hover{background:#eef5f8;border-color:#bfd0da}.portfolio-foot .canonical-nav a{font-size:9.5px;padding:3px 6px}
.evidence-head{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0}.evidence-head>b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin:0}.evidence-copy{margin-top:2px}.evidence-proof-links{display:flex;align-items:center;gap:4px;flex:none}.evidence-proof-links a{padding:1px 4px;border-radius:4px;background:#e8f1f6;color:#315f7d;text-decoration:none;font-size:9px;font-weight:800;white-space:nowrap}.evidence-proof-links a:hover{background:#dae9f1}.sota-resource{color:#5268a3;text-decoration:none;font-weight:800}.sota-resource:hover{text-decoration:underline}
.evidence-atoms{display:grid;gap:6px}.evidence-atom{display:block;min-width:0;padding:7px 9px;border:1px solid #dde5eb;border-left:3px solid #6f96a5;border-radius:0 8px 8px 0;background:linear-gradient(90deg,#f7fafb,#fff);color:#263443;text-decoration:none}.evidence-atom:hover{border-color:#afc2cd;background:#f3f8fa}.evidence-atom-title{font-size:12.5px;line-height:1.2;font-weight:800;color:#21313e}.evidence-atom-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:4px;font-size:9.5px;line-height:1.1;color:#657585}.evidence-role{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.evidence-open{flex:none;font-size:11px;font-weight:900;color:#356b7b}.evidence-atom.compact{padding:4px 7px;border-left-width:2px;border-radius:0 6px 6px 0}.evidence-atom.compact .evidence-atom-title{font-size:10.5px;line-height:1.12}.evidence-atom.compact .evidence-atom-meta{margin-top:2px;font-size:8.5px}.match-work-atoms{margin-top:5px}.right-tight .match-work-atoms .evidence-atom{background:#f7fafc;border-color:#dce6ed}.right-tight .match-work-atoms .evidence-atom-title{color:#315166}.role-research_output{color:#315f7d}.role-project_evidence{color:#6b5a86}.role-implementation_evidence{color:#496c55}.role-official_capability_evidence{color:#687386}

/* Resource Card visual grammar v17: deterministic signature evidence and portfolio memory cue. */
.evidence-signature-mark{flex:none;padding:1px 4px;border-radius:4px;background:#e7f1ee;color:#2f6a5b;font-size:8px;font-weight:900;letter-spacing:.04em}.portfolio-atom-content{grid-template-areas:"top top" "meta scores" "role scores" "signature signature" "why why" "evidence evidence"}.portfolio-signature{grid-area:signature;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:6px;min-width:0;margin-top:2px;color:#516475}.portfolio-signature-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:9.1px;font-weight:800}.portfolio-signature-meta{flex:none;font-size:8px;color:#7a8491;white-space:nowrap}.portfolio-lane.dense-lane .portfolio-atom-content{grid-template-areas:"top" "role" "signature" "why"}.portfolio-lane.dense-lane .portfolio-signature{margin-top:0;gap:4px}.portfolio-lane.dense-lane .portfolio-signature-title{font-size:8.4px;line-height:1}.portfolio-lane.dense-lane .portfolio-signature-meta{font-size:7.4px}.portfolio-lane.ultra-dense .portfolio-signature{display:none}

/* Dense-fit refinement v18: reclaim box-model space before dropping signature evidence. */
.portfolio-lane.dense-lane .portfolio-atom{padding:1px 4px}.portfolio-lane.dense-lane .portfolio-readiness{padding:1px 3px}.portfolio-lane.dense-lane .portfolio-role,.portfolio-lane.dense-lane .portfolio-why,.portfolio-lane.dense-lane .portfolio-atom-top{line-height:1}

/* Resource Standing v19: evidence-bounded identity metadata; never a Match/lane score. */
.head-status-stack{display:grid;justify-items:end;align-content:center;gap:5px}.head-meta-row,.portfolio-statuses{display:flex;align-items:center;justify-content:flex-end;gap:4px;min-width:0}.match-level-badge{display:inline-flex;align-items:center;justify-content:center;padding:3px 7px;border:1px solid #d8dee6;border-radius:999px;background:#f4f6f8;color:#56616e;font-size:9.5px;font-weight:850;line-height:1;white-space:nowrap}.match-level-badge.world_class{background:#fff7dc;border-color:#ead08b;color:#765714}.match-level-badge.near_world_class{background:#f1effb;border-color:#cfc7ea;color:#5b4f88}.match-level-badge.national_class{background:#eaf5f4;border-color:#bddbd7;color:#236a63}.match-level-badge.regional_class{background:#f2f4f6;border-color:#d8dde3;color:#59636f}.match-level-badge.compact{padding:1px 3px;font-size:7.4px;border-radius:4px}.portfolio-statuses{flex:none}.portfolio-lane.dense-lane .match-level-badge.compact{font-size:6.8px;padding:1px 2px}.portfolio-lane.ultra-dense .match-level-badge.compact{font-size:6.4px}.portfolio-lane.dense-lane .portfolio-statuses{gap:2px}

/* Resource Card visual grammar v20: Cupertino-inspired material, typography and grouped-list hierarchy. */
:root{
  font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","SF Pro Text","Helvetica Neue","PingFang SC","Noto Sans SC",system-ui,sans-serif;
  color:#1d1d1f;
  background:#f5f5f7;
  --cu-text:#1d1d1f;
  --cu-secondary:#6e6e73;
  --cu-tertiary:#86868b;
  --cu-bg:#f5f5f7;
  --cu-surface:rgba(255,255,255,.88);
  --cu-surface-solid:#fff;
  --cu-fill:rgba(120,120,128,.085);
  --cu-fill-hover:rgba(0,113,227,.055);
  --cu-separator:rgba(60,60,67,.16);
  --cu-blue:#0071e3;
  --cu-green:#34c759;
  --cu-orange:#ff9f0a;
  --cu-purple:#8e8cd8;
}
html,body{background:radial-gradient(circle at 50% -20%,#fff 0,#f7f7f9 34%,#ededf1 100%);color:var(--cu-text)}
.card-canvas{
  color:var(--cu-text);
  background:rgba(255,255,255,.96);
  border:1px solid rgba(0,0,0,.055);
  border-radius:34px;
  box-shadow:0 30px 90px rgba(0,0,0,.14),0 3px 12px rgba(0,0,0,.045),inset 0 1px 0 rgba(255,255,255,.9);
  isolation:isolate;
}
.card-canvas::before{display:none}
.card-head,.card-general .resource-head,.card-challenge .resource-head,.card-portfolio .portfolio-head{
  background:linear-gradient(180deg,rgba(255,255,255,.97),rgba(249,249,251,.88));
  border-bottom:1px solid var(--cu-separator);
  backdrop-filter:blur(28px) saturate(160%);
  -webkit-backdrop-filter:blur(28px) saturate(160%);
}
.eyebrow{font-size:12.5px;font-weight:600;letter-spacing:.015em;text-transform:none;color:var(--cu-secondary)}
.card-title{font-size:47px;font-weight:600;letter-spacing:-.045em;color:var(--cu-text)}
.portfolio-title{font-size:31px;font-weight:600;letter-spacing:-.035em;color:var(--cu-text)}
.subtitle,.portfolio-subtitle{color:var(--cu-secondary);font-weight:400}
.portfolio-target{color:#3a3a3c}
.card-body{background:var(--cu-surface-solid)}
.card-general .pane:first-child,.card-challenge .pane:first-child,.card-challenge .pane.right-tight{background:transparent}
.pane+.pane{border-left:1px solid var(--cu-separator)}
.section{margin-bottom:16px}
.section h3,.card-general .section h3,.card-challenge .pane:first-child .section h3,.card-challenge .right-tight .section h3{
  color:var(--cu-secondary);
  font-size:13px;
  font-weight:600;
  letter-spacing:.01em;
  text-transform:none;
}
.card-general .section h3::after,.card-challenge .pane:first-child .section h3::after{display:none}
.section+.section{padding-top:13px;border-top:1px solid var(--cu-separator)}
.section p{color:#2c2c2e}
.chip{
  border:0;
  border-radius:10px;
  background:var(--cu-fill);
  color:#3a3a3c;
  font-weight:500;
}
.badge,.readiness-badge,.match-level-badge{
  border:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
.badge{padding:0;font-size:11.5px;font-weight:500;color:var(--cu-secondary)}
.readiness-badge,.match-level-badge{display:inline-flex;align-items:center;padding:0;border-radius:0;line-height:1.1}
.readiness-badge{font-size:11.5px;font-weight:650;letter-spacing:.01em;text-transform:none;margin-bottom:2px}
.match-level-badge{font-size:10.5px;font-weight:600;color:var(--cu-secondary)}
.readiness-badge::before,.match-level-badge::before,.portfolio-readiness::before{
  content:"";
  display:inline-block;
  flex:none;
  width:6px;
  height:6px;
  margin-right:6px;
  border-radius:50%;
  background:var(--cu-tertiary);
  box-shadow:0 0 0 .5px rgba(0,0,0,.08);
}
.readiness-badge.delivery-ready,.readiness-badge.general-ready{color:#248a3d}.readiness-badge.delivery-ready::before,.readiness-badge.general-ready::before{background:var(--cu-green)}
.readiness-badge.preview{color:#8a5a00}.readiness-badge.preview::before{background:var(--cu-orange)}
.match-level-badge.world_class{color:#8a6500}.match-level-badge.world_class::before{background:#d9a600}
.match-level-badge.near_world_class{color:#6657a6}.match-level-badge.near_world_class::before{background:var(--cu-purple)}
.match-level-badge.national_class{color:#477986}.match-level-badge.national_class::before{background:#5ac8d8}
.match-level-badge.regional_class{color:var(--cu-secondary)}.match-level-badge.regional_class::before{background:#9a9aa0}
.match-level-badge.compact{padding:0;font-size:7.6px;border-radius:0}.match-level-badge.compact::before{width:4px;height:4px;margin-right:3px}
.head-status-stack{gap:6px}.head-meta-row{gap:9px}
.match-score{font-size:34px;font-weight:600;letter-spacing:-.035em;color:var(--cu-text)}
.match-score small{font-size:12px;color:var(--cu-secondary);font-weight:500}
.portrait-frame,.portrait-frame.primary,.portrait-frame.secondary,.resource-kind-glyph{
  border:0;
  background:#f2f2f7;
  color:var(--cu-secondary);
}
.portrait-frame.hero,.resource-kind-glyph.hero{border-radius:28px;box-shadow:0 12px 32px rgba(0,0,0,.11),0 1px 2px rgba(0,0,0,.05)}
.portrait-frame.portfolio,.resource-kind-glyph.portfolio{box-shadow:0 2px 8px rgba(0,0,0,.07)}
.resource-kind-glyph.kind-team,.resource-kind-glyph.kind-lab,.resource-kind-glyph.kind-institution{border:0;color:#5e5e63;background:linear-gradient(145deg,#f7f7f9,#e9e9ee)}
.portrait-initials{background:linear-gradient(145deg,#f7f7f9,#e7e7ec);color:#6e6e73}
.work,.evidence,.sota,.boundary,.readiness-note,.evidence-atom,.right-tight .match-work-atoms .evidence-atom{
  border:0;
  border-radius:14px;
  background:var(--cu-fill);
  color:#2c2c2e;
}
.work,.evidence,.sota{padding:8px 11px}
.boundary{padding:9px 11px;color:var(--cu-secondary)}
.readiness-note{padding:7px 10px;color:#3a3a3c}.readiness-note.delivery-ready,.readiness-note.preview{border:0;background:var(--cu-fill)}
.evidence-atom{padding:8px 11px}.evidence-atom:hover{border:0;background:var(--cu-fill-hover)}
.evidence-atom.compact{border:0;border-radius:11px;padding:5px 8px}
.evidence-atom-title{font-weight:600;color:#2c2c2e}.evidence-atom-meta{color:var(--cu-secondary)}
.evidence-signature-mark{padding:0;background:transparent;color:var(--cu-blue);font-weight:650;letter-spacing:.01em}
.evidence-open,.contact a,.sota-resource,.canonical-nav a,.evidence-proof-links a{color:var(--cu-blue)}
.action-callout{
  border:0;
  border-radius:16px;
  background:rgba(0,113,227,.065);
  color:#1f4f7a;
  box-shadow:inset 0 0 0 1px rgba(0,113,227,.04);
}
.action-callout b{color:var(--cu-blue);font-weight:650;letter-spacing:.02em}
.card-challenge:has(.readiness-badge.preview) .action-callout{border:0;background:rgba(142,142,147,.085);color:#58506f}.card-challenge:has(.readiness-badge.preview) .action-callout b{color:#7062a7}
.evidence-proof-links a{padding:0;background:transparent;font-weight:600}.evidence-proof-links a:hover{background:transparent;text-decoration:underline}
.canonical-nav a,.portfolio-foot .canonical-nav a{padding:0;border:0;border-radius:0;background:transparent;font-weight:600}.canonical-nav a:hover{background:transparent;border:0;text-decoration:underline}
.card-foot{border-top:1px solid var(--cu-separator);background:rgba(249,249,251,.84);color:var(--cu-tertiary);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}
.card-foot span:first-child{color:var(--cu-secondary);font-weight:500}

/* Portfolio becomes four grouped lists rather than nested card-on-card boxes. */
.portfolio-head{padding:20px 40px 14px}
.portfolio-constraints span{border:0;border-radius:8px;background:var(--cu-fill);color:#515154;font-weight:500}
.portfolio-counters{gap:0;padding:6px;border-radius:18px;background:rgba(120,120,128,.065);box-shadow:inset 0 0 0 .5px rgba(60,60,67,.08)}
.portfolio-counters div,.portfolio-counters div:nth-child(1),.portfolio-counters div:nth-child(2),.portfolio-counters div:nth-child(3),.portfolio-counters div:nth-child(4){
  border:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
  padding:6px 10px;
}
.portfolio-counters div:nth-child(even){border-left:1px solid var(--cu-separator)}
.portfolio-counters div:nth-child(n+3){border-top:1px solid var(--cu-separator)}
.portfolio-counters b{font-size:21px;font-weight:600;letter-spacing:-.03em}.portfolio-counters span{color:var(--cu-secondary);text-transform:none;letter-spacing:0;font-weight:500}
.portfolio-body{background:#f5f5f7;padding:12px 18px 10px;gap:10px 12px}
.portfolio-lane,.portfolio-lane.regional_delivery_ready,.portfolio-lane.regional_evidence_preview,.portfolio-lane.global_sota,.portfolio-lane.global_reference{
  border:0;
  border-radius:18px;
  background:rgba(255,255,255,.86);
  box-shadow:0 1px 2px rgba(0,0,0,.025),0 10px 28px rgba(0,0,0,.045),inset 0 0 0 .5px rgba(60,60,67,.08);
  grid-template-rows:32px 1fr;
  backdrop-filter:blur(16px) saturate(140%);
  -webkit-backdrop-filter:blur(16px) saturate(140%);
}
.portfolio-lane>header,.portfolio-lane.regional_delivery_ready>header,.portfolio-lane.regional_evidence_preview>header,.portfolio-lane.global_sota>header,.portfolio-lane.global_reference>header{
  padding:0 11px;
  border-bottom:1px solid var(--cu-separator);
  background:transparent;
  color:#3a3a3c;
}
.portfolio-lane>header strong{display:flex;align-items:center;gap:7px;font-size:11px;font-weight:650;letter-spacing:.005em}
.portfolio-lane>header strong::before{content:"";width:7px;height:7px;border-radius:50%;background:#9a9aa0;flex:none}
.portfolio-lane.regional_delivery_ready>header strong::before{background:var(--cu-green)}
.portfolio-lane.regional_evidence_preview>header strong::before{background:var(--cu-orange)}
.portfolio-lane.global_sota>header strong::before{background:#0a84ff}
.portfolio-lane.global_reference>header strong::before{background:#8e8e93}
.portfolio-lane>header span{color:var(--cu-tertiary);font-weight:600}
.portfolio-lane-body{padding:0 7px 6px;gap:0}
.portfolio-atom{
  position:relative;
  border:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
  padding:7px 5px;
  transition:background-color .16s ease;
}
.portfolio-atom:hover{border:0;border-radius:10px;background:var(--cu-fill-hover);box-shadow:none}
.portfolio-atom:not(:last-child)::after{content:"";position:absolute;left:57px;right:5px;bottom:0;height:1px;background:var(--cu-separator);transform:scaleY(.5);transform-origin:bottom}
.portfolio-atom-top strong{font-weight:600;color:var(--cu-text);letter-spacing:-.01em}
.portfolio-meta{color:var(--cu-tertiary)}
.portfolio-role{font-weight:600;color:#3a3a3c}
.portfolio-why{color:#2c2c2e}
.portfolio-evidence{border-left:0;padding-left:0;color:var(--cu-secondary)}
.portfolio-scores{color:#98989d;font-variant-numeric:tabular-nums}
.portfolio-signature{color:#515154}.portfolio-signature-title{font-weight:600}.portfolio-signature-meta{color:var(--cu-tertiary)}
.portfolio-readiness{
  display:inline-flex;
  align-items:center;
  border-radius:0;
  background:transparent!important;
  color:var(--cu-secondary)!important;
  font-weight:600;
  letter-spacing:0;
  padding:0;
}
.portfolio-readiness::before{width:4px;height:4px;margin-right:3px}
.portfolio-readiness.delivery-ready::before{background:var(--cu-green)}.portfolio-readiness.preview::before{background:var(--cu-orange)}
.portfolio-statuses{gap:6px}
.portfolio-lane.dense-lane .portfolio-lane-body{gap:0;padding:0 5px 4px}
.portfolio-lane.dense-lane .portfolio-atom{padding:1px 4px;border-radius:0}
.portfolio-lane.dense-lane .portfolio-atom:not(:last-child)::after{left:39px;right:4px}
.portfolio-lane.dense-lane .portfolio-statuses{gap:4px}
.portfolio-lane.dense-lane .match-level-badge.compact{font-size:6.9px;padding:0}.portfolio-lane.dense-lane .match-level-badge.compact::before{width:3px;height:3px;margin-right:2px}
.portfolio-lane.ultra-dense .portfolio-atom:not(:last-child)::after{left:34px}

/* v20 refinement: tight Match panes keep hairlines without paying full editorial spacing. */
.right-tight .section+.section{padding-top:4px}
.card-challenge .right-tight .evidence,.card-challenge .right-tight .sota{border:0;border-radius:14px;background:var(--cu-fill)}
.portrait-frame.portfolio,.resource-kind-glyph.portfolio{box-shadow:none}

/* Top3 professor audit v23: explicit audit rank without changing Match authority. */
.professor-top-rank{display:inline-flex;align-items:center;color:var(--cu-blue);font-size:10.5px;font-weight:650;white-space:nowrap}.professor-top-rank::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--cu-blue);margin-right:4px}.top3-footprint-link b{color:var(--cu-blue)}
.portfolio-statuses .professor-top-rank{font-size:7.4px}.portfolio-statuses .professor-top-rank::before{width:3px;height:3px;margin-right:2px}.portfolio-lane.dense-lane .portfolio-statuses .professor-top-rank{font-size:6.6px}

/* Association grammar v21: Professor → capability → evidence → Challenge. */
.capability-evidence-thread .thread-capabilities{margin-bottom:6px}
.thread-connector{display:flex;align-items:center;gap:8px;margin:3px 0 6px;color:#8e8e93;font-size:10px;font-weight:600}
.thread-connector::before{content:"";width:18px;height:1px;background:rgba(60,60,67,.22)}
.thread-connector::after{content:"↓";font-size:10px;color:#8e8e93}
.capability-evidence-thread .evidence-atoms{gap:5px}
.compact-thread .evidence-atom{padding:5px 8px}
.compact-thread .evidence-atom-title{-webkit-line-clamp:1}
.evidence-footprint{margin-top:7px;padding-top:6px;border-top:0;box-shadow:inset 0 .5px 0 rgba(60,60,67,.16)}
.footprint-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:5px;color:#6e6e73;font-size:9.5px}
.footprint-heading span{font-weight:650;color:#515154}.footprint-heading em{font-style:normal}
.footprint-links{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.footprint-link{display:grid;grid-template-columns:auto minmax(0,1fr);gap:5px;min-width:0;color:#0071e3;text-decoration:none;font-size:9.5px;line-height:12px}
.footprint-link b,.footprint-link span{line-height:12px}
.footprint-link b{font-weight:650}.footprint-link span{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#515154}
.footprint-link:hover span,.footprint-link:hover b{text-decoration:underline}
.association-section{margin-bottom:4px!important}
.association-summary{margin:0 0 5px;padding:0 2px;color:#3a3a3c;font-size:12.5px;line-height:1.25}
.association-bridge{display:grid;gap:5px}
.association-row{display:grid;grid-template-columns:minmax(0,1fr) 24px minmax(0,1fr);align-items:stretch;min-width:0;padding:6px 8px;border-radius:16px;background:rgba(120,120,128,.075);box-shadow:inset 0 0 0 .5px rgba(60,60,67,.08)}
.association-side{min-width:0}.association-side-head{display:flex;align-items:center;justify-content:space-between;gap:6px;min-width:0;margin-bottom:3px;color:#6e6e73;font-size:8.8px;line-height:1.1}
.association-side-head span{white-space:nowrap;font-weight:650}.association-side-head b{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#515154;font-size:8.8px;font-weight:650}
.association-copy{margin:0!important;color:#2c2c2e!important;font-size:11.2px!important;line-height:1.2!important}
.association-arrow{display:grid;place-items:center;color:#8e8e93;font-size:17px;font-weight:400}
.association-source .evidence-proof-links{margin-top:4px;justify-content:flex-start}
.association-row .match-work-atoms{margin:0}.association-row .evidence-atom.compact{padding:4px 6px;border-radius:10px;background:rgba(255,255,255,.72);box-shadow:inset 0 0 0 .5px rgba(60,60,67,.1)}
.association-row .evidence-atom.compact .evidence-atom-title{font-size:10.2px}.association-row .evidence-atom.compact .evidence-atom-meta{font-size:8px}
.right-tight .association-section h3{margin-bottom:4px}

/* v25 professor affiliation-country emoji marker */
.country-marker{display:inline-flex;align-items:center;gap:4px;min-width:0;color:var(--cu-secondary);font-size:10.5px;font-weight:600;line-height:1;white-space:nowrap}.country-marker .country-flag{font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif;font-size:14px;line-height:1;font-weight:400}.country-marker .country-more{font-size:8px;color:var(--cu-tertiary)}.country-marker.compact{gap:1px}.country-marker.compact .country-flag{font-size:11px}.portfolio-lane.dense-lane .country-marker.compact .country-flag{font-size:9px}.portfolio-lane.ultra-dense .country-marker.compact .country-flag{font-size:8px}

/* Bilingual card spacing: reclaim optional-section padding, not evidence font size. */
.card-challenge .right-tight{padding-top:14px;padding-bottom:10px}
.card-challenge .right-tight .section+.section{padding-top:2px}
.card-challenge .right-tight .section{margin-bottom:3px}
.card-challenge .right-tight .sota-list{gap:3px}
.card-challenge .right-tight .sota{padding-top:3px;padding-bottom:3px}
.card-foot>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.card-i18n-status{flex:none;font-size:10px;white-space:nowrap}

/* v26 maturity-aware General profile mode */
.readiness-badge.profile-verified{color:#248a3d}.readiness-badge.profile-verified::before{background:var(--cu-green)}
.readiness-badge.profile-partial{color:#8a5a00}.readiness-badge.profile-partial::before{background:var(--cu-orange)}
.card-general .general-profile-only{grid-template-columns:42fr 58fr}
.general-profile-only .pane{padding-top:34px}
.general-profile-only .pane:first-child{padding-right:36px}
.general-profile-only .pane:last-child{padding-left:40px}
.profile-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.profile-metrics>div{min-height:72px;padding:11px 12px;border-radius:16px;background:var(--cu-fill);display:flex;flex-direction:column;justify-content:center}
.profile-metrics b{font-size:24px;line-height:1;font-weight:600;letter-spacing:-.035em;color:var(--cu-text)}
.profile-metrics span{margin-top:6px;font-size:10px;line-height:1.1;color:var(--cu-secondary)}
.profile-focus-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.profile-focus-item{min-height:52px;padding:11px 13px;border-radius:14px;background:var(--cu-fill);display:flex;align-items:center;font-size:13.5px;line-height:1.28;font-weight:550;color:#2c2c2e}
.profile-source-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
.profile-source-link{min-width:0;min-height:52px;padding:9px 11px;border-radius:14px;background:var(--cu-fill);color:inherit;text-decoration:none;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"title open" "source open";column-gap:8px;align-items:center}
.profile-source-link:hover{background:var(--cu-fill-hover)}
.profile-source-link b{grid-area:title;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12.5px;font-weight:600;color:var(--cu-text)}
.profile-source-link span{grid-area:source;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:9.5px;color:var(--cu-secondary)}
.profile-source-link em{grid-area:open;font-size:12px;font-style:normal;color:var(--cu-blue)}
.profile-boundary{font-size:12.5px;line-height:1.4}
.profile-only-panel .section{margin-bottom:14px}


/* Resource Card v27: progressive embedded-host loading states. */
.card-loading-stage .loading-head,.card-identity-stage .loading-head{align-items:center}.loading-status{display:inline-flex;align-items:center;justify-content:center;min-width:108px;padding:8px 12px;border-radius:999px;background:rgba(118,118,128,.10);color:#6e6e73;font-size:12px;font-weight:650}.loading-body .pane{display:flex;flex-direction:column;gap:18px;justify-content:center}.loading-line{height:18px;border-radius:9px;background:linear-gradient(90deg,rgba(118,118,128,.10),rgba(118,118,128,.18),rgba(118,118,128,.10));background-size:240% 100%;animation:resource-card-shimmer 1.5s ease-in-out infinite}.loading-line.wide{width:88%;height:24px}.loading-line.short{width:56%}.loading-portfolio{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:18px;padding:34px}.loading-portfolio .loading-line{width:100%;height:100%;min-height:120px}.card-identity-stage .portrait-frame.hero{box-shadow:none}@keyframes resource-card-shimmer{0%{background-position:100% 0}100%{background-position:-100% 0}}@media(prefers-reduced-motion:reduce){.loading-line{animation:none}}

/* Keep long titles inside the canvas; sparse portfolios give space to occupied lanes. */
.card-canvas{grid-template-columns:minmax(0,1fr)}
.card-head,.card-body,.portfolio-body,.card-foot{min-width:0}
.portfolio-body[data-populated-lanes="1"],.portfolio-body[data-populated-lanes="2"]{
  grid-template-areas:none;
  grid-template-rows:minmax(0,1fr) auto;
}
.portfolio-body[data-populated-lanes="1"]{grid-template-columns:repeat(3,minmax(0,1fr))}
.portfolio-body[data-populated-lanes="2"]{grid-template-columns:repeat(2,minmax(0,1fr))}
.portfolio-body[data-populated-lanes="1"]>.portfolio-lane,
.portfolio-body[data-populated-lanes="2"]>.portfolio-lane{grid-area:auto}
.portfolio-body[data-populated-lanes="1"]>.portfolio-lane:not(.is-empty){grid-column:1/-1;grid-row:1}
.portfolio-body[data-populated-lanes="2"]>.portfolio-lane:not(.is-empty){grid-row:1}
.portfolio-body[data-populated-lanes="1"]>.is-empty,
.portfolio-body[data-populated-lanes="2"]>.is-empty{grid-row:2;grid-template-rows:32px auto}
.portfolio-body[data-populated-lanes="1"]>.portfolio-lane:not(.is-empty) .portfolio-lane-body,
.portfolio-body[data-populated-lanes="2"]>.portfolio-lane:not(.is-empty) .portfolio-lane-body{
  display:grid;
  grid-auto-rows:minmax(0,1fr);
  gap:8px;
  padding:8px;
}
.portfolio-body[data-populated-lanes="1"]>.portfolio-lane:not(.is-empty) .portfolio-lane-body{grid-template-columns:repeat(3,minmax(0,1fr))}
.portfolio-body[data-populated-lanes="2"]>.portfolio-lane:not(.is-empty) .portfolio-lane-body{grid-template-columns:repeat(2,minmax(0,1fr))}
.portfolio-body[data-populated-lanes="1"] .portfolio-atom-top strong{font-size:14px}
.portfolio-body[data-populated-lanes="1"] .portfolio-role{font-size:11.5px}
.portfolio-body[data-populated-lanes="1"] .portfolio-why{font-size:12px;line-height:1.25}
