:root{
  --night:#0b1520;--navy:#12253a;--slate:#31475c;--ice:#dce8f0;--paper:#f7f4ee;
  --ink:#0f1720;--muted:#7c8b98;--gold:#c7a36a;--line:rgba(220,232,240,.17);
  --serif:"Yu Mincho","Hiragino Mincho ProN","Noto Serif JP",serif;
  --sans:-apple-system,BlinkMacSystemFont,"Hiragino Sans","Noto Sans JP",sans-serif
}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--night);color:var(--ice);font-family:var(--sans);line-height:1.85;letter-spacing:.025em}
img{display:block;max-width:100%}a{color:inherit}button{font:inherit}h1,h2,h3{font-weight:500}.skip-link{position:fixed;left:-9999px;top:8px;z-index:100;padding:8px 12px;background:#fff;color:#111}.skip-link:focus{left:8px}
.site-header{position:fixed;z-index:30;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:16px 22px;background:linear-gradient(180deg,rgba(4,10,17,.78),transparent)}
.child-mark{display:flex;align-items:baseline;gap:10px;text-decoration:none;color:#fff}.child-mark-kanji{font-family:var(--serif);font-size:1.28rem;letter-spacing:.12em}.child-mark-romaji{font-size:.54rem;letter-spacing:.28em;color:#8ea3b5}.lang-toggle{border:1px solid rgba(220,232,240,.4);border-radius:999px;padding:7px 11px;background:rgba(11,21,32,.3);color:#fff;font-size:.74rem;letter-spacing:.08em}
.eyebrow{margin:0 0 10px;color:var(--gold);font-size:.65rem;font-weight:700;letter-spacing:.24em;text-transform:uppercase}.eyebrow.light{color:#dfeaf2}.section-no{margin:0 0 12px;color:var(--gold);font-size:.68rem;letter-spacing:.2em}

/* split hero */
.hero{min-height:100svh;display:grid;background:var(--night)}.hero-copy{order:2;display:flex;flex-direction:column;justify-content:center;padding:74px 24px 54px}.hero-index{margin:0 0 16px;color:#68829a;font-size:.62rem;letter-spacing:.22em}.hero-name{margin:0;font-family:var(--sans);font-size:clamp(5.2rem,22vw,10rem);font-weight:300;line-height:.86;letter-spacing:.04em}.hero-reading{display:flex;gap:18px;align-items:center;margin-top:16px}.reading{font-family:var(--serif);font-size:1rem;letter-spacing:.28em}.romaji{font-size:.63rem;letter-spacing:.34em;color:#8094a8}.hero-line{max-width:32rem;margin:28px 0 0;font-family:var(--serif);font-size:1rem;line-height:2;color:#c8d5df}.hero-meta{display:grid;grid-template-columns:repeat(3,1fr);margin:34px 0 0;border-top:1px solid var(--line);border-left:1px solid var(--line)}.hero-meta>div{padding:12px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.hero-meta dt{font-size:.56rem;letter-spacing:.16em;color:#71869a}.hero-meta dd{margin:4px 0 0;font-size:.8rem}.next{display:inline-flex;align-items:center;gap:12px;width:max-content;margin-top:26px;text-decoration:none;font-size:.8rem;letter-spacing:.06em}.next::after{content:"↗";color:var(--gold)}
.hero-visual{order:1;position:relative;margin:0;min-height:52vh;overflow:hidden}.hero-visual img{width:100%;height:100%;object-fit:cover;object-position:58% 50%}.hero-visual::after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(11,21,32,.42),transparent 45%)}.hero-visual figcaption{position:absolute;z-index:2;right:16px;bottom:14px;font-size:.55rem;letter-spacing:.18em;color:rgba(255,255,255,.7)}

/* name axis */
.chapter{position:relative}.name-axis{padding:82px 24px 0;background:#0e1b29}.axis-head{max-width:1120px;margin:0 auto 34px}.axis-head h2,.coordinates h2,.flight-path h2,.keepsakes h2,.letter-deck h2{margin:0;font-family:var(--serif);font-size:clamp(2rem,7vw,3.4rem);line-height:1.3}.axis-grid{display:grid;max-width:1120px;margin:auto;border-top:1px solid var(--line)}.axis-card{display:grid;grid-template-columns:42% 58%;min-height:310px;border-bottom:1px solid var(--line)}.axis-card.soar{grid-template-columns:58% 42%}.axis-glyph{display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-size:clamp(7rem,26vw,12rem);line-height:1;color:#dce8f0;background:linear-gradient(180deg,#172b3e,#0d1925)}.axis-copy{align-self:center;padding:28px 24px}.axis-code{display:block;margin-bottom:14px;color:#68849c;font-size:.56rem;letter-spacing:.2em}.kanji-kana-label{margin:0;color:#71879a;font-size:.62rem;letter-spacing:.14em}.kanji-read{margin:2px 0 14px;font-family:var(--serif);letter-spacing:.16em}.axis-copy h3{margin:0 0 8px;font-family:var(--serif);font-size:1.4rem}.axis-copy p:last-child{margin:0;color:#a9bbc9}

/* coordinates */
.coordinates{display:grid;background:#dce5ec;color:var(--ink)}.coordinates-photo{margin:0;min-height:55vh;overflow:hidden}.coordinates-photo img{width:100%;height:100%;object-fit:cover}.coordinates-copy{padding:68px 24px 80px}.coordinates .eyebrow{color:#5b7691}.logbook{display:grid;grid-template-columns:repeat(2,1fr);margin:34px 0 0;border-top:1px solid rgba(15,23,32,.18);border-left:1px solid rgba(15,23,32,.18)}.logbook>div{padding:14px;border-right:1px solid rgba(15,23,32,.18);border-bottom:1px solid rgba(15,23,32,.18)}.logbook dt{font-size:.58rem;letter-spacing:.15em;color:#5e7488}.logbook dd{margin:5px 0 0;font-family:var(--serif)}.flight-log{list-style:none;margin:42px 0 0;padding:0;border-top:1px solid rgba(15,23,32,.18)}.flight-log li{display:grid;grid-template-columns:40px 1fr;gap:14px;padding:18px 0;border-bottom:1px solid rgba(15,23,32,.18)}.flight-log li>span{color:#6c8295;font-size:.65rem;letter-spacing:.1em}.flight-log h3{margin:0 0 4px;font-family:var(--serif);font-size:1.05rem}.flight-log p{margin:0;color:#4f6272;font-size:.9rem}

/* flight path */
.flight-path{padding:88px 24px 96px;background:#08111a}.flight-path-inner{max-width:1120px;margin:auto}.flight-title{max-width:540px}.parents{position:relative;margin:42px 0 0 16%;padding:0 0 0 28px;border-left:1px solid #36506a;max-width:760px}.parents p{margin:0 0 1.25em;font-family:var(--serif);font-size:1rem;line-height:2;color:#c4d1db}.parents .wish{margin-top:30px;font-size:clamp(1.2rem,4vw,1.75rem);color:#fff}.parents footer{margin-top:28px;color:#70879a;font-size:.8rem}.route-line{display:flex;align-items:center;gap:0;margin:56px 0 0}.route-line::before,.route-line::after{content:"";height:1px;background:#32485b;flex:1}.route-line span{width:7px;height:7px;border:1px solid var(--gold);border-radius:50%;margin:0 18px}.route-line span:nth-child(2){background:var(--gold)}

/* physical keepsakes */
.keepsakes{padding:90px 24px 100px;background:#d9e2e9;color:var(--ink)}.keepsakes-head{max-width:760px;margin:0 auto 40px}.keepsakes .eyebrow{color:#58738c}.keepsakes-head h2{margin-bottom:18px}.keepsakes-head>p:last-child{margin:0;color:#4d6172;font-family:var(--serif)}.paper-set{display:grid;gap:30px;max-width:940px;margin:auto}.paper-item{margin:0}.paper-sheet{position:relative;margin:auto;background:#f7f5ef;color:#132031;box-shadow:0 26px 70px rgba(20,37,53,.16);overflow:hidden}.paper-ring{position:absolute;width:19%;height:auto;object-fit:contain;filter:grayscale(1) contrast(.85)}.certificate-preview{aspect-ratio:210/297;max-width:420px;padding:15% 13%}.certificate-preview .paper-ring{top:7%;left:8%}.paper-reading{position:absolute;right:26%;top:27%;font-family:var(--serif);font-size:clamp(.65rem,2vw,.9rem);letter-spacing:.18em;writing-mode:vertical-rl}.paper-name{position:absolute;right:37%;top:24%;font-family:var(--serif);font-size:clamp(3.1rem,12vw,6rem);font-weight:500;line-height:1;letter-spacing:.08em;writing-mode:vertical-rl}.paper-meta{position:absolute;left:11%;bottom:10%;font-family:var(--serif);font-size:clamp(.55rem,1.8vw,.75rem);letter-spacing:.08em}.paper-qr{position:absolute;right:10%;bottom:9%;display:grid;place-items:center;width:17%;aspect-ratio:1;border:1px solid rgba(19,32,49,.34);overflow:hidden;font-family:var(--sans);font-size:.4rem;line-height:1.25;letter-spacing:0;text-align:center;word-break:break-all;padding:4%;color:#132031}.story-card-preview{aspect-ratio:55/91;max-width:230px;padding:18% 12%;text-align:center}.story-card-preview .paper-ring{position:static;width:42%;margin:0 auto 12%}.card-name{display:block;font-family:var(--serif);font-size:2rem;font-weight:500;letter-spacing:.1em}.card-romaji{display:block;margin-top:4px;font-size:.58rem;letter-spacing:.28em;color:#66798a}.story-card-preview .paper-qr{right:50%;bottom:10%;width:34%;transform:translateX(50%)}.paper-item figcaption{max-width:420px;margin:18px auto 0}.paper-item figcaption strong,.paper-item figcaption span{display:block}.paper-item figcaption strong{font-family:var(--serif);font-size:1.08rem}.paper-item figcaption span{margin-top:5px;color:#4d6172;font-size:.8rem;line-height:1.7}

/* letter deck */
.letter-deck{padding:88px 24px 100px;background:#11263a}.letter-deck-grid{max-width:1120px;margin:auto;display:grid;gap:36px}.letter-deck-intro{align-self:start}.deck-note{margin:24px 0 0;color:#7891a5;font-size:.58rem;letter-spacing:.2em}.envelope{position:relative;min-height:390px;padding:24px;background:linear-gradient(160deg,#1b3146,#0e1c2b);border:1px solid rgba(220,232,240,.15);box-shadow:0 30px 80px rgba(0,0,0,.18)}.letter{position:relative;padding:34px 26px;background:#f3f1ec;color:#19232d;box-shadow:0 18px 55px rgba(0,0,0,.2);transition:.45s ease}.letter-to{font-family:var(--serif);font-size:1.35rem}.letter p{line-height:2}.letter-sign,.letter-date{text-align:right}.letter-date{color:#67717a;font-size:.8rem}.seal{position:absolute;inset:0;z-index:5;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;border:0;background:linear-gradient(180deg,rgba(14,28,43,.1),rgba(14,28,43,.82));color:#e9f0f5;cursor:pointer}.seal-icon{display:grid;place-items:center;width:76px;height:76px;border:1px solid #6b8397;border-radius:50%;font-size:2rem;color:var(--gold)}.seal-open-label{display:flex;flex-direction:column;align-items:center}.seal-kicker{font-family:var(--serif)}.seal-hint{font-size:.7rem;color:#8da1b3}.seal-close-label{display:none}.js .envelope:not(.is-open) .letter{opacity:0;visibility:hidden;transform:translateY(34px)}.envelope.is-open{padding:0;background:transparent;border:0;box-shadow:none}.envelope.is-open .letter{opacity:1;visibility:visible;transform:none}.envelope.is-open .seal{position:static;width:max-content;margin:14px auto 0;padding:8px 14px;border:1px solid var(--line);background:transparent}.envelope.is-open .seal-icon,.envelope.is-open .seal-open-label{display:none}.envelope.is-open .seal-close-label{display:block;font-size:.78rem}

/* closing */
.closing{padding:70px 24px 84px;text-align:center;background:#07101a}.closing-rule{width:1px;height:56px;margin:0 auto 24px;background:#3e566a}.closing-from{margin:0 0 18px;font-family:var(--serif)}.closing-child{display:flex;flex-direction:column;align-items:center;gap:4px}.closing-child span{font-family:var(--serif);font-size:2rem;letter-spacing:.16em}.closing-child small{font-size:.58rem;letter-spacing:.3em;color:#687c8c}.closing-note{margin:16px 0 0;font-size:.7rem;color:#687c8c}

/* reveal */
.motion .reveal{opacity:0;transform:translateY(14px);transition:opacity .65s ease,transform .65s ease}.motion .reveal.is-in{opacity:1;transform:none}

@media(min-width:860px){
  .site-header{padding:22px 5vw}.child-mark-kanji{font-size:1.5rem}
  .hero{grid-template-columns:42% 58%;min-height:100svh}.hero-copy{order:1;padding:120px clamp(42px,6vw,90px) 70px}.hero-visual{order:2;min-height:100svh}.hero-name{font-size:clamp(6.2rem,9vw,10.5rem)}
  .name-axis{padding:110px 40px 120px}.axis-grid{grid-template-columns:1fr 1fr}.axis-card,.axis-card.soar{grid-template-columns:1fr;grid-template-rows:1fr 1fr;min-height:620px}.axis-card.soar .axis-copy{order:2}.axis-card.soar .axis-glyph{order:1}.axis-copy{padding:44px}.axis-glyph{font-size:11rem}
  .coordinates{grid-template-columns:48% 52%;min-height:820px}.coordinates-photo{min-height:820px}.coordinates-copy{align-self:center;padding:90px clamp(48px,7vw,100px)}
  .flight-path{padding:130px 40px}.flight-path-inner{display:grid;grid-template-columns:38% 62%;column-gap:70px}.flight-title{grid-column:1}.parents{grid-column:2;margin:0;padding-left:36px}.route-line{grid-column:1 / -1}
  .keepsakes{padding:120px 40px}.paper-set{grid-template-columns:1.35fr .65fr;align-items:end}.paper-item figcaption{text-align:left}
  .letter-deck{padding:120px 40px}.letter-deck-grid{grid-template-columns:34% 66%;align-items:start}.letter-deck-intro{position:sticky;top:120px}.letter{padding:58px 64px}
}

.paper-qr svg{display:block;width:100%;height:100%}
