:root{--bg:#121313;--surface:#1b1c1c;--ink:#f8f6f0;--muted:#b9b7ae;--gold:#dabd7e;--line:#353630;color-scheme:dark;font-family:-apple-system,BlinkMacSystemFont,"Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;color:var(--ink);background:var(--bg);font-size:16px}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}img{max-width:100%;display:block}p{line-height:1.95}h1,h2,h3,p{margin-top:0}h1,h2{font-family:"Yu Mincho","Hiragino Mincho ProN",Georgia,serif;font-weight:500}h2{font-size:clamp(1.8rem,3vw,2.8rem);line-height:1.55}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid var(--gold);outline-offset:5px}.skip{position:fixed;top:-100px;z-index:100;padding:12px;background:var(--gold);color:#121313}.skip:focus{top:10px}.wrap{max-width:1200px;margin:auto;padding-inline:40px}.header{position:sticky;top:0;z-index:20;background:#121313f5;border-bottom:1px solid var(--line);backdrop-filter:blur(12px)}.header-inner{height:88px;display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{display:flex;align-items:center;gap:12px}.brand img{width:42px;height:48px;object-fit:contain}.brand strong{display:block;font-family:Georgia,serif;font-size:1.4rem;font-weight:400;letter-spacing:.02em}.brand small{font-size:.875rem;color:var(--muted)}nav{display:flex;gap:30px;font-size:.875rem}nav a{padding-block:10px;border-bottom:1px solid transparent}nav a:hover{color:var(--gold);border-color:var(--gold)}.menu-toggle{display:none;background:none;border:1px solid var(--line);padding:8px 12px}.hero{min-height:690px;height:calc(100svh - 88px);max-height:920px;position:relative;display:flex;align-items:center;overflow:hidden}.hero-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:67% 50%}.hero:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#070808ec 0%,#080909a0 42%,#08090908 80%),linear-gradient(0deg,#121313 0%,transparent 25%)}.hero-copy{position:relative;z-index:1;width:100%;padding-top:20px;padding-bottom:85px}.eyebrow{color:var(--gold);letter-spacing:.16em;font-size:.875rem;line-height:1.7;margin-bottom:26px}.hero h1{font-size:clamp(2.7rem,5.1vw,4.7rem);line-height:1.48;letter-spacing:.04em;margin-bottom:25px}.hero .intro{max-width:470px;color:#dedad0;font-size:1rem;line-height:2}.actions{display:flex;gap:16px;flex-wrap:wrap;margin-top:34px}.button{display:inline-flex;justify-content:center;align-items:center;min-height:50px;padding:12px 25px;border:1px solid var(--gold);font-size:.9375rem;line-height:1.5}.button.primary{background:var(--gold);color:#171913}.button:hover{background:#efd49b;color:#171913}.hero-bottom{position:absolute;z-index:2;bottom:32px;left:0;right:0;color:var(--muted);display:flex;justify-content:space-between;font-size:.875rem;letter-spacing:.06em}.section{padding:100px 0}.section-head{display:flex;align-items:end;justify-content:space-between;gap:30px;margin-bottom:38px}.section-head h2{margin-bottom:0}.section-head p{color:var(--muted);margin:0;max-width:440px}.section-number{color:var(--gold);font-size:.875rem;letter-spacing:.14em;margin-bottom:15px}.notice{border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.notice-grid{display:grid;grid-template-columns:1fr 1.65fr;gap:85px}.notice-label{display:inline-block;color:var(--gold);border:1px solid #675936;padding:6px 12px;font-size:.875rem;margin-bottom:22px}.notice p{color:var(--muted)}.signature{text-align:right;color:var(--ink)!important;margin-bottom:0}.messages-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px}.more-messages{margin:40px auto 0;display:flex;background:transparent}.light-section{background:#eeeee9;color:#252826}.light-section .section-number{color:#74613c}.light-section p{color:#555a54}.lesson{display:grid;grid-template-columns:1.4fr 1fr;gap:70px;align-items:center}.lesson img{aspect-ratio:4/3;object-fit:cover;width:100%}.lesson .caption{font-size:.875rem;margin-top:14px}.event-text{display:grid;grid-template-columns:1fr 1.8fr;gap:50px;margin-bottom:34px}.event-date{font-family:Georgia,serif;font-size:3rem;line-height:1}.event-date span{font-family:inherit;display:block;font-size:1rem;letter-spacing:.1em;color:var(--gold);margin-bottom:15px}.event-text h3{font-size:1.2rem;font-weight:500;line-height:1.6}.event-text p{color:var(--muted)}.gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.photo-button{padding:0;border:0;position:relative;background:var(--surface);overflow:hidden}.photo-button img{aspect-ratio:4/3;width:100%;object-fit:cover;transition:transform .25s}.photo-button:hover img{transform:scale(1.035)}.photo-button .view-label{position:absolute;bottom:14px;right:14px;padding:6px 10px;background:#111c;font-size:.875rem}.event-note{border-left:2px solid var(--gold);padding-left:20px;margin-top:28px;color:var(--muted);font-size:.9375rem}.competition-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px}.competition{display:grid;grid-template-columns:150px 1fr;gap:25px;align-items:center;padding:28px;border:1px solid var(--line)}.competition img{width:150px;height:180px;object-fit:cover}.competition h3{font-size:1.0625rem}.competition p{color:var(--muted);font-size:.9375rem;margin-bottom:0}.teacher-grid{display:grid;grid-template-columns:.8fr 1.4fr;gap:90px;align-items:start}.teacher-photo{aspect-ratio:1;width:100%;object-fit:cover}.teacher h2{margin-bottom:12px}.teacher .role{color:var(--gold);font-size:.875rem}.achievements{margin-top:30px}.achievement{display:grid;grid-template-columns:60px 1fr;gap:20px;border-top:1px solid var(--line);padding:22px 0}.achievement time{color:var(--gold);font-family:Georgia,serif;font-size:1.125rem}.achievement p{color:var(--muted);font-size:.9375rem;margin:0}.achievement strong{font-weight:500;color:var(--ink)}.closing{text-align:center;padding:85px 30px;background:#1b1c19;border-top:1px solid var(--line)}.closing img{width:80px;margin:0 auto 25px}.closing h2{font-size:clamp(1.6rem,3vw,2.4rem);margin-bottom:15px}.closing p{color:var(--muted);margin:0}footer{padding:30px 0;border-top:1px solid var(--line);color:var(--muted);font-size:.875rem}.footer-inner{display:flex;justify-content:space-between;gap:25px}dialog{width:min(1100px,94vw);max-height:94svh;padding:50px 16px 20px;background:#151616;border:1px solid var(--line);color:var(--ink)}dialog::backdrop{background:#000e}dialog img{max-height:72svh;margin:auto;object-fit:contain}dialog p{text-align:center;margin:14px 0 0;font-size:.875rem}.dialog-close{position:absolute;right:15px;top:12px;border:1px solid var(--line);background:var(--surface);padding:6px 14px}.dialog-nav{display:flex;justify-content:center;gap:16px;margin-top:18px}.dialog-nav button{background:transparent;border:1px solid var(--line);padding:8px 20px}[hidden]{display:none!important}
@media(min-width:1600px){.hero-photo{object-position:50% 48%}}@media(max-width:950px){.wrap{padding-inline:28px}nav{gap:18px}.brand strong{font-size:1.2rem}.brand small{font-size:.8rem}.hero{min-height:620px;max-height:780px}.hero h1{font-size:3.2rem}.notice-grid{gap:40px;grid-template-columns:1fr 1.5fr}.messages-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.lesson,.teacher-grid{gap:40px}.competition{grid-template-columns:100px 1fr;padding:20px;gap:20px}.competition img{width:100px;height:150px}}
@media(max-width:680px){html{scroll-padding-top:85px}.wrap{padding-inline:22px}.header-inner{height:74px}.brand img{width:32px;height:40px}.brand strong{font-size:1.15rem}.brand small{font-size:.75rem}.menu-toggle{display:block;font-size:.875rem}nav{display:none;position:absolute;top:74px;left:0;right:0;background:#171818;padding:18px 25px;border-bottom:1px solid var(--line);flex-direction:column;gap:4px}nav.is-open{display:flex}nav a{padding:13px}.hero{height:760px;max-height:none;min-height:660px;align-items:end}.hero-photo{object-position:63% 35%}.hero:after{background:linear-gradient(0deg,#121313 0%,#101111e0 34%,#10111130 72%)}.hero-copy{padding-top:300px;padding-bottom:100px}.hero h1{font-size:2.65rem;line-height:1.5}.eyebrow{font-size:.8rem;margin-bottom:18px}.hero .intro{font-size:.9375rem;max-width:340px}.actions{margin-top:25px;gap:12px}.button{padding:12px 19px;font-size:.875rem}.hero-bottom{bottom:24px;font-size:.75rem;gap:20px}.section{padding:65px 0}.section-head{display:block;margin-bottom:28px}.section-head p{margin-top:18px;font-size:.9375rem}.notice-grid,.lesson,.teacher-grid,.event-text{grid-template-columns:1fr;gap:25px}.notice h2{margin-bottom:0}.notice-label{margin-bottom:14px}.notice p{font-size:.9375rem}.messages-grid{gap:16px;grid-template-columns:1fr}.lesson img{order:0}.gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.gallery .view-label{font-size:.75rem;padding:4px 7px;bottom:8px;right:8px}.event-date{font-size:2.5rem}.event-date span{display:inline-block;margin-right:16px}.competition-grid{grid-template-columns:1fr}.competition{grid-template-columns:100px 1fr}.teacher-photo{width:min(100%,320px)}.teacher-grid{gap:35px}.footer-inner{flex-direction:column;font-size:.8rem;gap:14px}.closing{padding:60px 22px}.closing p{font-size:.9375rem}dialog{padding-top:52px}.dialog-nav button{font-size:.875rem}}
.notice p,.hero .intro,.lesson p,.competition p,.achievement p{font-size:1rem}
@media(max-width:400px){.header-inner{gap:10px}.brand{gap:8px}.brand strong{font-size:.97rem}.brand small{font-size:.75rem}.menu-toggle{padding:8px}.hero h1{font-size:2.3rem}.hero-bottom{letter-spacing:0}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}

/* Photo fronts and independently scrollable message backs. */
.message{position:relative;display:block;aspect-ratio:4/5;min-height:410px;perspective:1400px;align-self:stretch;border:0;background:transparent}
.message-flipper{position:absolute;inset:0;transform-style:preserve-3d;transition:transform .65s cubic-bezier(.2,.7,.2,1)}
.message.is-flipped .message-flipper{transform:rotateY(180deg)}
.message-face{position:absolute;inset:0;width:100%;height:100%;backface-visibility:hidden;-webkit-backface-visibility:hidden;border:1px solid var(--line);overflow:hidden;text-align:left}
.message-front{padding:0;background:var(--surface);transform:rotateY(0deg)}
.message-photo{width:100%;height:100%;object-fit:cover;object-position:center 28%}
.message-front-caption{position:absolute;inset:auto 0 0;display:flex;flex-direction:column;gap:10px;padding:68px 25px 25px;background:linear-gradient(transparent,#080909d9 48%,#080909f5);color:var(--ink)}
.message-front-name{font-size:1.1875rem;font-weight:500;line-height:1.65;overflow-wrap:anywhere}
.message-front-hint{font-size:.875rem;color:var(--gold);line-height:1.6}
.message-back{display:flex;flex-direction:column;gap:20px;padding:28px;background:linear-gradient(145deg,#292a24,#171817);border-color:#675936;transform:rotateY(180deg)}
.message-back h3{flex-shrink:0;font-size:1.125rem;font-weight:500;line-height:1.75;margin:0;padding-bottom:16px;border-bottom:1px solid #5d533b;color:var(--gold);overflow-wrap:anywhere}
.message-scroll{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--gold) #24251f;padding-right:10px;scroll-padding-block:8px}
.message-scroll p{font-size:1rem;line-height:1.95;color:#eeede5;margin:0;white-space:pre-line;overflow-wrap:anywhere}
.message-scroll:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.message-return{flex-shrink:0;align-self:flex-start;background:transparent;border:1px solid #756543;padding:10px 18px;font-size:.875rem;line-height:1.6;color:var(--gold)}
.message-return:hover{background:var(--gold);color:#171913}
@media(max-width:680px){.message{aspect-ratio:4/5;min-height:400px}.message-back{padding:25px;gap:18px}.message-front-caption{padding:65px 25px 25px}}
@media(prefers-reduced-motion:reduce){.message-flipper{transition:none}}
