/* GIGI'S KIT — the look, assembled only from tokens.css. No colour is written here twice. */
:root{--ground:#FFFFFF;--ink:#0D141A;--signal:#C40B2A;--signal-deep:#9E0822;--on-signal:#FFFFFF;--head:Georgia,serif;--name:Georgia,serif;--body:system-ui,sans-serif;--kanji:'Shippori Mincho','Hiragino Mincho ProN',serif;--glow:196,11,42}
html{scroll-behavior:smooth}
body{background:var(--ground);color:var(--ink);font-family:var(--body);margin:0;font-size:1.05rem;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{max-width:100%;height:auto;display:block}
.skip-link{position:absolute;left:-999px}.skip-link:focus{left:16px;top:16px;background:var(--ink);color:var(--ground);padding:8px 12px;z-index:9}
a{color:inherit}

.gk-eyebrow{font:500 .74rem/1.5 var(--body);letter-spacing:.24em;text-transform:uppercase;color:var(--signal);margin:0 0 1rem}
.gk-eyebrow--light{color:var(--on-signal);opacity:.85}
.gk-h2{font:600 clamp(2rem,4.2vw,3.4rem)/1.06 var(--head);letter-spacing:-.005em;margin:0 0 1rem;text-wrap:balance}
.gk-sub{font:italic 500 1.35rem/1.4 var(--head);margin:0 0 3rem}
.gk-prose{max-width:62ch;font-size:1.08rem;line-height:1.72;margin:0}

.gk-js .gk-line,.gk-js .gk-rise{opacity:0;transform:translateY(14px);transition:opacity .9s ease,transform .9s cubic-bezier(.2,.7,.2,1)}
.gk-js .gk-line.in,.gk-js .gk-rise.in{opacity:1;transform:none}
.gk-js .gk-rite.gk-rise,.gk-js .gk-word.gk-rise{transition-delay:calc(var(--i) * .12s)}
.gk-still .gk-line,.gk-still .gk-rise{opacity:1!important;transform:none!important;transition:none!important}

.gk-bar{display:flex;align-items:center;gap:1.5rem;padding:.9rem clamp(20px,5vw,64px);border-bottom:1px solid color-mix(in srgb,var(--ink) 8%,transparent);position:sticky;top:0;background:color-mix(in srgb,var(--ground) 94%,transparent);backdrop-filter:blur(8px);z-index:5}
.gk-bar__home{display:flex;align-items:center;gap:.7rem;text-decoration:none;color:var(--ink)}
.gk-bar__mark{height:44px;width:auto}
.gk-bar__name{font:500 .98rem var(--name);letter-spacing:.16em;text-transform:uppercase}
.gk-bar__nav{margin-left:auto;display:flex;gap:1.4rem;font-size:.9rem}
.gk-bar__nav a{text-decoration:none;color:var(--ink);opacity:.8}.gk-bar__nav a:hover{opacity:1;color:var(--signal)}
@media(max-width:820px){.gk-bar__nav{display:none}.gk-bar__name{font-size:.86rem}}

/* THE OPENING — the emblem arrives in silver and lights */
.gk-open{position:relative;text-align:center;padding:clamp(2rem,5vw,4rem) clamp(20px,5vw,64px) clamp(4rem,8vw,7rem);min-height:calc(100vh - 72px);display:flex;flex-direction:column;align-items:center;justify-content:center}
.gk-open__emblem{position:relative;width:min(70vw,560px);margin:0 auto 1.5rem}
.gk-open__emblem img{position:relative;width:100%;filter:grayscale(1);transition:filter 2.4s ease .3s}
.gk-lit .gk-open__emblem img{filter:grayscale(0)}
.gk-still .gk-open__emblem img{filter:none;transition:none}
.gk-open__glow{position:absolute;left:30%;top:30%;width:40%;aspect-ratio:1;border-radius:50%;background:radial-gradient(closest-side,rgba(var(--glow),.38),rgba(var(--glow),0));opacity:0;transform:scale(.6);transition:opacity 1.6s ease 1.2s,transform 1.6s ease 1.2s;pointer-events:none}
.gk-lit .gk-open__glow{opacity:1;transform:scale(1.15);animation:gk-breathe 4s ease-in-out 3s infinite}
.gk-still .gk-open__glow{display:none}
@keyframes gk-breathe{0%,100%{transform:scale(1.15)}50%{transform:scale(1.32)}}
.gk-open__photo{position:absolute;inset:0;overflow:hidden;z-index:0}
.gk-open__photo img{width:100%;height:100%;object-fit:cover;object-position:center 35%;filter:grayscale(1);transition:filter 2.4s ease .3s}
.gk-lit .gk-open__photo img{filter:grayscale(0)}
.gk-open__photo::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,color-mix(in srgb,var(--ground) 92%,transparent) 0%,color-mix(in srgb,var(--ground) 40%,transparent) 45%,transparent 100%)}
.gk-open__words{position:relative;z-index:1}
.gk-open__photo~.gk-open__words{margin-top:auto;padding-top:38vh}
.gk-open__name{font:600 clamp(2.4rem,7vw,5.6rem)/1 var(--name);letter-spacing:.12em;text-transform:uppercase;margin:0 0 1.2rem;color:var(--ink)}
.gk-open__line{font:italic 500 clamp(1.4rem,2.6vw,2.15rem)/1.22 var(--head);max-width:28ch;margin:0 auto 1rem;text-wrap:balance}
.gk-open__sub{font-size:1.05rem;max-width:52ch;margin:0 auto;opacity:.85}
.gk-open__thread{position:absolute;left:50%;bottom:0;width:1.5px;height:0;background:var(--signal);transition:height 1.4s ease 1.8s;z-index:1}
.gk-lit .gk-open__thread{height:clamp(2.5rem,6vw,5rem)}
.gk-js .gk-open__words>*{opacity:0;transform:translateY(10px);transition:opacity 1s ease,transform 1s ease}
.gk-lit .gk-open__words>*{opacity:1;transform:none}
.gk-lit .gk-open__words>:nth-child(1){transition-delay:.9s}.gk-lit .gk-open__words>:nth-child(2){transition-delay:1.1s}.gk-lit .gk-open__words>:nth-child(3){transition-delay:1.4s}.gk-lit .gk-open__words>:nth-child(4){transition-delay:1.7s}
.gk-still .gk-open *{opacity:1!important;transform:none!important;transition:none!important}

