:root{--blue:#006e91;--navy:#092a43;--teal:#0f7b99;--pale:#eff7fa;--line:#d7e2e7;--body:#334b5d;--shadow:0 18px 45px rgba(4,50,72,.14)}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;color:var(--navy);font-family:"DM Sans",Arial,sans-serif;background:#fff}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}
section{scroll-margin-top:110px}
.site-header{height:96px;display:flex;align-items:center;justify-content:space-between;padding:0 6.4vw;border-bottom:1px solid rgba(9,42,67,.1);position:fixed;top:0;left:0;z-index:1000;width:100%;color:var(--navy);background:rgba(255,255,255,.76);-webkit-backdrop-filter:blur(14px) saturate(135%);backdrop-filter:blur(14px) saturate(135%);box-shadow:0 8px 28px rgba(9,42,67,.05)}
.site-header:after{content:"";position:absolute;top:100%;left:0;right:0;height:22px;background:linear-gradient(rgba(255,255,255,.38),transparent);pointer-events:none}
.brand{width:300px;background:transparent;padding:6px 0;margin-left:0}
.brand img{width:100%}
nav{display:flex;align-items:center;gap:21px;font-size:14px}
nav a{position:relative}
nav a:after,.text-link:after,.book-copy a:after{content:"";position:absolute;left:0;bottom:-6px;width:0;height:1px;background:currentColor;transition:width .3s ease}
nav a:hover:after,.text-link:hover:after,.book-copy a:hover:after{width:100%}
.lang{margin-left:12px;opacity:.85}
.lang i{display:inline-block;height:13px;width:1px;background:currentColor;margin:0 8px;vertical-align:-2px}
.lang a{opacity:.55;transition:opacity .25s ease}
.lang a:hover,.lang a.active{opacity:1}
.lang a.active{font-weight:600}
.menu-toggle{display:none}
.hero{min-height:620px;display:grid;grid-template-columns:40% 60%;background:#fff}
.hero-copy{padding:128px 6.4vw 70px;background:linear-gradient(115deg,#fff 0%,#f7fbfd 66%,#dff2f8 100%);display:flex;flex-direction:column;justify-content:center}
.eyebrow{text-transform:uppercase;letter-spacing:.25em;font-size:12px;font-weight:600;color:var(--blue);margin:0 0 24px}
.eyebrow:after{content:"";display:block;width:30px;height:2px;background:var(--blue);margin-top:14px}
.hero h1,.section h2,.contact h3,.book-copy h3{font-family:"Libre Caslon Display",Georgia,serif;font-weight:400}
.hero h1{font-size:clamp(48px,5.2vw,76px);line-height:.98;margin:0 0 26px;letter-spacing:-.025em}
.hero-copy>p:not(.eyebrow){max-width:530px;color:var(--body);font:18px/1.55 Georgia,serif}
.actions{display:flex;gap:16px;margin-top:24px}
.button{border:1px solid #6d8796;min-width:190px;padding:18px 20px;display:flex;justify-content:space-between;transition:.3s ease}
.button:hover{transform:translateY(-3px);box-shadow:var(--shadow);background:#fff}
.button.primary{background:var(--blue);color:#fff;border-color:var(--blue)}
.hero-image{background:url('assets/hero-office-real.png') center/cover no-repeat;position:relative;overflow:hidden}
.hero-image:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(7,41,61,.02),rgba(7,41,61,.12))}
.hero-sign{display:none}
.section{padding:66px 5.5vw;display:grid;grid-template-columns:260px minmax(0,1fr);gap:48px;border-top:1px solid #e5ecef}
.section-intro h2{font-size:38px;line-height:1.05;margin:0 0 18px}
.section-intro>p:not(.eyebrow){color:var(--body);font-size:15px;line-height:1.55}
.areas{background:#f7f8f8}
.area-carousel{min-width:0;overflow:hidden;position:relative;padding:10px 0 28px}
.area-grid{display:flex;gap:12px;transition:transform .75s cubic-bezier(.22,.8,.25,1);will-change:transform}
.area-card{background:#fff;min-width:0;flex:0 0 calc((100% - 36px)/4);position:relative;padding-bottom:18px;transition:transform .35s ease,box-shadow .35s ease}
.area-card img{width:100%;height:132px;object-fit:cover;filter:saturate(.85)}
.area-card span{display:block;padding:16px 12px 0;font:17px/1.15 Georgia,serif;min-height:58px}
.area-card b,.person b{position:absolute;right:12px;bottom:12px;color:var(--blue);font-weight:400}
.area-card:hover{transform:translateY(-8px);box-shadow:var(--shadow)}
.area-card:hover img{filter:saturate(1)}
.area-motion{position:absolute;right:0;bottom:0;margin:0;text-transform:uppercase;letter-spacing:.16em;font-size:9px;color:#6f8792;display:flex;align-items:center;gap:8px}
.area-motion span{display:block;width:34px;height:1px;background:var(--blue);position:relative;overflow:hidden}
.area-motion span:after{content:"";position:absolute;inset:0;background:#fff;animation:areaPulse 4s linear infinite}
@keyframes areaPulse{from{transform:translateX(-100%)}to{transform:translateX(100%)}}
.team-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.person{position:relative;border:1px solid #e3e9ec;padding-bottom:18px;transition:.35s ease;background:#fff;overflow:hidden}
.person img{width:100%;aspect-ratio:.82;object-fit:cover;object-position:top;transition:transform .55s ease}
.person .portrait-placeholder{display:block;width:100%;aspect-ratio:.82;background:linear-gradient(145deg,#f7fafb,#e9f2f5);border-bottom:1px solid #e3e9ec}
.person strong,.person small{display:block;padding:0 12px}
.person strong{font:16px Georgia,serif;margin-top:13px}
.person small{text-transform:uppercase;color:var(--blue);letter-spacing:.12em;font-size:10px;margin-top:7px}
.person:hover{transform:translateY(-7px);box-shadow:var(--shadow)}
.person:hover img{transform:scale(1.035)}
.text-link,.book-copy a{display:inline-flex;gap:18px;color:var(--blue);font-size:14px;position:relative;margin-top:12px}
.publications{background:linear-gradient(100deg,#f4f7f8,#fff)}
.book-carousel{min-width:0;position:relative}
.carousel-top{height:42px;display:flex;align-items:center;gap:18px;margin-bottom:18px}
.progress{height:2px;background:#d6e1e5;flex:1;overflow:hidden}
.progress span{display:block;height:100%;width:0;background:var(--blue)}
.progress span.running{animation:fill 10s linear forwards}
@keyframes fill{to{width:100%}
}
.counter{font-size:12px;letter-spacing:.13em;color:#557080}
.carousel-buttons{display:flex;gap:8px}
.carousel-buttons button{width:38px;height:38px;border:1px solid #b5c8d1;border-radius:50%;background:#fff;color:var(--blue);font-size:18px;cursor:pointer;transition:.3s}
.carousel-buttons button:hover{background:var(--blue);color:#fff;box-shadow:0 0 0 6px rgba(0,110,145,.08)}
.carousel-window{overflow:hidden}
.book-track{display:flex;transition:transform .7s cubic-bezier(.22,.8,.25,1)}
.book-card{min-width:50%;display:grid;grid-template-columns:42% 58%;gap:28px;padding:10px 28px 18px 5px;align-items:center}
.book-cover{position:relative;display:grid;place-items:center;min-height:300px}
.book-cover:before{content:"";position:absolute;width:70%;height:72%;background:radial-gradient(circle,rgba(29,143,178,.18),transparent 68%);filter:blur(10px);opacity:0;transition:.45s}
.book-cover img{height:285px;width:auto;object-fit:contain;position:relative;z-index:1;box-shadow:12px 16px 25px rgba(9,42,67,.18);transition:transform .45s ease,filter .45s ease}
.book-card:hover .book-cover img{transform:translateY(-8px) rotateY(-4deg) scale(1.025);filter:brightness(1.06)}
.book-card:hover .book-cover:before{opacity:1}
.book-year{text-transform:uppercase;color:var(--blue);font-size:10px;letter-spacing:.15em}
.book-copy h3{font-size:28px;line-height:1.05;margin:8px 0 14px}
.book-copy>p:not(.book-year){font:15px/1.5 Georgia,serif;color:var(--body)}
.carousel-dots{display:flex;justify-content:center;gap:9px;margin-top:14px}
.carousel-dots button{width:28px;height:3px;border:0;padding:0;background:#b9cbd2;cursor:pointer}
.carousel-dots button.active{background:var(--blue)}
.news{background:linear-gradient(115deg,#071f31,#0a344d);color:#fff}
.news .section-intro>p:not(.eyebrow){color:#c8d6dc}
.news .eyebrow{color:#72c1d8}
.news .eyebrow:after{background:#72c1d8}
.news-updated{margin-top:24px;font-size:11px!important;letter-spacing:.06em;opacity:.75}
.news-feed{min-width:0;overflow:hidden;position:relative;padding-bottom:54px}
.news-track{display:flex;gap:18px;transition:transform .75s cubic-bezier(.22,.8,.25,1);min-height:270px}
.news-card{flex:0 0 calc((100% - 18px)/2);display:grid;grid-template-columns:42% 58%;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.12);overflow:hidden;transition:transform .35s,background .35s}
.news-card:hover{transform:translateY(-5px);background:rgba(255,255,255,.12)}
.news-card img{width:100%;height:100%;min-height:270px;object-fit:cover}
.news-copy{padding:23px 24px;display:flex;flex-direction:column}
.news-meta{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:#83c6d9;margin:0 0 12px}
.news-card h3{font:24px/1.12 "Libre Caslon Display",Georgia,serif;margin:0 0 14px}
.news-card .news-summary{font:14px/1.5 Georgia,serif;color:#d5e0e4;margin:0;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.news-source{margin-top:auto;padding-top:18px;font-size:11px;opacity:.72}
.news-controls{position:absolute;right:0;bottom:0;display:flex;align-items:center;gap:15px}
.news-controls button{width:38px;height:38px;border-radius:50%;border:1px solid rgba(255,255,255,.4);background:transparent;color:#fff;font-size:18px;cursor:pointer;transition:.3s}
.news-controls button:hover{background:#fff;color:var(--navy)}
.news-counter{font-size:10px;letter-spacing:.14em;color:#aac3cd}
.news-loading{flex:0 0 calc((100% - 18px)/2);display:grid;grid-template-columns:42% 58%;min-height:270px;background:rgba(255,255,255,.06)}
.news-loading>span{background:rgba(255,255,255,.08)}
.news-loading div{padding:28px 24px}
.news-loading i{display:block;height:10px;background:rgba(255,255,255,.1);margin-bottom:15px;animation:newsGlow 1.4s ease-in-out infinite alternate}
.news-loading i:nth-child(2){width:82%}.news-loading i:nth-child(3){width:58%}
@keyframes newsGlow{to{background:rgba(255,255,255,.22)}}
.contact{grid-template-columns:260px minmax(0,1fr);align-items:start}
.offices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;color:var(--body)}
.office-card{font-style:normal;border:1px solid var(--line);padding:26px 28px;background:#fff;min-height:210px;position:relative;transition:.35s}
.office-card:hover{transform:translateY(-5px);box-shadow:var(--shadow)}
.office-card p{position:relative;padding-left:27px;font-size:14px;line-height:1.5;margin:14px 0}
.office-card p span,.office-email span{position:absolute;left:0;color:var(--blue)}
.office-card .office-name{padding-left:0;color:var(--navy);font:23px/1.15 "Libre Caslon Display",Georgia,serif;margin-top:0}
.office-card a{font-size:12px;color:var(--blue)}
.office-email{grid-column:1/-1;margin:3px 0 0;padding-left:28px;position:relative;font-size:14px}
.lisbon{display:grid;grid-template-columns:2fr 1fr;background:#f3f7f9}
.contact .lisbon{grid-column:2}
.lisbon img{width:100%;height:190px;object-fit:cover}
.lisbon div{padding:28px 22px}
.lisbon h3{font-size:24px;margin:0 0 8px}
.lisbon p{font-size:13px;line-height:1.5}
.lisbon a{font-size:13px;color:var(--blue)}
footer{background:#0f7b99;color:#fff;padding:35px 5.5vw 30px;display:grid;grid-template-columns:230px 1fr 210px;gap:30px;align-items:center}
footer>img{width:190px}
.footer-links{display:flex;justify-content:center;gap:28px;font-size:12px}
.motto{border-left:1px solid rgba(255,255,255,.5);padding-left:25px;font:15px/1.4 Georgia,serif}
footer small{opacity:.75;font-size:10px}
.legal{display:flex;justify-content:flex-end;gap:22px;font-size:10px;grid-column:2/4}
.reveal{opacity:0;transform:translateY(24px);transition:opacity .7s ease,transform .7s ease}
.reveal.visible{opacity:1;transform:none}
.profile-main{padding-top:96px;background:linear-gradient(115deg,#fff,#f4f9fb)}
.profile-hero{display:grid;grid-template-columns:minmax(300px,38%) 1fr;min-height:560px}
.profile-photo{background:#eaf1f4;overflow:hidden}
.profile-photo img{width:100%;height:100%;object-fit:cover;object-position:top}
.profile-intro{padding:80px clamp(34px,7vw,110px);display:flex;flex-direction:column;justify-content:center}
.profile-intro h1{font:clamp(46px,6vw,76px)/.98 "Libre Caslon Display",Georgia,serif;font-weight:400;margin:0 0 22px}
.profile-role{color:var(--blue);text-transform:uppercase;letter-spacing:.18em;font-size:11px;font-weight:600}
.profile-lead{max-width:720px;color:var(--body);font:18px/1.6 Georgia,serif}
.profile-meta{display:flex;flex-wrap:wrap;gap:10px 28px;margin-top:22px;font-size:13px;color:var(--body)}
.profile-meta a{color:var(--blue)}
.profile-content{max-width:1180px;margin:auto;padding:72px 6vw 90px;display:grid;grid-template-columns:1.35fr .65fr;gap:70px}
.profile-block{margin-bottom:42px}
.profile-block h2{font:34px/1.1 "Libre Caslon Display",Georgia,serif;font-weight:400;margin:0 0 18px}
.profile-block p,.profile-block li{color:var(--body);font:15px/1.7 Georgia,serif}
.profile-block ul{padding-left:20px}
.profile-facts{border-left:1px solid var(--line);padding-left:38px}
.profile-facts dl{margin:0}.profile-facts dt{color:var(--blue);font-size:10px;letter-spacing:.15em;text-transform:uppercase;margin-top:24px}.profile-facts dd{margin:7px 0 0;color:var(--body);line-height:1.5}
.profile-source{font-size:11px;color:#6b818e;margin-top:34px}.profile-source a{color:var(--blue)}
@media(max-width:1050px){.area-card{flex-basis:calc((100% - 24px)/3)}
.team-grid{grid-template-columns:repeat(3,1fr)}
.book-card{min-width:100%}
.site-header nav{gap:16px}
.contact{grid-template-columns:220px 1fr}
.contact .lisbon{grid-column:2}
.hero{grid-template-columns:48% 52%}
}
@media(max-width:760px){.site-header{position:fixed;height:82px;color:var(--navy);padding:0 20px}
.brand{width:220px}
.menu-toggle{display:block;border:1px solid var(--blue);background:rgba(255,255,255,.8);color:var(--blue);padding:9px 13px}
.site-header nav{display:none;position:absolute;top:82px;left:0;right:0;background:rgba(255,255,255,.94);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);padding:22px;flex-direction:column;align-items:flex-start;box-shadow:var(--shadow)}
.site-header nav.open{display:flex}
.hero{display:block}
.hero-copy{padding:132px 24px 65px}
.hero-image{height:420px}
.hero h1{font-size:52px}
.actions{flex-direction:column}
.section{display:block;padding:52px 24px}
.section-intro{margin-bottom:32px}
.area-card{flex-basis:calc((100% - 12px)/2)}
.team-grid{grid-template-columns:repeat(2,1fr)}
.book-card{grid-template-columns:1fr;padding:10px 8px 22px}
.book-cover{min-height:260px}
.book-cover img{height:250px}
.news-card,.news-loading{flex-basis:100%;grid-template-columns:1fr}
.news-card img{height:190px;min-height:190px}
.news-copy{min-height:245px}
.offices{grid-template-columns:1fr}
.office-email{grid-column:auto;margin-bottom:28px}
.contact .lisbon{grid-column:auto}
.lisbon{display:block}
.footer-links{flex-wrap:wrap;justify-content:flex-start}
.legal{grid-column:auto;justify-content:flex-start}
footer{grid-template-columns:1fr}
.profile-main{padding-top:82px}.profile-hero{display:block}.profile-photo{height:480px}.profile-intro{padding:52px 24px}.profile-content{display:block;padding:52px 24px}.profile-facts{border-left:0;border-top:1px solid var(--line);padding:28px 0 0}
.motto{border-left:0;padding-left:0}
}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}
.reveal{opacity:1;transform:none}
}
