.hope-light{position:fixed;left:0;top:0;width:34px;height:34px;border-radius:50%;z-index:25;pointer-events:none;opacity:0;transform:translate3d(-100px,-100px,0) translate(-50%,-50%);background:radial-gradient(circle,#fff 0 9%,#d5ffe1 18%,#72e99b 30%,#1ea86466 46%,transparent 72%);filter:drop-shadow(0 0 7px #5cd98c);transition:opacity .3s ease}
.hope-light::after{content:'';position:absolute;inset:14px;border-radius:50%;background:#fff;box-shadow:0 0 6px 2px #dcffe7,0 0 13px 5px #7ee6a6}
.hope-light.is-visible{opacity:.95}
.hope-light.is-bursting{opacity:0;transition:opacity .08s}
.hope-burst{position:fixed;left:0;top:0;width:1px;height:1px;z-index:26;pointer-events:none;transform:translate3d(var(--x),var(--y),0);animation:hope-burst-life .65s both}
.hope-burst::before{content:'';position:absolute;left:-4px;top:-4px;width:8px;height:8px;border:2px solid #30a96a;border-radius:50%;box-shadow:0 0 12px 3px #b0f4c6;animation:hope-burst-ring .5s ease-out both}
.hope-burst i{position:absolute;left:-3px;top:-3px;width:6px;height:6px;border-radius:50%;background:#e5ffed;box-shadow:0 0 0 1px #28985f,0 0 9px 3px #65df97;animation:hope-burst-spark .55s ease-out both}
@keyframes hope-burst-life{0%,70%{opacity:1}100%{opacity:0}}
@keyframes hope-burst-ring{to{opacity:0;transform:scale(6)}}
@keyframes hope-burst-spark{to{opacity:0;transform:translate(var(--dx),var(--dy)) scale(.45)}}
.motion-off .hope-light,.motion-off .hope-burst{display:none}
@media(hover:none),(pointer:coarse),(prefers-reduced-motion:reduce){.hope-light,.hope-burst{display:none!important}}

/* A fine woven light field, with image-free opening and no visible controls. */
html.dg-entering,html.dg-entering body{overflow:hidden!important}
.dg-welcome{position:fixed;inset:0;z-index:10000;overflow:hidden;isolation:isolate;animation:dg-door-open .1s 3.85s both;contain:layout paint}
.dg-curtain{position:absolute;inset:0 auto 0 0;width:50.2%;background:#083d32;z-index:-3;will-change:transform}
.dg-curtain-left{animation:dg-curtain-left .85s 3s cubic-bezier(.75,0,.2,1) both}
.dg-curtain-right{left:auto;right:0;animation:dg-curtain-right .85s 3s cubic-bezier(.75,0,.2,1) both}
.dg-silk-light{position:absolute;inset:0;z-index:-2;background:radial-gradient(ellipse at 67% 44%,#699b6f20,transparent 60%),linear-gradient(90deg,#052d2520,transparent);animation:dg-silk-out .5s 2.8s both}
.dg-thread-field{position:absolute;inset:-12% -12%;z-index:-1;pointer-events:none;animation:dg-silk-field 3.2s cubic-bezier(.2,.6,.3,1) both;transform-origin:65% 50%}
.dg-thread-field svg{width:100%;height:100%;display:block}
.dg-thread{stroke-width:.8;stroke-dasharray:1;stroke-dashoffset:1;animation:dg-thread-draw 1.8s var(--trace-delay) cubic-bezier(.2,.65,.25,1) both}
.dg-thread-secondary{stroke-width:.55;opacity:.16}
.dg-silk-copy{position:absolute;left:clamp(30px,11vw,180px);top:48%;transform:translateY(-50%);color:#f3f1de;animation:dg-silk-out .5s 2.8s both}
.dg-silk-label,.dg-silk-caption{margin:0;font-size:clamp(10px,1vw,13px);font-weight:400;letter-spacing:.19em;line-height:1.8;color:#cad7bc;animation:dg-silk-label .9s .6s both}
.dg-silk-label{margin-bottom:26px;letter-spacing:.24em}
.dg-silk-caption{margin-top:28px;animation-delay:1.2s;color:#e0e6cc}
.dg-silk-title{margin:0;font-family:'Kaisei Decol',serif;font-weight:500;font-size:clamp(48px,7.8vw,100px);letter-spacing:.12em;line-height:1.35;text-shadow:0 2px 28px #083d3270}
.dg-silk-title span{display:block;overflow:hidden;padding:0 .12em .08em 0}
.dg-silk-title i{display:block;font-style:normal;animation:dg-silk-type 1.25s .25s cubic-bezier(.2,.75,.25,1) both}
.dg-silk-title span+span i{animation-delay:.45s}
.dg-silk-rule{position:absolute;left:11vw;right:11vw;bottom:11%;height:1px;background:linear-gradient(90deg,#c5d3b455,transparent);transform-origin:left;animation:dg-silk-rule 3.1s both}
@keyframes dg-thread-draw{to{stroke-dashoffset:0}}
@keyframes dg-silk-field{0%{opacity:0;transform:perspective(900px) rotateY(-14deg) rotate(-7deg) scale(1.05)}22%,83%{opacity:1}100%{opacity:0;transform:perspective(900px) rotateY(6deg) rotate(3deg) scale(1.12)}}
@keyframes dg-silk-type{from{opacity:0;transform:translateY(105%) skewY(5deg);filter:blur(4px)}to{opacity:1;transform:translateY(0) skewY(0);filter:blur(0)}}
@keyframes dg-silk-label{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@keyframes dg-silk-out{to{opacity:0}}
@keyframes dg-silk-rule{0%{opacity:0;transform:scaleX(0)}40%,85%{opacity:1;transform:scaleX(1)}100%{opacity:0;transform:scaleX(1)}}
@keyframes dg-curtain-left{to{transform:translateX(-101%)}}
@keyframes dg-curtain-right{to{transform:translateX(101%)}}
@keyframes dg-door-open{to{opacity:0;visibility:hidden;pointer-events:none}}
@media(max-width:600px){.dg-thread-field{inset:-5% -48%;transform-origin:65% 50%}.dg-silk-copy{left:9vw;top:46%}.dg-silk-title{font-size:clamp(44px,13vw,70px);letter-spacing:.1em}.dg-silk-label{font-size:10px;letter-spacing:.14em;margin-bottom:23px}.dg-silk-caption{font-size:11px;margin-top:23px}.dg-silk-rule{left:9vw;right:9vw}}
@media(max-height:450px){.dg-silk-copy{top:47%}.dg-silk-title{font-size:40px;line-height:1.2}.dg-silk-label{margin-bottom:12px;font-size:9px}.dg-silk-caption{margin-top:10px;font-size:10px}.dg-silk-rule{bottom:7%}}
@media(prefers-reduced-motion:reduce){.dg-welcome{display:none!important}html.dg-entering,html.dg-entering body{overflow:visible!important}}
