:root{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#353148;background:#f7f8fc;font-synthesis:none;--ink:#353148;--muted:#746d88;--surface:#ffffff88;--line:#67588926;--primary:#746399;--paper:#ffffffa6;--dialog:#f8f6fc;--shadow:#59438214;color-scheme:light}*{box-sizing:border-box}html[data-theme=dark]{color-scheme:dark;--ink:#f0eafa;--muted:#b6aac9;--surface:#211d3499;--line:#d7bff729;--primary:#c5a9ed;--paper:#1f1c2fb3;--dialog:#211d30;--shadow:#0003;background:#121321}body{margin:0;min-height:100svh;color:var(--ink);display:flex;flex-direction:column;isolation:isolate;-webkit-tap-highlight-color:transparent}button,textarea,select,input{font:inherit}button,a,textarea,select,input{touch-action:manipulation}button{cursor:pointer;color:inherit;border:0;background:none}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible{outline:2px solid var(--primary);outline-offset:6px}button:disabled{cursor:default;opacity:.5}svg{width:21px;height:21px;stroke:currentColor;stroke-width:1.45;fill:none;stroke-linecap:round;stroke-linejoin:round}.atmosphere{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none;background:radial-gradient(ellipse at 7% 15%,#f8d9ebaa,transparent 51%),radial-gradient(ellipse at 95% 17%,#d7e6fbb0,transparent 51%),radial-gradient(ellipse at 48% 100%,#e4ddf699,transparent 65%)}.texture{position:absolute;inset:0;background:url('ambient.webp') center/cover;opacity:.53}.wash{position:absolute;border-radius:50%;width:65vw;height:65vw;max-height:750px;max-width:750px;opacity:.25;background:radial-gradient(closest-side,#e5bce5,transparent);animation:drift 22s ease-in-out infinite alternate}.wash-one{inset:20% auto auto -25%}.wash-two{inset:8% -30% auto auto;background:radial-gradient(closest-side,#b6d7ff,transparent);animation-delay:-12s}[data-theme=dark] .atmosphere{background:radial-gradient(ellipse at 12% 5%,#38254388,transparent 55%),radial-gradient(ellipse at 90% 30%,#24365766,transparent 60%),#121321}[data-theme=dark] .texture{opacity:.07;mix-blend-mode:screen}[data-theme=dark] .wash{opacity:.07}header{display:flex;justify-content:space-between;align-items:center;padding:30px 5vw;gap:16px}.brand{display:flex;align-items:center;gap:11px;color:inherit;text-decoration:none;font-size:17px;font-weight:600;letter-spacing:.07em}.brand-symbol{font-size:30px;font-weight:400;color:var(--primary)}nav{display:flex;align-items:center;gap:18px}.nav-button{display:flex;align-items:center;gap:9px;font-size:14px;min-height:44px;padding:0 7px;color:var(--muted)}.icon-button{display:grid;place-items:center;width:44px;height:44px;flex-shrink:0;border-radius:50%;background:var(--surface);border:1px solid var(--line);font-size:26px;transition:transform .18s,background .18s}.icon-button:active,.primary:active{transform:scale(.96)}#count{font-size:12px;background:var(--surface);border-radius:20px;padding:3px 7px}main{flex:1;display:flex;justify-content:center}.ritual{width:min(100%,640px);padding:29px 28px 28px;text-align:center}.eyebrow{display:flex;align-items:center;justify-content:center;gap:12px;font-size:11px;letter-spacing:.22em;color:var(--muted);line-height:1.7}.eyebrow>span:first-child,.eyebrow>span:last-child{height:1px;width:24px;background:var(--line)}h1{font-family:ui-serif,"Songti SC","Noto Serif CJK SC","Yu Mincho",Georgia,serif;font-size:clamp(30px,4.5vw,47px);font-weight:450;letter-spacing:.035em;line-height:1.35;margin:18px 0 13px;text-wrap:balance}.subtitle{font-size:15px;line-height:1.7;color:var(--muted);margin:0;text-wrap:balance}.orb-stage{position:relative;width:min(100%,370px);height:290px;margin:19px auto 0;display:grid;place-items:center;isolation:isolate}.orb{position:relative;width:198px;height:198px;border-radius:50%;padding:0;outline-offset:10px;touch-action:none;user-select:none;-webkit-user-select:none;z-index:2;transition:transform .65s cubic-bezier(.2,.8,.2,1)}.orb-surface{display:block;position:absolute;inset:0;border-radius:inherit;background:radial-gradient(circle at 36% 23%,#fff9ed 0%,#ffead7 17%,#f3c7dc 43%,#bdb6e5 72%,#93bce3 100%);box-shadow:inset 2px 4px 9px #ffffffc9,inset -8px -10px 24px #9e9ac756,0 22px 55px #a190c325;animation:breathe 6s ease-in-out infinite;overflow:hidden;transition:box-shadow .6s}.orb-light{position:absolute;inset:15%;border-radius:50%;background:radial-gradient(circle,#fffbe5,transparent 70%);opacity:.48;transform:scale(.8);transition:opacity .3s,transform 1.6s}.orb-sheen{position:absolute;inset:5px;border-radius:50%;border:1px solid #ffffff5e;background:linear-gradient(140deg,#ffffff40,transparent 46%)}.orb-spark{position:absolute;inset:0;display:grid;place-items:center;color:#fff9ec;font-size:35px;text-shadow:0 0 24px #fff;opacity:.8}.orb-aura{position:absolute;width:290px;height:290px;z-index:-1;border-radius:50%;background:radial-gradient(closest-side,#e6cbe260,transparent);transition:transform 1.6s,opacity .7s}.orbit{position:absolute;width:300px;height:250px;border:1px solid var(--line);border-radius:50%;transform:rotate(-27deg);opacity:.65;pointer-events:none}.orbit-two{width:344px;height:220px;transform:rotate(28deg);opacity:.28}.little-star{position:absolute;color:#a394be;font-size:22px}.star-one{inset:50px auto auto 27px}.star-two{inset:auto 23px 61px auto;font-size:15px}.orb-shadow{position:absolute;width:105px;height:12px;bottom:22px;background:radial-gradient(ellipse,#7761a223,transparent 70%);transition:transform 1.6s,opacity .6s}.progress-ring{position:absolute;inset:-21px;width:240px;height:240px;transform:rotate(-90deg);overflow:visible}.progress-ring circle{stroke:var(--primary);stroke-width:1.6;stroke-dasharray:716.284;stroke-dashoffset:716.284;opacity:.75}.holding .orb{transform:scale(.92)}.holding .orb-light{transform:scale(1.75);opacity:1}.holding .orb-aura{transform:scale(1.35);opacity:.8}.holding .orb-surface,.ready .orb-surface{animation-play-state:paused}.ready .orb{transform:scale(1.04)}.ready .orb-surface{box-shadow:inset 2px 4px 9px #ffffffc9,0 0 70px #f6d6e080}.ready .orb-light{transform:scale(1.6);opacity:1}.ripple{position:absolute;width:208px;height:208px;border:1px solid var(--primary);border-radius:50%;opacity:0;pointer-events:none}.releasing .ripple{animation:ripple 1.8s ease-out forwards}.releasing .orb{animation:release 2.2s cubic-bezier(.32,0,.25,1) forwards;pointer-events:none}.releasing .orb-shadow{opacity:0;transform:scale(.4)}.releasing .orbit{transition:opacity .6s;opacity:0}.particle{position:absolute;left:50%;top:50%;width:3px;height:3px;border-radius:50%;background:var(--primary);opacity:0;pointer-events:none}.releasing .particle{animation:particle 1.8s ease-out forwards;animation-delay:var(--delay)}.done .orb-stage{height:190px;margin-top:5px}.done .orb{transform:scale(.42);pointer-events:none}.done .orb-surface{animation:none}.done .orbit,.done .orb-shadow,.done .little-star{opacity:0}.done .orb-aura{transform:scale(.55)}.cue-wrap{min-height:65px;margin:0 auto 14px}#cue{font-size:14px;color:var(--muted);margin:0 0 8px;min-height:22px;line-height:1.6}.text-button{display:block;margin:0 auto;min-height:44px;font-size:14px;color:var(--muted);text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:5px;padding:5px 12px}.composition{max-width:450px;margin:auto;background:var(--paper);border:1px solid #ffffff70;box-shadow:0 12px 35px var(--shadow);border-radius:20px;padding:21px 23px 13px;text-align:start;transition:transform .3s,box-shadow .3s,border-color .3s}.composition:focus-within{transform:translateY(-3px);border-color:#ad9bc169;box-shadow:0 15px 45px var(--shadow)}textarea{display:block;resize:none;width:100%;min-height:66px;max-height:145px;padding:0;outline:none;border:0;background:transparent;color:var(--ink);font-size:16px;line-height:1.7}textarea::placeholder{color:var(--muted);opacity:.8}.paper-foot{display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:12px;opacity:.8;margin-top:8px}.small-star{font-size:20px}.response{max-width:450px;margin:auto;animation:appear .8s ease both}.response-mark{color:var(--primary);font-size:22px}#wishEcho{font-size:17px;line-height:1.8;white-space:pre-wrap;overflow-wrap:anywhere;max-height:180px;overflow:auto;margin:14px 0;color:var(--muted)}.blessing{font-family:ui-serif,"Songti SC",Georgia,serif;font-size:23px;line-height:1.65;margin:20px 0 26px;text-wrap:balance}.primary{min-height:48px;border-radius:30px;padding:12px 30px;background:var(--ink);color:var(--dialog);font-size:14px;transition:transform .2s}.response .text-button{margin-top:12px}.done .cue-wrap{display:none}footer{display:flex;align-items:center;justify-content:center;gap:9px;padding:25px 5vw 28px;color:var(--muted);font-size:12px;position:relative}.sound-button{position:absolute;inset-inline-end:5vw;display:flex;gap:8px;align-items:center;min-height:44px;font-size:12px;color:var(--muted)}.sound-button svg{width:16px;height:16px}.sound-button[aria-pressed=true]{color:var(--primary)}dialog{width:min(460px,calc(100% - 32px));border:1px solid var(--line);border-radius:26px;background:var(--dialog);color:var(--ink);padding:27px;box-shadow:0 30px 100px #1b112b2b;max-height:85svh;overflow:auto}dialog[open]{animation:appear .25s ease}dialog::backdrop{background:#1610213f;backdrop-filter:blur(5px)}.dialog-head{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:20px}h2{font-size:22px;font-weight:550;margin:0}.setting-row{display:flex;justify-content:space-between;align-items:center;gap:18px;min-height:76px;border-bottom:1px solid var(--line);font-size:15px}.setting-row label{flex:1}.setting-row select{max-width:57%;padding:10px;border:1px solid var(--line);border-radius:10px;color:var(--ink);background:var(--surface);font-size:14px;min-height:44px}.setting-row input{appearance:none;width:44px;height:26px;border-radius:20px;background:#a9a0b5;position:relative;cursor:pointer;flex-shrink:0}.setting-row input:before{content:'';position:absolute;width:20px;height:20px;border-radius:50%;background:white;top:3px;left:3px;transition:transform .2s}.setting-row input:checked{background:#8871af}.setting-row input:checked:before{transform:translateX(18px)}.privacy{font-size:13px;color:var(--muted);line-height:1.7;margin:20px 0 0}.archive-dialog{width:min(550px,calc(100% - 32px))}.archive-dialog .privacy{margin:0 0 20px}.empty{text-align:center;color:var(--muted);padding:55px 15px;line-height:1.8}.wish-card{padding:20px 0;border-top:1px solid var(--line)}.wish-card time{font-size:12px;color:var(--muted)}.wish-card p{white-space:pre-wrap;overflow-wrap:anywhere;font-size:16px;line-height:1.7}.wish-card .wish-blessing{font-size:14px;color:var(--muted)}.wish-actions{display:flex;gap:9px;flex-wrap:wrap}.wish-actions button{font-size:14px;border:1px solid var(--line);border-radius:20px;padding:9px 13px;min-height:44px}.wish-actions button.active{background:var(--primary);color:var(--dialog)}#toast{position:fixed;bottom:26px;left:50%;transform:translate(-50%,20px);max-width:calc(100% - 32px);padding:13px 22px;border:1px solid var(--line);border-radius:18px;background:var(--dialog);box-shadow:0 8px 30px var(--shadow);font-size:14px;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;z-index:5;text-align:center}#toast.visible{opacity:1;transform:translate(-50%,0)}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.paused *{animation-play-state:paused!important}.low-motion .wash{animation:none}.low-motion .particle{display:none}.typing .wash{animation-play-state:paused}@keyframes breathe{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes drift{to{transform:translate(6%,8%)}}@keyframes ripple{0%{opacity:.45;transform:scale(.8)}100%{opacity:0;transform:scale(1.8)}}@keyframes release{0%{transform:scale(1.04);opacity:1}35%{transform:translateY(-15px) scale(.38);opacity:1}100%{transform:translateY(-150px) scale(.025);opacity:0}}@keyframes particle{0%{opacity:0;transform:translate(0,0)}15%{opacity:.8}100%{opacity:0;transform:translate(var(--x),var(--y))}}@keyframes appear{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@media(min-height:900px) and (min-width:700px){.ritual{padding-top:65px}.orb-stage{margin-top:32px;height:325px}.cue-wrap{margin-bottom:25px}}@media(max-width:600px){header{padding:18px 21px}.brand{font-size:15px;gap:8px}nav{gap:9px}.nav-button{font-size:14px;gap:6px}.ritual{padding:25px 24px 18px}.eyebrow{font-size:11px;letter-spacing:.16em}h1{font-size:32px;margin:17px 0 12px}.subtitle{font-size:15px}.orb-stage{height:270px;margin-top:15px;max-width:325px}.orb{width:182px;height:182px}.progress-ring{inset:-19px;width:220px;height:220px}.orbit{width:275px;height:226px}.orbit-two{width:310px;height:198px}.orb-shadow{bottom:21px}.star-one{left:9px}.star-two{right:8px}.composition{padding:18px 19px 10px;border-radius:18px}.cue-wrap{margin-bottom:15px}footer{padding:23px 20px max(24px,env(safe-area-inset-bottom));font-size:12px;justify-content:flex-start}.sound-button{inset-inline-end:20px}.blessing{font-size:22px}.done .orb-stage{height:155px}dialog{padding:23px}.setting-row{gap:10px}}@media(max-width:350px){header{padding:15px 12px}.nav-button span[data-t]{display:none}.ritual{padding-inline:17px}.orbit-two{width:280px}.orb-stage{max-width:285px}h1{font-size:28px}.sound-button span{display:none}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.releasing .orb{opacity:0}.particle{display:none}.done .orb{opacity:1}.orb-surface{transform:none}}@media(forced-colors:active){.orb{border:2px solid ButtonText}.orb-spark{color:ButtonText}.composition{border:1px solid CanvasText}.progress-ring circle{stroke:Highlight}}
@media(max-width:600px){.nav-button>span[data-t]{display:none}footer>span:not([aria-hidden]){max-width:62%;line-height:1.6}.brand{max-width:65%;letter-spacing:.035em}.brand>span:last-child{overflow-wrap:anywhere}.sound-button{max-width:30%;font-size:12px}.sound-button span{overflow-wrap:anywhere}}[dir=rtl] .eyebrow{letter-spacing:0}[dir=rtl] h1{letter-spacing:0}[data-theme=dark] .orb-surface{background:radial-gradient(circle at 36% 23%,#f4dbb9 0%,#d9b2cd 23%,#a58fbf 49%,#787daf 75%,#506c9c 100%);box-shadow:inset 2px 4px 9px #fff6, inset -8px -10px 24px #27254266,0 22px 55px #a190c318}[data-theme=dark] .composition{border-color:var(--line)}
