
:root{--blue:#0b49a0;--blue2:#063774;--red:#dc2c2c;--ink:#13284b;--muted:#5d6b83;--soft:#eef5ff;--line:#d8e4f5;--white:#fff;}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:#edf3fa;color:var(--ink);font-family:Arial,Helvetica,sans-serif}
.shell{max-width:1600px;margin:0 auto;background:white;min-height:100vh;box-shadow:0 8px 30px rgba(16,55,100,.12)}
.topbar{position:sticky;top:0;z-index:20;background:rgba(255,255,255,.98);border-bottom:1px solid var(--line);display:grid;grid-template-columns:320px 1fr 105px;align-items:stretch}
.brand{display:flex;align-items:center;padding:10px 16px}
.brandlogo{display:block;width:100%;max-width:290px;height:auto;border-radius:10px;box-shadow:0 4px 12px rgba(11,73,160,.12)}
.nav{display:flex;justify-content:center;align-items:stretch;min-width:0;overflow-x:auto}
.nav button{border:0;background:white;color:var(--ink);font-size:14px;padding:13px 15px;cursor:pointer;border-bottom:5px solid transparent;white-space:nowrap;min-width:90px}
.nav button:hover{background:#f7faff} .nav button.active{color:var(--blue);font-weight:700;border-bottom-color:var(--red)}
.pagecount{display:flex;align-items:center;justify-content:center;background:var(--blue);color:white;font-weight:700;text-align:center;font-size:15px}
.view{display:none;animation:fade .18s ease;min-height:810px} .view.active{display:block} @keyframes fade{from{opacity:.55;transform:translateY(3px)}to{opacity:1;transform:none}}
.hero{display:grid;grid-template-columns:52% 48%;min-height:455px;background:linear-gradient(110deg,#f7fbff 0%,#eaf3ff 56%,#fff 56%)}
.hero-copy{padding:52px 68px 34px}
h1{font-size:56px;line-height:1.02;color:var(--blue);margin:10px 0 18px;letter-spacing:.4px}
.date{font-size:25px;font-weight:700;color:var(--blue2);margin:24px 0}
.theme{font-family:Georgia,serif;font-style:italic;font-size:31px;line-height:1.25;color:var(--blue)}
.hero-photo{min-height:455px;background-image:linear-gradient(90deg,rgba(255,255,255,.08),rgba(255,255,255,0)),url('../images/9e33b50ef5fea3fd65f4.jpg');background-size:cover;background-position:center 42%}
.section{padding:28px 68px 18px}
.section h2,.pagehead h2{font-size:42px;color:var(--blue);margin:0 0 8px}
.pagehead{padding:34px 68px 15px}
.pagehead p{font-family:Georgia,serif;font-style:italic;color:var(--blue);font-size:26px;margin:5px 0 9px}
.redline{width:120px;height:5px;background:var(--red);border-radius:3px;margin-top:10px}
.atglance{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.card,.eventcard,.agenda,.session-card,.year-panel,.honouree-panel{border:1px solid var(--line);background:white;border-radius:18px}
.card{padding:22px 26px;min-height:142px}
.day{font-size:15px;color:var(--blue);text-transform:uppercase;font-weight:800;letter-spacing:1px}
.bigdate{font-size:22px;color:var(--red);font-weight:800;margin:6px 0 12px}
.eventline{margin:7px 0;font-size:17px}
.blueband{margin:18px 44px 0;background:linear-gradient(90deg,#083b79,#0b49a0);border-radius:14px;color:white;text-align:center;padding:17px;font-weight:700;letter-spacing:.5px} .blueband span{color:#ff4e4e;margin:0 10px}
.schedule{padding:10px 68px 24px}
.timeline{display:grid;grid-template-columns:130px 1fr;gap:20px;align-items:stretch;margin:14px 0}
.time{color:var(--blue);font-weight:800;font-size:22px;padding:22px 0}
.eventcard{padding:22px 30px}
.eventcard h3{font-size:27px;color:var(--blue);margin:0 0 6px} .eventcard p{font-size:17px;color:var(--muted);margin:5px 0}
.program-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:8px 68px 22px}
.program-col{display:grid;gap:12px}
.program-row{display:grid;grid-template-columns:78px 1fr;gap:12px;border:1px solid var(--line);border-radius:14px;padding:12px 14px;background:#fff;min-height:66px}
.timechip{font-weight:800;color:white;background:var(--blue);border-radius:10px;padding:9px 6px;text-align:center;align-self:start;font-size:15px}
.program-row h3{margin:0 0 3px;color:var(--blue);font-size:18px} .program-row p{margin:2px 0;color:var(--muted);font-size:14px;line-height:1.35}
.sublist{margin:5px 0 0 18px;padding:0;color:var(--ink);font-size:13.5px;line-height:1.35} .sublist li{margin:2px 0}
.session-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;padding:10px 68px 22px}
.session-grid.single{grid-template-columns:1fr}
.session-card{padding:20px 24px}
.session-card .label{font-size:13px;letter-spacing:1px;text-transform:uppercase;color:var(--red);font-weight:800}
.session-card h3{font-size:25px;color:var(--blue);margin:7px 0 12px}
.session-item{display:grid;grid-template-columns:78px 1fr;gap:12px;margin:11px 0;align-items:start}
.session-item b{color:var(--blue);font-size:17px} .session-item div{font-size:16px;line-height:1.35}
.legacy-list{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:10px} .legacy-list span{background:var(--soft);border-radius:9px;padding:8px 10px;color:var(--blue);font-weight:700}
.sunday-wrap{padding:24px 68px 40px;display:grid;grid-template-columns:1fr 1fr;gap:22px}
.sunday-card{border:1px solid var(--line);border-radius:20px;padding:45px 30px;text-align:center;background:linear-gradient(180deg,#fff,#f5f9ff)}
.sunday-card .clock{font-size:28px;color:var(--blue);font-weight:800} .sunday-card h3{font-size:34px;color:var(--blue);margin:12px 0 6px}
.closing{margin:16px auto 0;max-width:900px;background:#f4f8fe;border-radius:14px;padding:16px;text-align:center;font-family:Georgia,serif;font-style:italic;color:var(--blue);font-size:21px}
.honouree-wrap{display:grid;grid-template-columns:1fr 1.2fr;gap:24px;padding:10px 68px 5px}
.honouree-panel{padding:24px 28px} .honouree-panel h3{font-size:27px;color:var(--blue);margin:0 0 13px}
.honouree-list{list-style:none;counter-reset:item;padding:0;margin:0} .honouree-list li{counter-increment:item;padding:11px 6px 11px 46px;border-bottom:1px solid #e6edf7;position:relative;font-size:16px;font-weight:700} .honouree-list li:before{content:counter(item);position:absolute;left:0;top:8px;width:30px;height:30px;background:var(--blue);color:#fff;border-radius:50%;display:grid;place-items:center;font-size:13px}
.role-chip{display:inline-block;background:var(--soft);color:var(--blue);padding:6px 12px;border-radius:999px;font-size:12px;font-weight:800;text-transform:uppercase;margin:7px 0}
.staff-person{display:flex;justify-content:space-between;gap:20px;border-bottom:1px solid #e6edf7;padding:8px 4px;font-size:14px} .staff-person span{color:var(--muted)}
.honour-note{text-align:center;font-family:Georgia,serif;font-style:italic;color:var(--blue);font-size:19px;margin:12px 68px}
.year-hero{padding:36px 68px 20px;position:relative;min-height:205px}
.year-kicker{color:var(--red);font-size:14px;font-weight:800;text-transform:uppercase;letter-spacing:1px}
.year-hero h2{font-size:45px;color:var(--blue);margin:10px 0 5px} .year-hero p{font-family:Georgia,serif;font-style:italic;color:var(--blue);font-size:24px;margin:8px 0}
.logo96{position:absolute;right:90px;top:18px;width:170px;height:170px;object-fit:contain}
.year-sections{display:grid;grid-template-columns:1.65fr 1fr;gap:22px;padding:10px 68px 14px}
.year-panel{padding:22px 28px;min-height:430px} .year-panel h3{font-size:28px;color:var(--blue);margin:0 0 8px} .sub{color:var(--muted);font-size:14px}
.memorial-copy{font-family:Georgia,serif;font-style:italic;color:var(--blue);font-size:16px;line-height:1.45;margin:15px 0}
.name-area{width:100%;height:250px;margin-top:18px;border:1px solid #cbdaf0;border-radius:14px;padding:16px;background:#fbfdff;font:16px Arial;resize:vertical;color:var(--ink)}
.memorial .name-area{height:190px} .save-note{font-size:12px;color:var(--muted);font-style:italic;margin-top:7px}
.controls{display:flex;justify-content:space-between;align-items:center;padding:8px 44px 4px;gap:10px}
.ctrlbtn{border:0;border-radius:10px;padding:11px 20px;font-weight:700;cursor:pointer;font-size:14px} .prev{background:#edf4ff;color:var(--blue)} .next{background:var(--blue);color:white}
.goto-honours{border:0;background:#edf4ff;color:var(--blue);font-weight:700;border-radius:10px;padding:11px 18px;cursor:pointer}
@media(max-width:800px){
 .topbar{grid-template-columns:180px 1fr 80px} .brand{padding:8px} .brandlogo{max-width:160px} .nav button{min-width:72px;padding:10px 9px;font-size:12px}
 .hero{grid-template-columns:1fr;min-height:0} .hero-copy{padding:30px 24px} .hero-photo{min-height:300px} h1{font-size:42px}
 .section,.pagehead,.schedule{padding-left:24px;padding-right:24px} .atglance,.program-grid,.session-grid,.sunday-wrap,.honouree-wrap,.year-sections{grid-template-columns:1fr;padding-left:24px;padding-right:24px}
 .timeline{grid-template-columns:1fr} .time{padding:4px 0} .year-hero{padding-left:24px;padding-right:24px} .logo96{position:static;width:135px;height:135px;margin-top:12px} .blueband{margin-left:24px;margin-right:24px}
}

.mobile-jump{display:none}
@media(max-width:640px){
  body{background:#fff}
  .shell{width:100%;max-width:none;min-height:100vh;box-shadow:none}
  .topbar{
    position:sticky;top:0;
    grid-template-columns:1fr auto;
    grid-template-areas:"brand page";
    align-items:center;
    min-height:72px
  }
  .brand{grid-area:brand;padding:8px 12px;min-width:0}
  .brandlogo{max-width:185px;width:100%;height:auto;border-radius:8px;box-shadow:none}
  .pagecount{
    grid-area:page;
    margin-right:10px;
    border-radius:10px;
    min-width:70px;
    height:48px;
    padding:0 8px;
    font-size:12px
  }
  .nav{display:none}
  .mobile-jump{
    display:block;
    position:sticky;
    top:72px;
    z-index:19;
    background:#fff;
    border-bottom:1px solid var(--line);
    padding:10px 12px
  }
  .mobile-jump label{
    display:block;
    margin-bottom:5px;
    color:var(--blue);
    font-size:12px;
    font-weight:800;
    text-transform:uppercase;
    letter-spacing:.5px
  }
  .mobile-jump select{
    width:100%;
    min-width:0;
    border:1px solid #bfd0e9;
    border-radius:12px;
    background:#f7fbff;
    color:var(--ink);
    font-size:16px;
    padding:11px 12px
  }
  .view{min-height:auto;padding-bottom:92px}
  .hero{
    display:block;
    min-height:0;
    background:#f5f9ff
  }
  .hero-copy{padding:26px 18px 24px}
  h1{font-size:39px;line-height:1.02;margin:4px 0 14px}
  .date{font-size:20px;line-height:1.25;margin:18px 0}
  .theme{font-size:24px;line-height:1.28}
  .hero-photo{min-height:245px;background-position:center 38%}
  .section,.pagehead,.schedule,.program-grid,.session-grid,.sunday-wrap,.honouree-wrap,.year-sections{
    padding-left:14px;
    padding-right:14px
  }
  .section{padding-top:22px}
  .section h2,.pagehead h2{font-size:31px;line-height:1.08}
  .pagehead{padding-top:24px;padding-bottom:10px}
  .pagehead p{font-size:21px;line-height:1.25}
  .redline{height:4px;width:90px}
  .atglance,.program-grid,.session-grid,.sunday-wrap,.honouree-wrap,.year-sections{
    grid-template-columns:1fr;
    gap:12px
  }
  .card,.eventcard,.agenda,.session-card,.year-panel,.honouree-panel,.sunday-card{
    border-radius:14px
  }
  .card{padding:18px;min-height:0}
  .bigdate{font-size:19px}
  .eventline{font-size:16px;line-height:1.45}
  .timeline{grid-template-columns:1fr;gap:5px;margin:12px 0}
  .time{font-size:18px;padding:3px 2px;color:var(--red)}
  .eventcard{padding:18px}
  .eventcard h3{font-size:23px;line-height:1.12}
  .program-grid{padding-top:6px;padding-bottom:14px}
  .program-row{
    grid-template-columns:64px 1fr;
    gap:10px;
    padding:12px;
    min-height:0
  }
  .timechip{font-size:13px;padding:8px 4px}
  .program-row h3{font-size:17px;line-height:1.2}
  .program-row p,.sublist{font-size:14px;line-height:1.42}
  .session-card{padding:18px}
  .session-card h3{font-size:22px}
  .session-item{grid-template-columns:76px 1fr;gap:8px}
  .session-item b{font-size:15px}
  .session-item div{font-size:15px}
  .legacy-list{grid-template-columns:1fr}
  .sunday-card{padding:28px 18px}
  .sunday-card h3{font-size:28px}
  .closing{margin:12px 14px 0;font-size:18px}
  .honouree-panel{padding:18px}
  .honouree-panel h3{font-size:24px}
  .honouree-list li{font-size:15px;line-height:1.35;padding-right:2px}
  .staff-person{display:block;padding:10px 4px;font-size:15px}
  .staff-person span{display:block;margin-top:4px;font-size:13px}
  .honour-note{margin:12px 14px;font-size:17px;line-height:1.4}
  .year-hero{padding:25px 14px 15px;min-height:0}
  .year-hero h2{font-size:34px;line-height:1.05}
  .year-hero p{font-size:20px;line-height:1.3}
  .logo96{
    position:static;
    display:block;
    width:150px;
    height:150px;
    margin:16px auto 0
  }
  .year-panel{padding:18px;min-height:0}
  .year-panel h3{font-size:25px}
  .name-area{
    height:330px;
    margin-top:14px;
    padding:14px;
    font-size:16px;
    line-height:1.5;
    resize:none
  }
  .memorial .name-area{height:180px}
  .blueband{
    margin:14px 14px 0;
    padding:13px 9px;
    border-radius:12px;
    font-size:12px;
    line-height:1.5;
    letter-spacing:.2px
  }
  .blueband span{margin:0 4px}
  .controls{
    position:fixed;
    left:0;right:0;bottom:0;
    z-index:30;
    padding:9px 12px calc(9px + env(safe-area-inset-bottom));
    background:rgba(255,255,255,.97);
    border-top:1px solid var(--line);
    gap:10px
  }
  .ctrlbtn{
    flex:1;
    min-height:48px;
    font-size:15px;
    padding:12px 10px
  }
  .goto-honours{width:100%;min-height:46px}
}


.static-class-list{
  margin:18px 0 0;
  padding:0;
  list-style:none;
  counter-reset:classmember;
  columns:2;
  column-gap:34px;
}
.static-class-list li{
  counter-increment:classmember;
  break-inside:avoid;
  position:relative;
  padding:7px 8px 7px 34px;
  border-bottom:1px solid #e7eef8;
  font-size:15px;
  line-height:1.35;
}
.static-class-list li::before{
  content:counter(classmember) ".";
  position:absolute;
  left:4px;
  top:7px;
  color:var(--blue);
  font-weight:800;
}
@media(max-width:640px){
  .static-class-list{columns:1;margin-top:14px}
  .static-class-list li{font-size:16px;padding-top:9px;padding-bottom:9px}
  .static-class-list li::before{top:9px}
}


.front-cover{
  padding:0;
  background:#ffffff;
}
.front-cover img{
  display:block;
  width:100%;
  height:auto;
}
@media(max-width:640px){
  .front-cover img{
    width:100%;
    height:auto;
  }
}


.photo-gallery-wrap{padding:18px 42px 32px}
.photo-gallery-intro{max-width:760px;margin:0 auto 18px;text-align:center;color:var(--muted);font-size:16px;line-height:1.5}
.photo-gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;align-items:start}
.photo-card{margin:0;background:#fff;border:1px solid #dfe8f4;border-radius:14px;overflow:hidden;box-shadow:0 5px 15px rgba(11,73,160,.08);break-inside:avoid}
.photo-card img{display:block;width:100%;height:auto;max-height:430px;object-fit:cover;background:#eef4fb}
.photo-card.historic img{filter:none}
.photo-caption{padding:9px 11px;font-size:13px;line-height:1.35;color:var(--muted)}
@media(max-width:900px){.photo-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-gallery-wrap{padding:16px 24px 28px}}
@media(max-width:640px){.photo-gallery-wrap{padding:14px 12px 88px}.photo-gallery{grid-template-columns:1fr;gap:12px}.photo-card img{max-height:none}.photo-caption{font-size:14px}.photo-gallery-intro{text-align:left;font-size:15px}}


.gallery-block{
  margin-top:22px;
  padding:18px 18px 14px;
  background:#f9fbfe;
  border:1px solid #d9e5f3;
  border-radius:18px;
}
.gallery-head{
  margin-bottom:14px;
}
.gallery-head h3{
  margin:0 0 4px;
  color:var(--blue);
  font-size:28px;
  line-height:1.1;
}
.gallery-head p{
  margin:0;
  color:var(--muted);
  font-size:15px;
  line-height:1.45;
}
.photo-gallery-vertical{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:16px;
  align-items:start;
}
.photo-card{
  margin:0;
  background:#fff;
  border:1px solid #dfe8f4;
  border-radius:16px;
  overflow:hidden;
  box-shadow:0 5px 15px rgba(11,73,160,.08);
}
.photo-card img{
  display:block;
  width:100%;
  height:auto;
  background:#eef4fb;
}
.photo-caption{
  padding:10px 12px 12px;
  font-size:13px;
  line-height:1.4;
  color:var(--muted);
}
@media(max-width:900px){
  .photo-gallery-vertical{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:640px){
  .gallery-block{padding:14px 12px}
  .gallery-head h3{font-size:24px}
  .gallery-head p{font-size:14px}
  .photo-gallery-vertical{grid-template-columns:1fr;gap:12px}
  .photo-caption{font-size:14px}
}


.static-memorial-list{
  margin:18px 0 0;
  padding:0;
  list-style:none;
  counter-reset:memorial;
}
.static-memorial-list li{
  counter-increment:memorial;
  position:relative;
  padding:10px 10px 10px 34px;
  border-bottom:1px solid #e7eef8;
  font-size:16px;
  line-height:1.4;
}
.static-memorial-list li::before{
  content:counter(memorial) ".";
  position:absolute;
  left:4px;
  top:10px;
  color:var(--blue);
  font-weight:800;
}


.class-2006-wrap{padding:18px 42px 34px}
.form2006{margin:0 0 22px;background:#f9fbfe;border:1px solid #d9e5f3;border-radius:18px;padding:18px}
.form2006 h3{margin:0 0 12px;color:var(--blue);font-size:24px}
.form2006 ol{columns:2;column-gap:34px;margin:0;padding-left:28px}
.form2006 li{break-inside:avoid;margin:0 0 6px;line-height:1.35}
@media(max-width:700px){.class-2006-wrap{padding:14px 12px 88px}.form2006 ol{columns:1}.form2006{padding:14px}}


.form2006 h3 em{
  display:inline-block;
  margin-top:4px;
  font-size:.78em;
  font-weight:500;
  color:var(--muted);
}
.memoriam-2006{
  margin:26px 0 0;
  padding:20px 22px;
  background:#fffaf6;
  border:1px solid #ead7c6;
  border-radius:18px;
}
.memoriam-2006 h3{
  margin:0 0 6px;
  color:var(--blue);
  font-size:25px;
}
.memoriam-2006 p{
  margin:0 0 14px;
  color:var(--muted);
}
.memoriam-2006 ul{
  margin:0;
  padding-left:24px;
  columns:2;
  column-gap:34px;
}
.memoriam-2006 li{
  break-inside:avoid;
  margin:0 0 7px;
  line-height:1.4;
}
@media(max-width:700px){
  .memoriam-2006 ul{columns:1}
}


.class-2006-list{
  margin-top:16px;
}
.class-2006-list li{
  break-inside:avoid;
}


/* Portrait gallery normalisation */
.gallery-block .photo-card img{
  display:block;
  width:100%;
  height:430px;
  object-fit:contain;
  object-position:center center;
  background:#ffffff;
}
@media(max-width:900px){
  .gallery-block .photo-card img{height:390px;}
}
@media(max-width:640px){
  .gallery-block .photo-card img{height:420px;}
}

.click-gallery-wrap{max-width:1100px;margin:0 auto}.gallery-selector{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:20px}.gallery-choice{appearance:none;border:1px solid var(--line,#d9dee8);background:#fff;border-radius:18px;padding:26px;text-align:left;cursor:pointer;box-shadow:0 8px 22px rgba(18,42,80,.08);display:flex;flex-direction:column;gap:9px;min-height:190px}.gallery-choice:hover{transform:translateY(-2px);box-shadow:0 12px 28px rgba(18,42,80,.13)}.gallery-choice-title{font-size:2rem;font-weight:800;color:#173c78}.gallery-choice-sub{color:#5e6878;line-height:1.5;flex:1}.gallery-choice-action{font-weight:700;color:#b31b2c}.click-gallery[hidden]{display:none!important}.click-gallery{margin-top:18px}.click-gallery-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px;flex-wrap:wrap}.gallery-back,.gallery-prev,.gallery-next{border:1px solid #cbd3df;background:#fff;color:#173c78;border-radius:999px;padding:10px 16px;font-weight:700;cursor:pointer}.gallery-back:hover,.gallery-prev:hover,.gallery-next:hover{background:#eef3fa}.click-gallery-title{display:flex;align-items:center;gap:10px;font-size:1.1rem}.gallery-counter{color:#667085;font-size:.95rem}.click-gallery-stage{min-height:420px;display:flex;align-items:center;justify-content:center;background:#f5f7fa;border:1px solid #e0e5ec;border-radius:18px;padding:16px;overflow:hidden}.click-gallery-stage .click-photo-card{display:block;margin:0;max-width:100%;text-align:center}.click-gallery-stage img{display:block;max-width:100%;max-height:72vh;height:auto;width:auto;margin:0 auto;border-radius:12px;object-fit:contain}.click-gallery-stage figcaption{margin-top:10px;color:#667085;font-size:.95rem}.click-gallery-controls{display:flex;justify-content:space-between;gap:12px;margin-top:14px}.gallery-prev:disabled,.gallery-next:disabled{opacity:.35;cursor:not-allowed}.gallery-items-source{display:none!important}@media(max-width:700px){.gallery-selector{grid-template-columns:1fr}.gallery-choice{min-height:150px;padding:20px}.gallery-choice-title{font-size:1.7rem}.click-gallery-stage{min-height:300px;padding:10px}.click-gallery-stage img{max-height:66vh}.click-gallery-controls{position:sticky;bottom:8px;background:rgba(255,255,255,.94);padding:8px;border-radius:999px;z-index:2}}
.gallery-panel{grid-column:1 / -1;min-height:0}.gallery-panel-copy{margin:14px 0 6px;color:#5e6878;line-height:1.6}.gallery-group{margin-top:24px}.gallery-group+.gallery-group{border-top:1px solid var(--line,#d9dee8);padding-top:24px}.gallery-group-head h4{margin:0 0 6px;font-size:1.25rem;color:#173c78}.gallery-group-head p{margin:0;color:#667085;line-height:1.5}.gallery-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:16px;margin-top:16px}.gallery-thumb-card{margin:0}.gallery-thumb{appearance:none;border:1px solid var(--line,#d9dee8);background:#fff;border-radius:16px;padding:10px;cursor:pointer;display:block;width:100%;text-align:left;box-shadow:0 8px 20px rgba(18,42,80,.08)}.gallery-thumb:hover{transform:translateY(-2px);box-shadow:0 12px 26px rgba(18,42,80,.14)}.gallery-thumb img{display:block;width:100%;height:165px;object-fit:cover;border-radius:12px}.gallery-thumb .photo-caption{display:block;margin-top:8px;text-align:center;color:#667085;font-size:.92rem;line-height:1.35}.gallery-lightbox[hidden]{display:none!important}.gallery-lightbox{position:fixed;inset:0;background:rgba(15,23,42,.88);display:flex;align-items:center;justify-content:center;padding:24px;z-index:1000}.gallery-lightbox-inner{position:relative;max-width:min(1000px,92vw);max-height:92vh;width:100%}.gallery-lightbox-close{position:absolute;top:-14px;right:-14px;width:42px;height:42px;border:none;border-radius:999px;background:#fff;color:#173c78;font-size:1.7rem;line-height:1;cursor:pointer;box-shadow:0 10px 24px rgba(0,0,0,.25)}.gallery-lightbox figure{margin:0;background:#fff;border-radius:18px;padding:14px;box-shadow:0 18px 40px rgba(0,0,0,.3)}.gallery-lightbox img{display:block;max-width:100%;max-height:76vh;height:auto;width:auto;margin:0 auto;border-radius:12px;object-fit:contain}.gallery-lightbox figcaption{margin-top:10px;text-align:center;color:#667085;line-height:1.5}@media(max-width:700px){.gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.gallery-thumb img{height:120px}.gallery-lightbox{padding:12px}.gallery-lightbox-inner{max-width:100%}.gallery-lightbox-close{top:6px;right:6px}}


/* Keep In Memoriam in its original 1996 position; gallery follows below the year section */
.year-panel.gallery-panel{margin:22px 68px 14px;}
@media(max-width:900px){.year-panel.gallery-panel{margin:18px 24px 14px;}}
@media(max-width:640px){.year-panel.gallery-panel{margin:14px 16px 12px;}}

.gallery-separate-wrap{grid-column:1 / -1;display:grid;grid-template-columns:1fr;gap:24px;scroll-margin-top:110px}.separate-gallery-panel{grid-column:auto!important;min-height:0!important}.separate-gallery-panel+.separate-gallery-panel{margin-top:0}.separate-gallery-panel .gallery-grid{margin-top:18px}@media(max-width:700px){.gallery-separate-wrap{gap:18px;scroll-margin-top:92px}.separate-gallery-panel{padding:18px!important}}

.gallery-landing{max-width:980px;margin:24px auto 0;padding:0 18px 28px}.gallery-landing-intro{text-align:center;margin:0 auto 22px;max-width:680px}.gallery-landing-intro h3{margin:0 0 7px;color:#123d72;font-size:1.5rem}.gallery-landing-intro p{margin:0;color:#53657a}.gallery-landing-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.gallery-landing-card{display:flex;flex-direction:column;width:100%;padding:0;border:1px solid #d8e0ea;border-radius:18px;overflow:hidden;background:#fff;text-align:left;cursor:pointer;box-shadow:0 8px 24px rgba(14,52,92,.08);transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}.gallery-landing-card:hover,.gallery-landing-card:focus-visible{transform:translateY(-2px);box-shadow:0 12px 28px rgba(14,52,92,.13);border-color:#2f69a9}.gallery-landing-card>img{width:100%;height:260px;object-fit:cover;display:block}.gallery-landing-card-copy{display:flex;flex-direction:column;gap:8px;padding:18px}.gallery-landing-card-copy strong{font-size:1.25rem;color:#123d72}.gallery-landing-card-copy>span:not(.gallery-landing-cta){color:#53657a;line-height:1.5}.gallery-landing-cta{font-weight:700;color:#1c5d9d;margin-top:4px}.gallery-back-row{max-width:1180px;margin:20px auto 0;padding:0 18px}.gallery-back-button{appearance:none;border:1px solid #b8c7d8;background:#fff;color:#123d72;border-radius:999px;padding:10px 15px;font-weight:700;cursor:pointer}.gallery-back-button:hover,.gallery-back-button:focus-visible{border-color:#2f69a9;background:#f3f7fb}@media(max-width:700px){.gallery-landing{padding:0 12px 22px}.gallery-landing-grid{grid-template-columns:1fr;gap:16px}.gallery-landing-card>img{height:220px}.gallery-back-row{padding:0 12px}}
.offline-panel{margin:18px 0 22px;padding:16px 18px;border:1px solid var(--line);border-radius:14px;background:var(--soft)}
.offline-panel h3{margin:0 0 6px;font-size:1.05rem;color:var(--blue2)}
.offline-panel p{margin:0 0 8px;font-size:.94rem;line-height:1.45;color:var(--muted)}
.offline-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}
.offline-btn{appearance:none;border:1px solid var(--blue);background:#fff;color:var(--blue);border-radius:999px;padding:9px 16px;font:inherit;font-size:.9rem;font-weight:600;cursor:pointer}
.offline-btn:hover{background:var(--blue);color:#fff}
.offline-btn.primary{background:var(--blue);color:#fff}
.offline-btn.primary:hover{background:var(--blue2);border-color:var(--blue2)}
.offline-btn.quiet{border-color:var(--line);color:var(--muted);font-weight:500}
.offline-btn.quiet:hover{background:#fff;color:var(--red);border-color:var(--red)}
.offline-bar{height:8px;border-radius:999px;background:#fff;border:1px solid var(--line);overflow:hidden;margin:10px 0 2px}
.offline-bar>span{display:block;height:100%;width:0;background:var(--blue);transition:width .25s ease}
@media (max-width:640px){.offline-actions{flex-direction:column;align-items:stretch}.offline-btn{width:100%}}
.appbar{display:flex;justify-content:flex-end;padding:6px 16px;border-bottom:1px solid var(--line);background:#fbfdff}
.appbar-btn{appearance:none;border:1px solid var(--blue);background:#fff;color:var(--blue);border-radius:999px;padding:5px 14px;font:inherit;font-size:.82rem;font-weight:600;cursor:pointer;line-height:1.4}
.appbar-btn:hover{background:var(--blue);color:#fff}
.appbar[data-open] .appbar-btn{background:var(--blue);color:#fff}
.offline-wrap{padding:0 16px}
.offline-wrap .offline-panel{margin:14px 0}
.gallery-offline-note{margin:10px 0 0;font-size:.92rem;color:var(--muted)}
.offline-link{appearance:none;border:0;background:none;padding:0;font:inherit;color:var(--blue);font-weight:600;text-decoration:underline;cursor:pointer}
.offline-ios{margin:0 0 8px;font-size:.9rem;color:var(--blue2)}
@media(max-width:640px){.appbar{justify-content:center;padding:6px 12px}.appbar-btn{width:100%}.offline-wrap{padding:0 12px}}
