:root{
  --navy:#12294a; --navy2:#1c3a63; --gold:#b8894b; --gold-l:#d8b485;
  --ink:#1e242c; --muted:#697586; --line:#e4e7ec; --bg:#f6f5f1; --card:#fff;
  --radius:14px; --shadow:0 1px 2px rgba(16,24,40,.06),0 8px 24px rgba(16,24,40,.06);
  --maxw:1120px;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);
  font:16px/1.55 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;}
h1,h2,h3{font-family:Georgia,"Times New Roman",serif;line-height:1.2;margin:0 0 .3em}
a{color:inherit;text-decoration:none}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 20px}
.muted{color:var(--muted)}
.loading{padding:60px 0;text-align:center;color:var(--muted)}

/* header */
.site-head{position:sticky;top:0;z-index:40;background:var(--navy);
  box-shadow:0 1px 0 rgba(255,255,255,.06),0 6px 18px rgba(0,0,0,.15)}
.head-inner{display:flex;align-items:center;gap:20px;height:66px}
.brand{display:flex;align-items:center;gap:12px;color:#fff;flex:0 0 auto}
.brand-mark{display:grid;place-items:center;width:40px;height:40px;border-radius:10px;
  background:linear-gradient(135deg,var(--gold),var(--gold-l));color:#2a1c0c;
  font-family:Georgia,serif;font-weight:700;font-size:18px;letter-spacing:.5px}
.brand-txt{display:flex;flex-direction:column;line-height:1.1}
.brand-txt b{font-family:Georgia,serif;font-size:18px}
.brand-txt small{color:#adc0dc;font-size:11.5px;letter-spacing:.2px}
.search{position:relative;margin-left:auto;flex:1 1 420px;max-width:460px}
.search input{width:100%;height:42px;border:0;border-radius:999px;padding:0 18px;
  font-size:15px;background:#0d1f3a;color:#fff;outline:2px solid transparent}
.search input::placeholder{color:#8ba0c0}
.search input:focus{outline-color:var(--gold)}
.ac{position:absolute;top:48px;left:0;right:0;background:#fff;border-radius:12px;
  box-shadow:var(--shadow);overflow:hidden;max-height:min(60vh,420px);overflow-y:auto}
.ac a{display:flex;justify-content:space-between;gap:10px;padding:10px 14px;border-bottom:1px solid var(--line)}
.ac a:last-child{border-bottom:0}
.ac a:hover,.ac a.on{background:#f3f0ea}
.ac .yr{color:var(--muted);font-size:13px}

/* hero */
.hero{padding:44px 0 24px;text-align:center}
.hero h1{font-size:clamp(28px,4vw,42px);color:var(--navy)}
.hero p{max-width:640px;margin:0 auto;color:var(--muted);font-size:17px}
.hero .stats{display:flex;gap:26px;justify-content:center;flex-wrap:wrap;margin-top:20px}
.hero .stats b{font-family:Georgia,serif;font-size:26px;color:var(--gold);display:block}
.hero .stats span{font-size:13px;color:var(--muted)}

/* section */
.sec{margin:34px 0}
.sec>h2{font-size:20px;color:var(--navy);display:flex;align-items:center;gap:10px}
.sec>h2::after{content:"";flex:1;height:1px;background:var(--line)}

/* A-Z */
.az{display:flex;flex-wrap:wrap;gap:8px}
.az a{display:grid;place-items:center;min-width:44px;height:44px;padding:0 6px;border-radius:10px;
  background:var(--card);box-shadow:var(--shadow);font-family:Georgia,serif;font-weight:700;
  color:var(--navy);font-size:17px;transition:.12s}
.az a:hover{background:var(--navy);color:#fff;transform:translateY(-1px)}

/* year timeline */
.decades{display:grid;gap:18px}
.decade{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px}
.decade h3{font-size:15px;color:var(--muted);letter-spacing:.5px;text-transform:uppercase;margin-bottom:10px}
.years{display:flex;flex-wrap:wrap;gap:8px}
.years a{padding:7px 13px;border-radius:999px;background:#eef1f5;color:var(--navy);font-weight:600;font-size:14px}
.years a:hover{background:var(--gold);color:#2a1c0c}

/* grids */
.grid{display:grid;gap:16px}
.grid.photos{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}
.grid.people{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}

.pcard{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;
  display:flex;flex-direction:column;transition:.14s}
.pcard:hover{transform:translateY(-2px);box-shadow:0 12px 30px rgba(16,24,40,.12)}
.pcard .thumb{aspect-ratio:4/3;background:#dfe3ea center/cover no-repeat;position:relative}
.pcard .cap{padding:10px 12px}
.pcard .cap b{display:block;font-size:14.5px}
.pcard .cap span{color:var(--muted);font-size:13px}
.badge{position:absolute;top:8px;right:8px;background:rgba(18,41,74,.86);color:#fff;
  font-size:12px;padding:3px 8px;border-radius:999px}

/* person cards (list) */
.person{display:block;background:var(--card);border-radius:12px;box-shadow:var(--shadow);
  padding:12px 14px;transition:.12s;border-left:3px solid transparent}
.person:hover{border-left-color:var(--gold);transform:translateY(-1px)}
.person b{font-size:15px;color:var(--navy);display:block;font-family:Georgia,serif}
.person b .fn{font-weight:400;color:var(--muted)}
.person span{color:var(--muted);font-size:13px}

/* face crop box */
.face{position:relative;overflow:hidden;background:#e7e9ee;border-radius:10px 10px 0 0;align-self:center}
.face img{position:absolute;max-width:none}
.face.whole{background-size:cover;background-position:center top}
.face.whole::after{content:"photo de classe";position:absolute;left:0;right:0;bottom:0;
  font-size:10.5px;text-align:center;color:#fff;background:rgba(18,41,74,.72);padding:2px}
.face.noface{width:100%;height:150px;display:grid;place-items:center;border-radius:10px 10px 0 0}
.face.noface::after{content:"?";font-family:Georgia,serif;font-size:32px;color:#b7bdc7}

/* photo detail */
.photo-view h1{color:var(--navy);font-size:clamp(22px,3vw,30px)}
.photo-stage{position:relative;display:inline-block;max-width:100%;background:#0b1a30;
  border-radius:12px;overflow:hidden;box-shadow:var(--shadow)}
.photo-stage img{display:block;max-width:100%;height:auto}
.zone{position:absolute;border:2px solid transparent;border-radius:3px;cursor:pointer;transition:.1s}
.photo-stage.show .zone{border-color:rgba(216,180,133,.55);background:rgba(184,137,75,.12)}
.zone:hover,.zone.on{border-color:var(--gold)!important;background:rgba(184,137,75,.28)!important}
.zone .tip{position:absolute;bottom:calc(100% + 6px);left:50%;transform:translateX(-50%);
  background:var(--navy);color:#fff;font-size:12.5px;white-space:nowrap;padding:4px 9px;border-radius:6px;
  opacity:0;pointer-events:none;transition:.1s;z-index:5}
.zone:hover .tip,.zone.on .tip{opacity:1}
.namelist{columns:220px;column-gap:24px;margin-top:18px}
.namelist a{display:block;padding:4px 0;color:var(--ink);break-inside:avoid}
.namelist a:hover{color:var(--gold)}
.namelist a.on{color:var(--gold);font-weight:600}
.namelist .n{display:inline-block;min-width:26px;color:var(--muted)}

/* toolbar / meta */
.crumbs{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:18px 0 6px;color:var(--muted);font-size:14px}
.crumbs a:hover{color:var(--gold)}
.backlink{display:inline-flex;align-items:center;gap:6px;margin:2px 0 16px;padding:8px 16px;
  background:var(--navy);color:#fff;border:0;border-radius:999px;font-size:14px;font-weight:600;
  cursor:pointer;box-shadow:var(--shadow)}
.backlink:hover{background:var(--navy2)}
.meta-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:6px 0 20px}
.chip{background:#eef1f5;color:var(--navy);border-radius:999px;padding:5px 12px;font-size:13px;font-weight:600}
.btn{display:inline-flex;align-items:center;gap:6px;background:var(--navy);color:#fff;border-radius:999px;
  padding:8px 16px;font-size:14px;font-weight:600;cursor:pointer;border:0}
.btn:hover{background:var(--navy2)}
.btn.ghost{background:#fff;color:var(--navy);box-shadow:var(--shadow)}

.empty{padding:50px 0;text-align:center;color:var(--muted)}

/* footer */
.site-foot{margin-top:50px;background:var(--navy);color:#c7d4e6;padding:28px 0}
.site-foot p{margin:.2em 0;font-size:14px}
.site-foot .muted{color:#8ba0c0}

@media(max-width:640px){
  .head-inner{height:auto;padding:10px 0;flex-wrap:wrap;gap:10px}
  .search{flex-basis:100%;max-width:none;margin-left:0}
  .brand-txt small{display:none}
}
