.planning-scene{--paper:#f0eee4;--ink:#294e49;position:fixed;inset:0;background:var(--paper);color:var(--ink);text-shadow:none;font-family:'方正宋三简体','FZSong III-Z05S','Songti SC',SimSun,serif}
body[data-theme=dark] .planning-scene{--paper:#192d2c;--ink:#e1e5d8}
.planning-scroll{height:100%;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scroll-behavior:smooth}
.planning-nav{position:absolute;top:0;left:0;right:0;height:90px;padding:0 8%;display:flex;align-items:center;justify-content:space-between;z-index:4;background:linear-gradient(var(--paper),transparent);pointer-events:none}.planning-nav>*{pointer-events:auto}.planning-nav button{font:22px Georgia,serif;color:inherit;background:none;border:0;padding:12px 0;cursor:pointer}.planning-nav span{font:10px Arial,sans-serif;letter-spacing:.18em;margin-right:60px}
body[data-scene=planning] .site-header .graphic-logo{visibility:hidden}body[data-scene=planning] .site-header{color:var(--ink,#294e49);pointer-events:none}body[data-scene=planning] .menu-toggle{pointer-events:auto;background:#294e49;border-radius:50%;padding:12px}body[data-scene=planning] .menu-toggle span{background:#fff}
.planning-kicker{font:11px/1.8 Arial,sans-serif;letter-spacing:.18em}.planning-hero{min-height:850px;height:100svh;position:relative;padding:160px 12% 100px;isolation:isolate}.planning-hero h1{font-size:clamp(60px,7.3vw,112px);font-weight:700;line-height:1.35;letter-spacing:.04em;margin:48px 0;position:relative;z-index:1}.planning-hero h1 em{font-style:normal;margin-left:1.4em}.hero-note{font-size:17px;line-height:2;position:absolute;left:65%;bottom:20%;}.scroll-note{position:absolute;bottom:55px;font-size:12px;letter-spacing:.2em}.hero-orbit{position:absolute;right:9%;top:20%;width:38vw;height:38vw;border:1px solid #7e928154;border-radius:50%;transform:rotate(-25deg);z-index:-1}.hero-orbit:after{content:'';position:absolute;inset:20% -20%;border:1px solid #7e928154;border-radius:50%;transform:rotate(45deg)}.hero-orbit span{position:absolute;font:italic 38vw Georgia;line-height:.8;color:#8e9b7a26;left:5%;top:8%}
.planning-timeline{padding:100px 12% 0}.planning-timeline h2{font-size:clamp(28px,3vw,42px);font-weight:400;margin:24px 0 60px}.timeline-body{position:relative;max-width:900px;margin:auto}.timeline-body svg{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:var(--ink);stroke-width:1.4;overflow:visible}.before-twenty{opacity:.5;stroke-dasharray:5 7}.after-twenty{stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 3s ease}.revealed .after-twenty{stroke-dashoffset:0}.timeline-body ol{list-style:none;padding:0;margin:0;position:relative}.timeline-body li{min-height:190px;width:44%;padding:20px 0}.timeline-body li:nth-child(odd){margin-left:56%}.timeline-body li:nth-child(even){text-align:right}.timeline-body li:before{content:'';position:absolute;left:50.7%;width:8px;height:8px;border-radius:50%;background:var(--ink);margin-top:12px;box-shadow:0 0 0 6px var(--paper)}.timeline-body li.past{opacity:.5}.timeline-body time{font:11px Arial;letter-spacing:.13em}.timeline-body h3{font-size:25px;font-weight:400;margin:16px 0 8px}.timeline-body p{font-size:14px;line-height:1.8;margin:0}.birthday strong{font:italic 60px Georgia}.bridge-hint{border:0;border-bottom:1px solid;background:none;color:inherit;font:12px inherit;margin-top:12px;cursor:pointer}.bridge-answer{margin-top:10px!important;max-width:220px}.continued{font:italic 24px Georgia!important}
.planning-monologue{min-height:650px;display:flex;align-items:center;justify-content:center;gap:10vw;padding:100px 8%;background:#dce0ce;color:#294e49}.planning-monologue>span{font:italic 220px Georgia;color:#9ca98c}.planning-monologue p{font-size:clamp(20px,2.4vw,34px);line-height:2}.planning-monologue em{font-style:normal;border-bottom:1px solid #819778}
.oasis-section{padding:120px 0 70px;background:#e5e7d8;color:#294e49}.oasis-heading{max-width:700px;margin:0 12% 80px}.oasis-heading h2{font-size:clamp(34px,4.5vw,64px);line-height:1.45;font-weight:400;margin:26px 0}.oasis-heading>p:not(.planning-kicker){font-size:15px;line-height:2.1;max-width:470px}.oasis-personal{margin-top:26px}.oasis-controls{margin:0 8% 28px 12%;display:flex;justify-content:space-between;font:12px Arial;align-items:center}.oasis-controls b{font-weight:400;opacity:.6;margin-left:25px}.oasis-controls button{font:12px SimSun;color:inherit;background:none;border:1px solid #294e4940;border-radius:30px;padding:12px 16px;margin-left:8px;cursor:pointer}.oasis-strip{display:flex;gap:28px;overflow-x:auto;scroll-snap-type:x mandatory;padding:0 12% 30px;scrollbar-width:thin;scrollbar-color:#8b9a7d transparent}.oasis-photo{margin:0;flex:0 0 58vw;scroll-snap-align:center}.oasis-photo.portrait{flex-basis:30vw}.oasis-photo button{display:block;border:0;padding:0;background:#ccd2bf;width:100%;height:490px;cursor:zoom-in}.oasis-photo img{width:100%;height:100%;object-fit:cover}.oasis-photo figcaption{font-size:14px;margin-top:20px;display:flex;gap:24px}.oasis-photo figcaption span{font:10px Arial;opacity:.6}.oasis-source{display:inline-block;color:inherit;font-size:11px;margin:30px 12% 0;text-underline-offset:5px;opacity:.7}.planning-ending{text-align:center;min-height:680px;padding:130px 8% 60px;display:flex;align-items:center;flex-direction:column;justify-content:center}.planning-ending>p:not(.planning-kicker){font-size:clamp(34px,4vw,54px);line-height:1.8;margin:35px 0}.planning-ending button{background:none;color:inherit;border:1px solid #8b9a7d;border-radius:50%;padding:26px 34px;font:15px Georgia;cursor:pointer}.planning-ending small{font:9px Arial;letter-spacing:.2em;margin-top:90px;opacity:.6}.planning-viewer{padding:50px 20px 20px;border:0;background:#192d2c;color:#f0eee4;max-width:94vw;max-height:95svh}.planning-viewer::backdrop{background:#102622e8}.planning-viewer img{display:block;max-height:77svh;max-width:85vw;object-fit:contain;margin:auto}.planning-viewer button{position:absolute;right:15px;top:12px;color:inherit;background:none;border:0;font:14px SimSun;padding:8px;cursor:pointer}.planning-viewer p{text-align:center;font-size:13px}.planning-scene button:focus-visible,.planning-scene a:focus-visible{outline:2px solid currentColor;outline-offset:5px}
@media(max-width:650px){.planning-nav{height:76px;padding:0 7%}.planning-nav button{font-size:19px}.planning-nav span{display:none}.planning-hero{min-height:680px;padding:150px 8% 100px}.planning-hero h1{font-size:13vw;margin-top:65px}.hero-orbit{width:75vw;height:75vw;right:-15%;top:24%}.hero-orbit span{font-size:75vw}.hero-note{left:46%;bottom:20%;font-size:14px}.planning-timeline{padding:70px 8% 0}.timeline-body li{width:40%;min-height:195px}.timeline-body li:nth-child(odd){margin-left:60%}.timeline-body h3{font-size:20px}.timeline-body p{font-size:12px}.timeline-body time{font-size:10px}.planning-monologue{min-height:570px;padding:80px 8%;position:relative}.planning-monologue>span{position:absolute;left:8%;top:5%;font-size:150px;opacity:.35}.planning-monologue>div{z-index:1}.planning-monologue p{font-size:20px}.oasis-section{padding-top:80px}.oasis-heading{margin:0 8% 50px}.oasis-heading h2{font-size:34px}.oasis-heading>p:not(.planning-kicker){font-size:14px}.oasis-controls{margin-left:8%}.oasis-controls b{margin-left:12px}.oasis-controls button{padding:10px}.oasis-strip{padding-left:8%;padding-right:8%;gap:18px}.oasis-photo,.oasis-photo.portrait{flex-basis:83vw}.oasis-photo button{height:420px}.oasis-photo.wide button{height:420px}.oasis-photo.wide img{object-fit:contain;background:#cbd1bc}.oasis-photo figcaption{font-size:13px}.planning-ending{min-height:600px}.bridge-answer{font-size:11px!important}}
@media(prefers-reduced-motion:reduce){.after-twenty{transition:none}.planning-scroll{scroll-behavior:auto}}html[data-motion=reduced] .after-twenty{transition:none}html[data-motion=reduced] .planning-scroll{scroll-behavior:auto}
/* Revision: photographic atmosphere, breathing reveals, and a dedicated ink column. */
.planning-scene{isolation:isolate;--glass:rgba(245,246,235,.68);--glass-border:rgba(255,255,246,.62);--ink:#24463f;background:#cdd3bd}
.planning-landscape,.planning-haze,.planning-grain{position:absolute;inset:0;pointer-events:none;z-index:-1}.planning-landscape{inset:-90px;background:#aebea4 url('assets/planning/aranya-lake.png') center/cover no-repeat;filter:blur(9px) saturate(.65) sepia(.13);transform:translateY(calc(-1 * var(--landscape-shift,0px))) scale(1.12);will-change:transform}.planning-haze{background:linear-gradient(160deg,#e9eddbb8,#e3e9d78c 45%,#acbda593)}.planning-grain{z-index:2;opacity:.14;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23343e26' filter='url(%23n)' opacity='.5' d='M0 0h180v180H0z'/%3E%3C/svg%3E");background-size:160px;mix-blend-mode:multiply}.planning-scroll{position:relative;z-index:1}.planning-nav{z-index:5;background:linear-gradient(#e3e8d8d9,transparent)}
body[data-theme=dark] .planning-scene{--glass:rgba(26,48,42,.76);--glass-border:rgba(218,231,209,.22);--ink:#ebeee0}.planning-scene .planning-monologue,.planning-scene .oasis-section{color:var(--ink);background:transparent}body[data-theme=dark] .planning-haze{background:linear-gradient(150deg,#132d28c7,#254331b0)}body[data-theme=dark] .planning-nav{background:linear-gradient(#192d2cd9,transparent)}
.planning-hero h1{transform:translateY(var(--hero-shift,0px));transition:opacity 1.6s ease,filter 1.6s ease;animation:planning-title-arrive 1.8s cubic-bezier(.2,.65,.25,1) both}.hero-orbit{border:0;animation:planning-orbit 16s ease-in-out infinite alternate}.hero-orbit:after{border-color:#f6faeaaa;box-shadow:0 0 24px #eff3d329;animation:planning-orbit 20s ease-in-out infinite alternate-reverse}.hero-note{padding:24px 30px;background:var(--glass);border:1px solid var(--glass-border);border-radius:24px;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}
.timeline-body{max-width:1000px}.timeline-body svg{z-index:0;stroke-width:2;stroke:#64836d;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 5px #f1f7c8aa)}.before-twenty{stroke-dasharray:4 9;opacity:.5}.after-twenty,.revealed .after-twenty{stroke-dasharray:1;stroke-dashoffset:calc(1 - var(--line-progress,0));transition:none}.timeline-tracer{fill:#f6fae8;stroke:#759065;stroke-width:2;filter:drop-shadow(0 0 8px #fffbd3)}.timeline-body ol{z-index:1}.timeline-body li{width:41%;min-height:220px;padding:18px 0}.timeline-body li:nth-child(odd){margin-left:59%}.timeline-body li:nth-child(even){text-align:left}.timeline-body li:before{display:none}.timeline-card{position:relative;background:var(--glass);border:1px solid var(--glass-border);border-radius:26px;padding:27px 30px;box-shadow:0 10px 40px #3347310a,inset 0 1px #ffffff40;backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);transition:opacity 1.2s ease,transform 1.4s cubic-bezier(.19,1,.22,1),filter 1.2s ease}.timeline-body li.past{opacity:1}.past .timeline-card{opacity:.5}.birthday strong{font-size:48px}.timeline-body .continued .timeline-card{background:transparent;border-color:transparent;box-shadow:none;backdrop-filter:none}.planning-timeline h2{margin-bottom:80px}.planning-monologue{min-height:850px}.planning-monologue>div{padding:45px 55px;background:var(--glass);border:1px solid var(--glass-border);border-radius:32px;backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);position:relative}.planning-monologue>span{color:#f4f4d985}.planning-monologue em{border:0;text-decoration:none}.oasis-heading{padding:40px 48px;border:1px solid var(--glass-border);border-radius:30px;background:var(--glass);backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px)}.oasis-heading h2{font-size:clamp(40px,5vw,70px)}.oasis-section{border-radius:60px 60px 0 0;background:linear-gradient(#e3e9d55c,#d5dec85c)!important}.oasis-photo button{border-radius:24px;overflow:hidden;box-shadow:0 20px 50px #182d2820;transition:transform 1.2s cubic-bezier(.2,.7,.2,1)}.oasis-photo img{transition:transform 1.8s cubic-bezier(.2,.7,.2,1)}.oasis-photo button:hover img{transform:scale(1.035)}.oasis-controls button,.planning-ending button{background:var(--glass);backdrop-filter:blur(15px);-webkit-backdrop-filter:blur(15px);border-color:var(--glass-border)}.oasis-source{font-size:14px;opacity:1}.planning-ending{min-height:90svh}.planning-ending>p:not(.planning-kicker){font-size:clamp(28px,4vw,52px);padding:35px 45px;background:var(--glass);border:1px solid var(--glass-border);border-radius:28px;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}.planning-ending button{border-radius:40px;padding:18px 30px}
.planning-hint-dialog{position:fixed;inset:0;margin:auto;width:min(420px,88vw);padding:65px 38px 45px;color:#294e49;background:#eef2dfd9;border:1px solid #fffff5a6;border-radius:28px;backdrop-filter:blur(25px);-webkit-backdrop-filter:blur(25px);box-shadow:0 25px 100px #0e302740;font-family:SimSun,serif}.planning-hint-dialog::backdrop{background:#18382e66;backdrop-filter:blur(10px)}.planning-hint-dialog h2{font-size:25px;font-weight:400;margin:0 0 25px}.planning-hint-dialog p{font-size:16px;line-height:2}.planning-hint-dialog button{position:absolute;top:17px;right:20px;border:0;background:none;font:13px SimSun;color:inherit;cursor:pointer;padding:10px}.planning-hint-dialog[open]{animation:planning-modal-arrive .45s ease both}
@supports(animation-timeline:view()){.timeline-card,.planning-monologue>div,.oasis-heading,.oasis-photo,.planning-ending>p{animation:planning-scroll-reveal both;animation-timeline:view();animation-range:entry 0% entry 85%}}
@keyframes planning-scroll-reveal{from{opacity:.15;transform:translateY(65px) scale(.97);filter:blur(5px)}to{opacity:1;transform:translateY(0) scale(1);filter:blur(0)}}@keyframes planning-title-arrive{from{opacity:0;filter:blur(10px);translate:0 35px}to{opacity:1;filter:blur(0);translate:0 0}}@keyframes planning-orbit{from{rotate:-8deg;translate:0 -12px}to{rotate:8deg;translate:0 14px}}@keyframes planning-modal-arrive{from{opacity:0;transform:translateY(15px) scale(.97)}to{opacity:1;transform:none}}
@media(max-width:650px){.planning-landscape{filter:blur(7px) saturate(.65) sepia(.13);background-position:46% center}.hero-note{left:auto;right:8%;padding:20px 25px;bottom:16%}.timeline-body li{width:calc(100% - 65px);min-height:210px;margin-left:65px!important}.timeline-body li:nth-child(even){text-align:left}.timeline-body svg{width:48px;left:0}.timeline-card{padding:24px;border-radius:23px}.timeline-body h3{font-size:23px}.timeline-body p{font-size:14px}.timeline-body time{font-size:11px}.planning-monologue{min-height:720px;padding:80px 6%}.planning-monologue>div{padding:30px 22px;width:100%;border-radius:26px}.planning-monologue p{font-size:18px}.planning-monologue>span{left:0;top:0}.oasis-heading{margin:0 6% 50px;padding:30px 24px}.oasis-heading h2{font-size:38px}.oasis-photo button{border-radius:20px}.oasis-section{border-radius:34px 34px 0 0}.planning-ending>p:not(.planning-kicker){font-size:25px;padding:28px 20px}}
@media(prefers-reduced-motion:reduce){.planning-scene *, .planning-hint-dialog[open]{animation:none!important;transition:none!important;scroll-behavior:auto!important}.planning-landscape,.planning-hero h1{transform:none}.after-twenty{stroke-dashoffset:0!important}.timeline-tracer{display:none}}
html[data-motion=reduced] .planning-scene *,html[data-motion=reduced] .planning-hint-dialog[open]{animation:none!important;transition:none!important;scroll-behavior:auto!important}html[data-motion=reduced] .planning-landscape,html[data-motion=reduced] .planning-hero h1{transform:none}html[data-motion=reduced] .after-twenty{stroke-dashoffset:0!important}html[data-motion=reduced] .timeline-tracer{display:none}
/* Mobile composition: a full-width wandering thread and staggered glass notes. */
.planning-scene .hero-note,.planning-scene .planning-monologue>div,.planning-scene .oasis-heading,.planning-scene .planning-ending>p:not(.planning-kicker){background:none;border:0;box-shadow:none;border-radius:0;backdrop-filter:none;-webkit-backdrop-filter:none;padding:0}
.planning-scene .oasis-controls button{background:none;backdrop-filter:none;-webkit-backdrop-filter:none;border-color:currentColor}
.planning-hint-dialog{background:#edf0e4;backdrop-filter:none;-webkit-backdrop-filter:none}.planning-hint-dialog::backdrop{backdrop-filter:none}
.planning-scene .bridge-hint{position:relative;display:inline-flex;align-items:center;min-height:34px;margin:4px 0 -8px;padding:0 3px;border:0;background:none;font-family:inherit;font-size:10px;font-weight:400;line-height:1.4;letter-spacing:.03em;color:inherit;opacity:.58;text-decoration:none}.bridge-hint:after{content:'';position:absolute;inset:-5px -10px}.planning-scene .bridge-hint:hover,.planning-scene .bridge-hint:focus-visible{opacity:1}
.timeline-body svg{width:100%;left:0;stroke-width:1.5;filter:none;pointer-events:none}.timeline-node{fill:#e7ecdb;stroke:#6b886e;stroke-width:1.3}.past-node{opacity:.5}.timeline-tracer{r:3px}.planning-timeline{padding-bottom:35px}.timeline-body li{min-height:270px}.timeline-card{animation:none!important;transform:none;filter:none;transition:opacity .9s ease,translate 1.3s cubic-bezier(.2,.7,.2,1)}.timeline-card:not(.revealed){opacity:.15;translate:0 20px}.timeline-card.revealed{translate:0 0}.past .timeline-card>*{opacity:.5}.past .timeline-card{opacity:1}.planning-ending button{min-height:48px}
@media(max-width:760px){
 .planning-nav{padding-left:7%;height:calc(72px + env(safe-area-inset-top));padding-top:env(safe-area-inset-top)}
 .planning-hero{min-height:650px;height:100svh;padding:140px 7% 80px}.planning-hero h1{font-size:clamp(42px,12.4vw,78px);line-height:1.45;margin:55px 0 0;letter-spacing:.015em}.planning-hero h1 em{margin-left:1em}.planning-kicker{font-size:9px;letter-spacing:.13em}.hero-note{right:8%;left:auto;bottom:20%;font-size:13px;line-height:2}.scroll-note{bottom:48px;font-size:10px}.hero-orbit{top:30%;right:-8%;width:70vw;height:70vw}.hero-orbit span{font-size:70vw}
 .planning-timeline{padding:55px 6% 0}.planning-timeline h2{font-size:27px;margin:20px 0 60px;line-height:1.5}.timeline-body{width:100%}.timeline-body svg{inset:0;width:100%;height:100%}.timeline-body li{width:75%;min-height:270px;padding:18px 0;margin:0!important}.timeline-body li:nth-child(even){margin-left:25%!important;text-align:left}.timeline-card{border-radius:22px;padding:22px 20px;background:var(--glass);box-shadow:0 8px 28px #203b2510;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}.timeline-body time{font-size:10px;letter-spacing:.1em}.timeline-body h3{font-size:22px;margin:14px 0 8px;line-height:1.3}.timeline-body p{font-size:12px;line-height:1.9;overflow-wrap:anywhere}.birthday strong{font-size:45px}.timeline-body .continued{min-height:150px}.timeline-body .continued p{font:italic 19px Georgia;white-space:nowrap}.timeline-body .continued .timeline-card{padding-top:28px}
 .planning-monologue{position:relative;min-height:620px;gap:0;padding:90px 9%}.planning-monologue>div{width:100%;max-width:400px}.planning-monologue p{font-size:clamp(16px,4.35vw,21px);line-height:2.3;margin:0 0 28px}.planning-monologue>span{font-size:140px;top:20px;left:3%;opacity:.3}.planning-monologue em{white-space:nowrap}
 .oasis-section{padding-top:65px;border-radius:0;background:transparent!important}.oasis-heading{margin:0 8% 48px;max-width:none}.oasis-heading h2{font-size:38px;margin:20px 0 28px}.oasis-heading>p:not(.planning-kicker){font-size:13px;line-height:2.15;max-width:35em}.oasis-controls{margin:0 7% 24px;gap:10px;font-size:10px}.oasis-controls b{margin-left:10px}.oasis-controls button{font-size:10px;padding:12px;min-height:40px;margin-left:4px}.oasis-strip{padding:0 7% 22px;gap:16px}.oasis-photo,.oasis-photo.portrait{flex-basis:82vw}.oasis-photo button,.oasis-photo.wide button{height:min(480px,62svh);border-radius:18px}.oasis-photo.wide img{object-fit:contain}.oasis-source{margin:24px 8% 0;font-size:12px;min-height:44px;padding:12px 0}
 .planning-ending{min-height:75svh;padding:90px 7% calc(40px + env(safe-area-inset-bottom))}.planning-ending>p:not(.planning-kicker){font-size:clamp(21px,5.9vw,30px);line-height:1.8;margin:0 0 42px;white-space:nowrap}.planning-ending button{font:13px SimSun,serif;padding:16px 30px;border-radius:40px}.planning-ending small{font-size:8px;margin-top:70px;letter-spacing:.12em}
}
@media(max-width:350px){.timeline-card{padding:21px 16px}.timeline-body h3{font-size:20px}.timeline-body p{font-size:11px}.planning-timeline h2{font-size:24px}.planning-monologue{padding-left:7%;padding-right:7%}}
@media(prefers-reduced-motion:reduce){.timeline-card:not(.revealed){opacity:1;translate:none}}html[data-motion=reduced] .timeline-card:not(.revealed){opacity:1;translate:none}
