/* Existing homepage is the visual foundation. Accent is reserved for interaction. */
.fde-gallery{--fde-blue:#527394;padding:60px 0 36px;overflow:hidden;background:#fff}
.fde-heading-row{display:flex;justify-content:space-between;align-items:flex-end;gap:40px;margin-bottom:26px}
.fde-kicker{font-size:12px;line-height:1.5;color:#73777d;margin-bottom:16px}
.fde-heading-row h2{font-size:40px;line-height:1.25;font-weight:600;letter-spacing:-1.7px}
.fde-all{display:flex;align-items:center;gap:11px;flex:none;font-size:13px;line-height:1.5;padding:10px 0;border-bottom:1px solid #b4b7ba;margin-bottom:3px}
.fde-all svg{width:16px;height:16px;stroke:currentColor;stroke-width:1.4;margin-left:7px}
.fde-all:hover{color:var(--fde-blue);border-color:var(--fde-blue)}
.fde-gallery .wrap,.fde-gallery-window{width:min(1184px,calc(100% - 96px));margin-inline:auto}
.fde-gallery-window{position:relative;overflow:hidden}
.fde-gallery-window:after{content:"";position:absolute;inset:0 0 0 auto;width:32px;background:linear-gradient(90deg,#fff0,#fff);pointer-events:none}
.fde-gallery[data-overflow="false"] .fde-gallery-window:after{display:none}
.fde-gallery[data-overflow="false"] .fde-scroll{overflow-x:hidden;cursor:default}
.fde-browse-row{display:flex;align-items:center;gap:24px;margin-bottom:20px;border-bottom:1px solid #e8ebee}
.fde-filters{display:flex;align-items:center;gap:20px;min-width:0;overflow-x:auto;scrollbar-width:none;overscroll-behavior-x:contain;flex:1}
.fde-filters::-webkit-scrollbar{display:none}
.fde-filter{flex:none;padding:13px 0 12px;border-bottom:2px solid transparent;font-size:12px;line-height:20px;color:#77808b;white-space:nowrap;cursor:pointer}
.fde-filter:hover{color:#252a30}
.fde-filter[aria-pressed="true"]{border-color:#242a30;color:#242a30;font-weight:600}
.fde-filter:focus-visible{outline:2px solid #527394;outline-offset:-2px;border-radius:2px}
.fde-dialog>.fde-filters{margin:22px 0 24px;border-bottom:1px solid #e8ebee}
.fde-scroll{width:100%;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;overscroll-behavior-x:contain;touch-action:pan-x pan-y;cursor:grab}
.fde-scroll::-webkit-scrollbar{display:none}
.fde-scroll:focus-visible{outline-offset:-3px;outline:2px solid var(--fde-blue)}
.fde-scroll.is-dragging{cursor:grabbing;user-select:none}
.fde-track{display:flex;align-items:stretch;width:max-content;padding-block:6px 20px}
.fde-group{display:flex;gap:20px;padding-right:20px;flex:none}
.fde-card{width:376px;flex:none}
.fde-person{display:flex;flex-direction:column;align-items:stretch;width:100%;height:100%;min-height:304px;padding:0;overflow:hidden;text-align:left;cursor:pointer;background:#fff;border:1px solid #e2e3e4;border-radius:8px;transition:transform 180ms ease-out,border-color 180ms ease-out}
.fde-card-project{display:block;flex:1;padding:22px 24px 24px}
.fde-person:focus-visible{outline:2px solid var(--fde-blue);outline-offset:3px}
.fde-photo{position:relative;display:block;aspect-ratio:4/5;background:#f1f2f3;border:1px solid #eceeef;border-radius:6px;overflow:hidden;transition:background-color 160ms ease-out,border-color 160ms ease-out}
.fde-photo>img{display:block;width:100%;height:100%;object-fit:contain;object-position:center bottom;filter:none;mix-blend-mode:normal;transform-origin:center bottom;pointer-events:none}
.fde-signature .fde-photo{width:56px;height:64px;flex:none;aspect-ratio:auto;border:1px solid #e5e6e7;border-radius:4px;background:#fff}
.fde-signature .fde-photo>img{padding-top:3px}
/* Real portrait series: 4:5 chest-up crops, centered faces, eyes near 34% height.
   Keep anatomical proportions and each hairstyle; align optically, never stretch faces.
   Independent translate keeps optical alignment in cards and dialogs. */
.fde-photo>img[src$="cai-jieru-real-v1.png"]{translate:0 4%}
.fde-photo>img[src$="yan-jiayi-real-v1.png"]{translate:0 2%}
.fde-photo>img[src$="shi-ye-real-v1.png"]{translate:0 4%}
.fde-photo>img[src$="simon-hou-real-v1.png"]{translate:0 1.5%}
.fde-photo>img[src$="liu-chunsheng-real-v1.png"]{translate:-5% 11%;scale:1.1}
.fde-photo>img[src$="shang-qifeng-real-v1.png"]{translate:0 4%}
.fde-photo>img[src$="zhang-xinzhuo-real-v1.png"]{translate:0 2%}
.fde-photo>img[src$="sun-bin-real-v1.png"]{translate:0 3.5%}
.fde-photo>img[src$="shen-kai-real-v1.png"]{translate:0 4%}
.fde-photo>img[src$="mao-weijun-real-v1.png"]{translate:0 4.5%}
.fde-photo>img[src$="pan-junjie-real-v1.png"]{translate:0 2%}
.fde-photo>img[src$="xie-yao-real-v1.png"]{translate:0 4.5%}
.fde-photo>img[src$="wang-zhilan-real-v1.png"]{translate:0 3%}
.fde-photo>img[src$="ma-nuo-real-v1.png"]{translate:0 2%}
.fde-card-context{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:11px;line-height:18px;color:#737c87}
.fde-context-separator{display:inline-block;margin:0 10px;color:#c3c9d0}
.fde-card-context>svg{width:16px;height:16px;stroke:#8a949f;stroke-width:1.3;flex:none;transition:stroke 140ms ease-out,transform 140ms ease-out}
.fde-card-title{display:block;margin-top:13px;font-size:21px;font-weight:600;line-height:1.4;letter-spacing:-.4px;color:#22272d;text-wrap:pretty}
.fde-card-description{display:block;margin-top:15px;font-size:13px;line-height:1.8;color:#62676e;text-wrap:pretty}
.fde-signature{display:flex;align-items:center;gap:13px;margin-top:auto;padding-top:18px;border-top:1px solid #e9ecef}
.fde-person>.fde-signature{gap:14px;min-height:97px;padding:16px 24px;background:#f5f5f5;border-top:1px solid #ebebeb}
.fde-card-info{display:block;min-width:0}
.fde-name{display:block;font-size:15px;font-weight:600;line-height:22px;letter-spacing:-.15px;color:#25292d}
.fde-organization,.fde-role{display:block;font-size:11px;line-height:17px;color:#7a838d;overflow-wrap:anywhere}
.fde-organization{margin-top:3px;color:#5f6873}
.fde-person:hover,.fde-person:focus-visible{transform:translateY(-2px);border-color:#b6b9bd}
.fde-person:hover .fde-card-context>svg,.fde-person:focus-visible .fde-card-context>svg{stroke:var(--fde-blue);transform:translate(1px,-1px)}
.fde-scroll.is-dragging .fde-person{cursor:grabbing;transform:none}
.fde-controls{display:flex;align-items:center;gap:8px;flex:none}.fde-controls[hidden]{display:none}
.fde-controls button{height:36px;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:0 8px;font-size:12px;color:#555d65;border-radius:4px}
.fde-controls button:hover{background:#f2f4f6;color:#345c82}
.fde-controls svg{width:19px;height:19px;stroke:currentColor;stroke-width:1.4;fill:none;stroke-linecap:round;stroke-linejoin:round}
.fde-controls .fde-step{width:36px;border:1px solid #e3e6e9}
.fde-dialog{width:min(1000px,calc(100% - 48px));padding:42px;max-height:86dvh;border:1px solid #e1e4e7;border-radius:12px;overscroll-behavior:contain}
.fde-dialog::backdrop{background:#17233155;backdrop-filter:blur(4px)}
.fde-dialog-close{position:absolute;right:17px;top:14px;width:36px;height:36px;font-size:27px;line-height:1;color:#70767c;border-radius:50%}
.fde-dialog-close:hover{background:#f0f2f4;color:#191919}
.fde-dialog h2{font-size:29px;font-weight:600;letter-spacing:-.7px;line-height:1.4;margin:0}
.fde-directory-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.fde-directory-grid .fde-card{width:auto}
.fde-profile-dialog{width:min(640px,calc(100% - 32px));padding:40px}
.fde-profile-content{display:block}
.fde-profile-content .fde-kicker{margin-bottom:14px}
.fde-profile-content h2{max-width:500px;font-size:28px;line-height:1.5}
.fde-profile-description{font-size:15px;line-height:1.9;color:#626b76;margin-top:18px}
.fde-profile-content .fde-signature{margin-top:28px;padding-top:22px}
.fde-profile-content .fde-name{font-size:17px}
.fde-profile-tech{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}
.fde-profile-tech span{font-size:11px;background:#f2f4f6;padding:5px 8px;border-radius:3px;color:#536578}
@media(max-width:1050px){.fde-gallery{padding-top:52px}.fde-gallery .wrap,.fde-gallery-window{width:calc(100% - 64px)}.fde-heading-row{gap:24px}.fde-heading-row h2{font-size:33px}}
@media(max-width:700px){.fde-gallery{padding:40px 0 24px}.fde-gallery .wrap,.fde-gallery-window{width:calc(100% - 32px)}.fde-heading-row{display:block;margin-bottom:27px}.fde-kicker{font-size:11px;margin-bottom:12px}.fde-heading-row h2{font-size:28px;letter-spacing:-1px}.fde-all{font-size:12px;margin-top:20px;padding:6px 0}.fde-all svg{width:14px}.fde-card{width:min(300px,calc(100vw - 56px))}.fde-group{gap:14px;padding-right:14px}.fde-person{min-height:304px}.fde-card-project{padding:20px}.fde-card-title{font-size:19px;margin-top:12px}.fde-card-description{font-size:12px;line-height:1.85;margin-top:13px}.fde-signature .fde-photo{width:52px;height:60px}.fde-signature{gap:11px;padding-top:16px}.fde-person>.fde-signature{gap:12px;min-height:93px;padding:16px 20px}.fde-controls{gap:7px}.fde-controls button{height:34px}.fde-controls .fde-step{width:32px}.fde-dialog{padding:34px 16px;width:calc(100% - 24px);max-height:90dvh}.fde-dialog h2{font-size:24px}.fde-directory-grid{grid-template-columns:1fr;gap:16px}.fde-directory-grid .fde-person{min-height:0}.fde-profile-dialog{padding:42px 24px 28px}.fde-profile-description{font-size:13px}.fde-profile-content h2{font-size:23px}}
@media(prefers-reduced-motion:reduce){.fde-person,.fde-person svg{transform:none!important;transition:none!important}.fde-scroll{scroll-behavior:auto}}

/* Keep the existing skip link outside full-page captures until keyboard focus. */
.skip:not(:focus){clip-path:inset(50%);width:1px;height:1px;overflow:hidden}