/* THE SIGNAL BLOCK — her words as verse */
.gk-red{background:var(--signal);color:var(--on-signal);padding:clamp(4rem,9vw,8rem) clamp(20px,5vw,64px);text-align:center}
.gk-red__verse{max-width:38rem;margin:0 auto;font:500 clamp(1.25rem,2vw,1.55rem)/1.55 var(--head)}
.gk-red__verse p{margin:0 0 1.8em}.gk-red__verse p:last-child{margin-bottom:0}
.gk-red__verse .gk-line{display:block}
.gk-red__verse+.gk-red__verse{margin-top:2.4rem}
.gk-red__law{font:italic 600 clamp(1.5rem,2.8vw,2.3rem)/1.3 var(--head);max-width:30ch;margin:3.2rem auto;text-wrap:balance}

/* the photograph with the slab */
.gk-slab{position:relative;display:grid}
.gk-slab__photo img{width:100%;height:min(78vh,760px);object-fit:cover;object-position:center 30%}
.gk-slab__box{background:var(--signal);color:var(--on-signal);padding:clamp(2rem,4vw,3.2rem) clamp(1.6rem,4vw,3.4rem);max-width:44rem;margin:-6rem clamp(20px,5vw,64px) 0 auto;position:relative;box-shadow:0 30px 60px rgba(0,0,0,.18)}
.gk-slab__box h2{font:600 clamp(1.7rem,3vw,2.5rem)/1.12 var(--head);margin:0 0 1rem;text-wrap:balance}
.gk-slab__box p{margin:0;font-size:1.02rem;line-height:1.65}
@media(max-width:820px){.gk-slab__box{margin:-3rem 16px 0}}

