*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #ffffff;--surface: #f4f7fb;--border: #dce3ed;--text: #1a1f36;--text-muted: #6b7a99;--accent: #005bac;--accent-hover: #004a8f;--accent-light: #e8f0fb}html{color-scheme:light}body{background:var(--bg);color:var(--text);font-family:Helvetica Neue,Arial,-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;min-height:100dvh;-webkit-font-smoothing:antialiased}button{font-family:inherit}img{max-width:100%}.gallery-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;background:var(--surface)}@media(min-width:1024px){.gallery-grid{grid-template-columns:repeat(4,1fr)}}.gallery-cell{position:relative;aspect-ratio:1;background:var(--surface);border:none;padding:0;cursor:pointer;overflow:hidden;display:block}.gallery-cell img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .3s ease}.gallery-cell-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#005bac00;display:flex;align-items:center;justify-content:center;opacity:0;transition:background .2s ease,opacity .2s ease}@media(hover:hover){.gallery-cell:hover img{transform:scale(1.04)}.gallery-cell:hover .gallery-cell-overlay{background:#005bac38;opacity:1}}.gallery-skeleton{aspect-ratio:1;background:linear-gradient(90deg,var(--surface) 25%,#dce3ed 50%,var(--surface) 75%);background-size:200% 100%;animation:shimmer 1.4s infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.gallery-message{text-align:center;padding:4rem 1rem;color:var(--text-muted);font-size:.95rem}.gallery-error{color:#c0392b}.mgal{position:relative}.mgal-subnav{display:flex;align-items:center;gap:.5rem;padding:0 .75rem;height:44px;position:sticky;top:67px;z-index:90;background:var(--accent);border-bottom:none}.mgal-back{display:flex;align-items:center;gap:.25rem;background:none;border:none;padding:.25rem;font-size:1rem;font-weight:600;color:#fff;cursor:pointer;white-space:nowrap;opacity:.92}.mgal-back:active{opacity:.6}.mgal-subnav-title{flex:1;text-align:center;font-size:.88rem;font-weight:700;color:#ffffffe6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:3rem}.mgal-year-label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:flex-end;padding:0 .85rem;background:linear-gradient(to left,rgba(0,0,0,.55) 0%,rgba(0,0,0,.1) 60%,transparent 100%);font-size:min(22.5vw,6.5rem);font-weight:900;letter-spacing:-.06em;color:#fff;text-shadow:0 2px 16px rgba(0,0,0,.5);line-height:1;text-align:right}.mgal-float-label{position:fixed;top:120px;right:1rem;z-index:150;background:#0000009e;color:#fff;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);padding:.28rem .8rem;border-radius:999px;font-size:.82rem;font-weight:700;letter-spacing:-.01em;pointer-events:none;transition:opacity .35s ease;white-space:nowrap}.mgal-float-label--hidden{opacity:0}.mgal-year-grid{display:grid;grid-template-columns:1fr;gap:1px;background:var(--border)}.mgal-year-grid .mgal-event-card{aspect-ratio:16 / 7}.mgal-event-card{position:relative;aspect-ratio:1;overflow:hidden;border:none;padding:0;cursor:pointer;background:var(--surface);display:block;width:100%}.mgal-event-card:active{opacity:.85}.mgal-event-cover{width:100%;height:100%;object-fit:cover;display:block}.mgal-event-cover--placeholder{background:linear-gradient(90deg,#e8e8e8 25%,#d4d4d4,#e8e8e8 75%);background-size:200% 100%;animation:mgal-shimmer 1.4s infinite}.mgal-event-label{position:absolute;bottom:0;left:0;right:0;padding:2rem .65rem .6rem;background:linear-gradient(to top,rgba(0,0,0,.72) 0%,transparent 100%);color:#fff;font-size:.85rem;font-weight:600;line-height:1.2}.mgal-section-header{padding:1rem 1rem .5rem}.mgal-section-event{font-size:1.6rem;font-weight:800;color:var(--text);letter-spacing:-.03em;line-height:1.1}.mgal-event-section{margin-top:.25rem}.mgal-event-header{padding:.85rem 1rem .4rem;font-size:1.1rem;font-weight:700;color:var(--text);letter-spacing:-.02em;border-top:1px solid var(--border)}.mgal-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2px}.mgal-cell{position:relative;aspect-ratio:1;overflow:hidden;border:none;padding:0;cursor:pointer;background:var(--surface);display:block;width:100%}.mgal-cell img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .2s ease}.mgal-cell:active img{transform:scale(.97)}.mgal-cell-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#0000;transition:background .15s}.mgal-cell:active .mgal-cell-overlay{background:#00000026}.mgal-skeleton{aspect-ratio:1;background:linear-gradient(90deg,var(--surface) 25%,#dce3ed 50%,var(--surface) 75%);background-size:200% 100%;animation:mgal-shimmer 1.4s infinite}@keyframes mgal-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.mgal-spinner-wrap{display:flex;justify-content:center;padding:3rem 0}.mgal-spinner{width:28px;height:28px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:mgal-spin .7s linear infinite}@keyframes mgal-spin{to{transform:rotate(360deg)}}.mgal-empty{text-align:center;color:var(--text-muted);padding:3rem 1rem;font-size:.95rem;margin:0}.mgal-empty--grid{grid-column:1 / -1}@media(prefers-color-scheme:dark){.mgal-skeleton,.mgal-event-cover--placeholder{background:linear-gradient(90deg,#2a2a2a 25%,#383838,#2a2a2a 75%);background-size:200% 100%;animation:mgal-shimmer 1.4s infinite}}.dyl-list{display:flex;flex-direction:column;gap:3px;padding:3px 0}.dyl-row{position:relative;width:100%;aspect-ratio:5 / 1;overflow:hidden;border:none;padding:0;cursor:pointer;background:#111;display:block}.dyl-row:hover .dyl-cover{transform:scale(1.03);filter:brightness(.85)}.dyl-cover{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;display:block;transition:transform .4s ease,filter .4s ease}.dyl-cover--placeholder{background:linear-gradient(90deg,#e0e0e0 25%,#cacaca,#e0e0e0 75%);background-size:200% 100%;animation:dyl-shimmer 1.4s infinite}@keyframes dyl-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.dyl-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:flex-end;gap:.5rem;padding:0 2rem;background:linear-gradient(to left,rgba(0,0,0,.6) 0%,rgba(0,0,0,.15) 55%,transparent 100%);transition:background .3s ease}.dyl-row:hover .dyl-overlay{background:linear-gradient(to left,rgba(0,0,0,.72) 0%,rgba(0,0,0,.22) 55%,transparent 100%)}.dyl-label{font-size:clamp(3rem,5.5vw,6rem);font-weight:900;letter-spacing:-.06em;color:#fff;text-shadow:0 2px 18px rgba(0,0,0,.5);line-height:1}.dyl-arrow{color:#ffffffb3;flex-shrink:0;transition:transform .25s ease,color .25s ease}.dyl-row:hover .dyl-arrow{transform:translate(4px);color:#fff}@media(prefers-color-scheme:dark){.dyl-cover--placeholder{background:linear-gradient(90deg,#2a2a2a 25%,#383838,#2a2a2a 75%);background-size:200% 100%;animation:dyl-shimmer 1.4s infinite}}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;background:#000000e0;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);display:flex;align-items:center;justify-content:center}.modal-card{position:relative;width:100dvw;height:100dvh;background:#000;overflow:hidden}@media(min-width:640px){.modal-card{width:min(960px,94vw);height:92dvh;border-radius:14px;box-shadow:0 32px 80px #000000b3}}.modal-image-wrap{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;background:#000;overflow:hidden;transition:transform .2s cubic-bezier(.25,.46,.45,.94);will-change:transform}.modal-image-wrap--dragging{transition:none}.modal-slide{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center}.modal-slide--incoming-left{z-index:2;animation:slide-from-right .32s cubic-bezier(.4,0,.2,1) both}.modal-slide--incoming-right{z-index:2;animation:slide-from-left .32s cubic-bezier(.4,0,.2,1) both}.modal-slide--outgoing-left{z-index:1;animation:slide-to-left .32s cubic-bezier(.4,0,.2,1) both}.modal-slide--outgoing-right{z-index:1;animation:slide-to-right .32s cubic-bezier(.4,0,.2,1) both}@keyframes slide-from-right{0%{transform:translate(60%);opacity:.5}to{transform:translate(0);opacity:1}}@keyframes slide-from-left{0%{transform:translate(-60%);opacity:.5}to{transform:translate(0);opacity:1}}@keyframes slide-to-left{0%{transform:translate(0);opacity:1}to{transform:translate(-60%);opacity:0}}@keyframes slide-to-right{0%{transform:translate(0);opacity:1}to{transform:translate(60%);opacity:0}}.modal-slide img{width:100%;height:100%;object-fit:contain;display:block;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.modal-edge{position:absolute;top:50%;transform:translateY(-50%);z-index:3;color:#ffffff8c;pointer-events:none;display:flex;align-items:center;justify-content:center;padding:.6rem .35rem}.modal-edge--left{left:.5rem}.modal-edge--right{right:.5rem}.modal-header{position:absolute;top:0;left:0;right:0;z-index:3;display:flex;align-items:center;gap:.75rem;padding:max(env(safe-area-inset-top,0px),14px) 1rem 3rem;background:linear-gradient(to bottom,rgba(0,0,0,.78) 0%,transparent 100%);border:none;transition:opacity .3s ease}.modal-footer{position:absolute;bottom:0;left:0;right:0;z-index:3;padding:3rem 1rem max(env(safe-area-inset-bottom,0px),20px);background:linear-gradient(to top,rgba(0,0,0,.78) 0%,transparent 100%);border:none;transition:opacity .3s ease}.modal-overlay--hidden{opacity:0;pointer-events:none}.modal-avatar{width:34px;height:34px;border-radius:50%;border:1.5px solid rgba(255,255,255,.45);flex-shrink:0;object-fit:cover;background:#fff;display:block}.modal-author{flex:1;display:flex;flex-direction:column;gap:1px}.modal-author-name{font-size:.875rem;font-weight:700;color:#fff}.modal-author-sub{font-size:.72rem;color:#fff9;display:flex;align-items:center;gap:.4rem}.modal-year-badge{background:#ffffff2e;border:1px solid rgba(255,255,255,.3);color:#fff;font-size:.65rem;font-weight:700;letter-spacing:.04em;padding:.05rem .4rem;border-radius:4px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);white-space:nowrap}.modal-event-badge{background:#ffffff1a;max-width:140px;overflow:hidden;text-overflow:ellipsis}.modal-counter{font-size:.78rem;font-weight:600;color:#ffffffbf;white-space:nowrap}.modal-close{background:#ffffff24;border:none;color:#ffffffe6;cursor:pointer;width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background .15s;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);flex-shrink:0}.modal-close:hover{background:#ffffff47;color:#fff}.modal-meta-row{display:flex;justify-content:space-between;font-size:.75rem;color:#ffffff8c}.modal-swipe-hint{font-size:.72rem;color:#ffffff73;letter-spacing:.03em}@media(min-width:640px){.modal-swipe-hint{display:none}}.modal-charity-link{position:absolute;bottom:max(env(safe-area-inset-bottom,0px),14px);left:50%;transform:translate(-50%);z-index:4;font-size:.72rem;font-weight:600;color:#ffffffbf;text-decoration:none;letter-spacing:.03em;white-space:nowrap;background:#ffffff1f;border:1px solid rgba(255,255,255,.22);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:.3rem .85rem;border-radius:999px;transition:background .15s,color .15s}.modal-charity-link:hover{background:#ffffff38;color:#fff}.modal-nav{position:fixed;top:50%;transform:translateY(-50%);background:#ffffff1f;border:1.5px solid rgba(255,255,255,.25);color:#fff;width:46px;height:46px;border-radius:50%;cursor:pointer;display:none;align-items:center;justify-content:center;z-index:201;transition:background .15s,border-color .15s;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}@media(min-width:640px){.modal-nav{display:flex}}.modal-nav:hover{background:#ffffff47;border-color:#ffffff80}.modal-nav--prev{left:1.25rem}.modal-nav--next{right:1.25rem}.year-bar{display:none}@media(min-width:768px){.year-bar{display:flex;flex-direction:column;width:200px;flex-shrink:0;position:sticky;top:67px;height:calc(100dvh - 67px);overflow-y:auto;align-self:flex-start;scrollbar-width:none;background:#f4f5f7;box-shadow:2px 0 12px #0000000f}.year-bar::-webkit-scrollbar{display:none}.year-bar-back{display:flex;align-items:center;gap:.4rem;width:100%;background:var(--accent);border:none;padding:.7rem 1rem;font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#ffffffe6;cursor:pointer;text-align:left;transition:filter .15s;flex-shrink:0}.year-bar-back:hover{filter:brightness(1.12)}.year-bar-track{display:flex;flex-direction:column;padding:.5rem 0 1rem;flex:1}.year-group{display:flex;flex-direction:column}.year-group-btn{display:flex;align-items:baseline;gap:.4rem;width:100%;background:none;border:none;padding:1rem 1.1rem .4rem;font-size:1.75rem;font-weight:900;letter-spacing:-.05em;color:var(--text);cursor:default;text-align:left;line-height:1;pointer-events:none;-webkit-user-select:none;user-select:none}.year-group-btn--clickable{cursor:pointer;pointer-events:auto}.year-group-btn--clickable:hover{color:var(--accent)}.year-chevron{flex-shrink:0;color:var(--text-muted);transition:transform .2s cubic-bezier(.4,0,.2,1);font-size:1rem}.year-chevron--open{transform:rotate(90deg)}.year-events{position:relative;display:flex;flex-direction:column;padding:.2rem .65rem .5rem;gap:2px}.year-event-indicator{position:absolute;left:.65rem;right:.65rem;background:var(--accent);border-radius:8px;pointer-events:none;z-index:0;transition:top .25s cubic-bezier(.4,0,.2,1),height .25s cubic-bezier(.4,0,.2,1)}.year-event-btn{position:relative;z-index:1;background:transparent;border:none;padding:.42rem .75rem;font-size:.8rem;font-weight:500;color:var(--text-muted);cursor:pointer;text-align:left;border-radius:8px;transition:color .15s,background .15s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.year-event-btn:hover:not(.year-event-btn--active){color:var(--text);background:#0000000d}.year-event-btn--active{color:#fff;font-weight:600}.year-events-empty{height:.25rem}}.app{max-width:1080px;margin:0 auto}.app-header{background:#fff;border-bottom:3px solid var(--accent);padding:0 1rem;position:sticky;top:0;z-index:100}.app-header-inner{display:flex;align-items:center;gap:.75rem;height:64px}.app-logo{height:40px;width:auto;flex-shrink:0;display:block}.app-divider{width:1px;height:28px;background:var(--border);flex-shrink:0}.app-title-group{flex:1;min-width:0}.app-title{font-size:.875rem;font-weight:600;color:var(--text);line-height:1.2;white-space:nowrap}.app-header-actions{display:flex;align-items:center;gap:.75rem;flex-shrink:0;margin-left:auto}.header-site-link{display:inline;font-size:.7rem;font-weight:600;color:var(--accent);text-decoration:none;margin-top:1px;transition:opacity .15s}.header-site-link:hover{opacity:.7}.lang-toggle{display:flex;align-items:center;gap:.15rem;background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:.2rem .5rem}.lang-sep{font-size:.65rem;color:var(--border);-webkit-user-select:none;user-select:none}.lang-btn{background:none;border:none;cursor:pointer;font-size:.7rem;font-weight:500;color:var(--text-muted);padding:.1rem .25rem;border-radius:999px;transition:color .15s;line-height:1}.lang-btn--active{color:var(--accent);font-weight:700}.lang-btn:hover:not(.lang-btn--active){color:var(--text)}.app-body{display:flex;flex-direction:column}@media(min-width:768px){.app-body{flex-direction:row;align-items:flex-start}}main{flex:1;min-width:0}
