@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,400;1,500&family=Manrope:wght@400;500;600&display=swap');
:root{color-scheme:dark;--ink:#0b1117;--surface:#111820;--ivory:#e9e4da;--muted:#abb0b6;--gold:#c8af7e;--line:#b99b6238;--serif:'Cormorant Garamond',Georgia,serif;--sans:Manrope,Arial,sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;background:var(--ink);color:var(--ivory);font-family:var(--sans);font-size:16px;line-height:1.65}body:has(dialog[open]){overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}button:disabled{opacity:.4;cursor:default}button:focus-visible,a:focus-visible{outline:2px solid var(--gold);outline-offset:6px}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:var(--serif);font-weight:400;line-height:1.05}h2{font-size:clamp(2.6rem,4.5vw,4rem)}em{font-weight:400;color:var(--gold)}.gold{color:var(--gold)}.eyebrow{font-size:.75rem;font-weight:500;letter-spacing:.22em;color:var(--gold);line-height:1.7}.site-header{position:absolute;z-index:2;top:0;left:0;width:100%;padding:25px 5.5%;display:flex;align-items:center;justify-content:space-between;gap:30px;border-bottom:1px solid #ffffff12}.brand{display:flex;align-items:center;gap:13px;font-size:.82rem;letter-spacing:.18em;line-height:1.7}.brand>span:first-child{font-family:Georgia,serif;font-size:2.8rem;color:var(--gold);line-height:1}.brand small{display:block;font-size:.6rem;letter-spacing:.16em;color:var(--muted)}nav{display:flex;gap:32px;font-size:.875rem}nav a{color:#c7cbd1;transition:color .2s}nav a:hover{color:var(--gold)}.dedication{color:var(--gold);font-family:var(--serif);font-size:1.5rem;letter-spacing:.15em}.dedication i{font-size:1rem;color:var(--muted)}.hero{min-height:760px;position:relative;display:flex;align-items:center;padding:130px 8% 130px;isolation:isolate}.hero-art{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 44%;z-index:-3}.hero:before{content:'';position:absolute;inset:0;z-index:-2;background:linear-gradient(90deg,#070d16c9 0%,#07111a61 42%,transparent 76%),linear-gradient(0deg,var(--ink),transparent 24%)}.hero-content{max-width:720px}.hero h1{font-size:clamp(3.6rem,5.7vw,5.5rem);letter-spacing:-.025em;margin:22px 0 25px;line-height:1.02}.hero-quote{font-family:var(--serif);font-size:1.4rem;line-height:1.5;color:#c1c7cf;margin-bottom:29px}.button{display:inline-flex;justify-content:center;align-items:center;gap:40px;min-height:50px;padding:13px 25px;border:1px solid var(--line);background:transparent;font-size:.875rem;transition:background .2s,transform .2s}.button:hover{background:#c8af7e20;transform:translateY(-2px)}.button.primary{background:var(--gold);color:#172029;border-color:var(--gold)}.button.primary:hover{background:#e0c895}.button span{font-size:1.2rem}.horizon{position:absolute;bottom:38px;left:8%;right:8%;display:flex;align-items:center;justify-content:center;gap:25px;color:#a5adb9;font-size:.65rem;letter-spacing:.19em}.horizon-line{width:110px;height:1px;background:var(--line)}.section{padding:78px 8%}.section-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:38px}.section-heading h2{margin-top:10px}.section-heading>p{font-family:var(--serif);font-style:italic;font-size:1.2rem;color:var(--muted);line-height:1.5}.letter-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.letter-card{position:relative;display:flex;flex-direction:column;align-items:flex-start;min-height:258px;text-align:left;padding:26px 25px;background:linear-gradient(140deg,#19222a,#10171f);border:1px solid #8f9ca328;transition:border-color .25s,transform .25s,background .25s}.letter-card:hover{transform:translateY(-5px);border-color:#c8af7e91;background:linear-gradient(140deg,#232b32,#151b23)}.letter-card .card-symbol{font-family:Georgia,serif;color:var(--gold);font-size:2rem;line-height:1;margin:0 0 22px}.letter-card h3{font-size:1.65rem;line-height:1.16;max-width:95%}.letter-card p{font-size:.8rem;color:var(--muted);line-height:1.65;margin-top:12px}.card-open{font-size:.73rem;letter-spacing:.1em;color:var(--gold);padding-top:25px;margin-top:auto}.card-number{position:absolute;right:22px;top:25px;color:#89919a;font-size:.7rem;letter-spacing:.12em}.castle-section{display:grid;grid-template-columns:1fr 1fr;gap:8%;align-items:center;padding:70px 12%;background:#0e151d;border-block:1px solid #c8af7e12}.castle-window{height:500px;border-radius:48% 48% 0 0;border:1px solid #c8af7e66;background:linear-gradient(0deg,#0b111733,#0b111711),url('./assets/moonlit-castle.png') 85% 50%/auto 100%;box-shadow:0 0 0 10px #0e151d,0 0 0 11px #c8af7e20}.castle-copy h2{margin:23px 0}.castle-copy>p:not(.eyebrow){font-family:var(--serif);font-size:1.35rem;color:var(--muted);max-width:440px;line-height:1.6}.castle-copy .button{margin-top:28px}.castle-copy small{display:block;margin-top:23px;color:#929ca7;font-family:var(--serif);font-style:italic;font-size:1rem}.memory-list{border-top:1px solid var(--line)}.memory-row{width:100%;display:grid;grid-template-columns:50px 1fr auto;align-items:center;gap:24px;background:none;border:none;border-bottom:1px solid var(--line);padding:25px 14px;text-align:left;transition:background .2s}.memory-row:hover{background:#ffffff04}.memory-row .index{font-family:var(--serif);color:var(--gold);font-size:1.2rem}.memory-row h3{font-size:1.8rem}.memory-row p{font-size:.8rem;color:var(--muted);margin-top:7px}.memory-row .arrow{color:var(--gold);font-size:1.3rem}.moon-section{text-align:center;padding:75px 24px 90px;background:radial-gradient(ellipse at 50% 60%,#20263677,transparent 67%);border-bottom:1px solid var(--line)}.moon-mark{display:block;font-family:Georgia,serif;font-size:5rem;line-height:1;color:var(--gold);margin:35px 0 22px}.moon-section h2{font-size:clamp(3rem,6vw,5rem)}.moon-section blockquote{font-family:var(--serif);font-style:italic;font-size:1.7rem;line-height:1.4;margin:26px 0}.moon-section>p:not(.eyebrow){color:var(--muted);font-size:.9rem;margin-bottom:30px}footer{padding:38px 8%;display:flex;align-items:center;justify-content:space-between;gap:28px}footer .brand{font-size:.65rem}footer p{font-family:var(--serif);font-size:1.3rem}footer .footer-note{color:var(--muted);font-size:.75rem}.skip{position:fixed;z-index:10;top:8px;left:8px;transform:translateY(-200%);background:var(--gold);color:var(--ink);padding:10px 20px}.skip:focus{transform:translateY(0)}dialog{padding:0;width:min(840px,calc(100% - 32px));max-height:calc(100dvh - 48px);border:1px solid #c8af7e66;background:#141b23;color:var(--ivory);box-shadow:0 30px 100px #000b}dialog::backdrop{background:#03070de3;backdrop-filter:blur(8px)}.reader-top{position:sticky;top:0;display:flex;align-items:center;justify-content:space-between;gap:15px;padding:15px 28px;background:#141b23f5;border-bottom:1px solid var(--line);z-index:1}.reader-top .eyebrow{font-size:.65rem}.icon-button{width:44px;height:44px;font-size:2rem;background:none;border:1px solid var(--line);line-height:1}.letter-paper{padding:30px 70px 36px}.reader-ornament{text-align:center;font-size:2rem;color:var(--gold);margin-bottom:24px}.ending{margin-top:36px}.letter-paper>h2{font-size:clamp(2.4rem,5vw,3.5rem);line-height:1.1;margin:12px 0 24px}.music-link{display:inline-block;color:var(--gold);font-size:.8rem;border-bottom:1px solid var(--line);padding-bottom:5px;margin:0 0 30px}.music-link[hidden]{display:none}.prose{font-family:var(--serif);font-size:1.4rem;line-height:1.65;overflow-wrap:anywhere}.prose p{margin:0 0 .75em}.prose h3{font-size:1.7rem;color:var(--gold);margin:1.6em 0 .6em}.prose blockquote{margin:1.3em 0;padding-left:20px;border-left:1px solid var(--gold);font-style:italic}.prose hr{border:0;border-top:1px solid var(--line);margin:30px 0}.prose strong{font-weight:600}.reader-bottom{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:22px 28px;border-top:1px solid var(--line);font-size:.75rem;color:var(--muted)}.text-button{border:0;background:none;padding:10px 0;font-size:.8rem;color:var(--gold)}.loading{color:var(--muted)}
@media(min-width:1600px){.hero{min-height:860px}.section{padding-inline:max(8%,calc((100vw - 1360px)/2))}}
@media(max-width:1000px){nav{gap:18px}.dedication{display:none}.hero{padding-inline:6%;min-height:730px}.section{padding:64px 6%}.letter-grid{grid-template-columns:repeat(2,1fr)}.castle-section{padding:60px 8%;gap:9%}.castle-window{height:440px}.letter-card{min-height:235px}}
@media(max-width:650px){html{scroll-padding-top:20px}.site-header{padding:18px 6%;display:block}.brand{font-size:.7rem}.brand small{font-size:.6rem}.site-header .brand>span:first-child{font-size:2.2rem}nav{margin-top:19px;gap:0;justify-content:space-between;font-size:.75rem}nav a{padding-block:5px}.hero{min-height:780px;align-items:flex-start;padding:195px 7% 100px}.hero-art{object-position:69% center}.hero:before{background:linear-gradient(90deg,#070d16d9,#070d1666),linear-gradient(0deg,var(--ink),transparent 30%)}.hero h1{font-size:clamp(3rem,10vw,4rem);margin-top:22px}.hero-quote{font-size:1.3rem}.horizon{left:7%;right:7%;gap:12px;bottom:35px;font-size:.57rem;letter-spacing:.07em}.horizon-line{width:20px}.section{padding:52px 6%}.section-heading{display:block;margin-bottom:28px}.section-heading>p{margin-top:18px;font-size:1.1rem}.eyebrow{font-size:.65rem}.letter-grid{gap:11px}.letter-card{padding:22px 17px;min-height:260px}.letter-card h3{font-size:1.45rem;overflow-wrap:anywhere}.letter-card p{font-size:.78rem}.card-number{right:16px}.castle-section{grid-template-columns:1fr;padding:55px 10%;gap:40px}.castle-window{height:400px;max-width:360px;width:100%;margin:auto}.castle-copy>p:not(.eyebrow){font-size:1.3rem}.memory-row{gap:14px;grid-template-columns:28px 1fr 20px;padding:25px 0}.memory-row h3{font-size:1.55rem}.moon-section{padding:50px 6% 65px}footer{flex-wrap:wrap;padding:32px 7%;gap:24px}footer .footer-note{width:100%}dialog{width:calc(100% - 16px);max-height:calc(100dvh - 16px)}.reader-top{padding:10px 18px}.letter-paper{padding:25px 24px}.prose{font-size:1.3rem}.reader-bottom{padding:16px 20px;flex-wrap:wrap}.reader-bottom>a{order:3;width:100%;text-align:center}.button{gap:28px}}
@media(max-width:360px){.letter-grid{grid-template-columns:1fr}.letter-card{min-height:220px}nav{font-size:.7rem}.hero h1{font-size:2.9rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}