/* THE WALK — programmes */
.gk-programmes{padding:clamp(4rem,8vw,7rem) clamp(20px,5vw,64px);text-align:center}
.gk-walk{display:grid;grid-template-columns:repeat(var(--n,4),minmax(0,1fr));gap:clamp(1rem,2.4vw,2rem);text-align:left;margin-top:1rem}
.gk-rite__photo{position:relative;overflow:hidden}
.gk-rite__photo img{aspect-ratio:4/5;object-fit:cover;width:100%;transition:transform 1.2s ease}
.gk-rite:hover .gk-rite__photo img{transform:scale(1.04)}
.gk-rite__kanji{position:absolute;right:.6rem;bottom:.4rem;font:500 clamp(2.4rem,4vw,3.6rem)/1 var(--kanji);color:#fff;text-shadow:0 2px 18px rgba(0,0,0,.35);writing-mode:vertical-rl;letter-spacing:.08em}
.gk-rite__dot{display:block;width:100%;height:1.5px;background:var(--signal);margin:1.4rem 0 1.1rem;position:relative}
.gk-rite__dot::after{content:"";position:absolute;left:0;top:-4.5px;width:10px;height:10px;border-radius:50%;background:var(--signal)}
.gk-rite__who{font:500 .74rem/1 var(--body);letter-spacing:.2em;text-transform:uppercase;color:var(--signal);margin:0 0 .5rem}
.gk-rite__word{font:600 clamp(1.4rem,2.2vw,2rem)/1.05 var(--name);letter-spacing:.06em;margin:0 0 .3rem}
.gk-rite__say{font:italic 1rem var(--head);opacity:.7;margin:0 0 .7rem}
.gk-rite__line{font-size:.98rem;line-height:1.55;margin:0}
@media(max-width:900px){.gk-walk{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.gk-walk{grid-template-columns:1fr}}

/* THE WORDS — the ones English never had */
.gk-words__sub{max-width:52ch;margin:0 auto 2.5rem;font:italic 1.2rem/1.5 var(--head)}
.gk-words__row{display:grid;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:2rem;max-width:64rem;margin:0 auto;text-align:center}
.gk-word__kanji{display:block;font:500 clamp(2.6rem,5vw,4rem)/1 var(--kanji);margin:0 0 .6rem;opacity:.95}
.gk-word__word{font:600 clamp(1.4rem,2.4vw,2rem)/1 var(--name);letter-spacing:.12em;margin:0 0 .3rem}
.gk-word__say{font:italic 1rem var(--head);opacity:.8;margin:0 0 .9rem}
.gk-word__meaning{font-size:1rem;line-height:1.6;margin:0;max-width:34ch;margin-inline:auto}

/* two columns */
.gk-two{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;gap:clamp(2rem,5vw,5rem);padding:clamp(3rem,7vw,6rem) clamp(20px,5vw,64px)}
.gk-two--flip .gk-two__photo{order:-1}
.gk-two__photo img{width:100%;aspect-ratio:4/5;object-fit:cover}
@media(max-width:820px){.gk-two{grid-template-columns:1fr}.gk-two--flip .gk-two__photo{order:0}.gk-two__photo img{aspect-ratio:4/3}}

/* the close */
.gk-close{padding:clamp(4rem,9vw,8rem) clamp(20px,5vw,64px);max-width:64rem;margin:0 auto;text-align:center}
.gk-close .gk-prose{margin:0 auto}
.gk-close__last{font:italic 600 clamp(2.4rem,6vw,4.6rem)/1 var(--head);color:var(--signal);margin:2.2rem 0 0}

/* the foot */
.gk-foot{text-align:center;padding:3rem clamp(20px,5vw,64px) 3.5rem;border-top:1px solid color-mix(in srgb,var(--ink) 8%,transparent)}
.gk-foot__mark{height:64px;width:auto;margin:0 auto 1rem}
.gk-foot__name{font:500 .95rem var(--name);letter-spacing:.18em;text-transform:uppercase;margin:0 0 .5rem}
.gk-foot__line{font:italic 1.05rem var(--head);margin:0 0 1rem}
.gk-foot__small{font-size:.85rem;opacity:.7;margin:0}

.w-page{padding:clamp(24px,6vw,80px) clamp(20px,5vw,64px);max-width:44rem;margin:0 auto}
.w-page h1{font:600 clamp(2rem,5vw,3.4rem)/1.05 var(--head)}
.w-prose{font-size:1.1rem;line-height:1.7}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
/* a photograph opening on a phone: the picture first, whole, then her words under it — never words across a face */
@media(max-width:820px){.gk-open__photo{position:relative;inset:auto;width:calc(100% + 40px);margin:-2rem -20px 0;height:62vh}.gk-open__photo::after{background:linear-gradient(to top,var(--ground) 0%,transparent 30%)}.gk-open__photo~.gk-open__words{padding-top:1.5rem;margin-top:0}}
.gk-open__photo~.gk-open__words .gk-eyebrow{color:var(--ink);opacity:.8}
