:root{color-scheme:dark;--bg:#101923;--ink:#f2eee5;--gold:#d7b779;--blue:#b7d4e8;--muted:#b8bcc0;--line:#665c48;font-family:-apple-system,BlinkMacSystemFont,'Hiragino Kaku Gothic ProN','Yu Gothic',sans-serif;color:var(--ink);background:var(--bg)}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(ellipse at 12% 42%,#20303a55,transparent 48%),radial-gradient(ellipse at 86% 85%,#35414944,transparent 46%),linear-gradient(120deg,#101c26,#090f15 50%,#14202a);font-size:16px;line-height:1.85}header{height:90px;padding:20px 5%;display:flex;align-items:center;justify-content:space-between;max-width:1100px;margin:auto}.brand{font-family:'Hiragino Mincho ProN','Yu Mincho',serif;font-size:32px;letter-spacing:.2em;text-decoration:none;color:var(--ink)}button,input,a{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}main{max-width:640px;margin:auto;padding:0 30px}h1,h2{font-family:'Hiragino Mincho ProN','Yu Mincho',serif;font-weight:400}h1{text-align:center;font-size:clamp(29px,4.5vw,42px);letter-spacing:.06em;line-height:1.65;margin:8px 0 16px}h2{font-size:25px;line-height:1.65;margin:0 0 16px}.intro{text-align:center;font-size:18px;letter-spacing:.055em;line-height:1.85;margin:0 0 14px}.wheel{max-width:370px;margin:8px auto 18px;aspect-ratio:1}.wheel svg{width:100%;height:100%;overflow:visible}.wheel text{font-family:'Hiragino Mincho ProN','Yu Mincho',serif;fill:var(--ink)}form{max-width:460px;margin:auto}.field{margin-bottom:18px}label{display:block;font-size:16px;letter-spacing:.04em;margin-bottom:7px}input{width:100%;height:56px;background:#ffffff04;color:var(--ink);border:1px solid #828d97;border-radius:5px;padding:12px 15px;font-size:19px;font-family:inherit;letter-spacing:.07em}input::placeholder{color:#909aa5}input[aria-invalid=true]{border-color:#ffb9a7}.primary{display:flex;align-items:center;justify-content:center;gap:20px;width:100%;min-height:60px;border:1px solid #e5cd98;border-radius:7px;background:linear-gradient(110deg,#e1c78f,#c5a561);color:#111c24;font-family:'Hiragino Mincho ProN','Yu Mincho',serif;font-size:22px;text-decoration:none;padding:13px 15px;box-shadow:0 4px 25px #d7b77920}.primary svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.6;flex-shrink:0}.primary:hover{filter:brightness(1.09)}:focus-visible{outline:3px solid var(--blue);outline-offset:5px}.text-button{font:inherit;font-size:14px;border:0;border-bottom:1px solid #a8a49a;color:var(--ink);background:transparent;padding:8px 0;line-height:1.6}.privacy-note{font-size:12px;text-align:center;color:var(--muted);line-height:1.8;margin:16px 0 0}.mobile-only{display:none}footer{text-align:center;padding:24px 0 30px}.error{color:#ffb9a7;font-size:13px;line-height:1.65;margin:5px 0 0}.error:empty{display:none}.pair{display:grid;grid-template-columns:1fr 1fr;text-align:center;margin:0 auto 24px}.pair>div+div{border-left:1px solid var(--line)}.pair span{display:block;font-size:15px;letter-spacing:.1em}.pair strong{font-family:'Hiragino Mincho ProN','Yu Mincho',serif;font-size:34px;font-weight:400;color:var(--gold)}.pair>div+div strong{color:var(--blue)}.reading,.next{text-align:center;padding:26px 0;border-top:1px solid var(--line)}.reading p{font-size:17px;line-height:2.1;text-align:left;max-width:460px;margin:auto}.next p{font-size:16px;margin:0 0 20px}.next .primary{max-width:460px;margin:auto;font-size:19px}.restart{margin-top:20px}dialog{max-width:540px;width:calc(100% - 32px);max-height:85vh;overflow:auto;border:1px solid var(--line);border-radius:12px;padding:28px;background:#17232d;color:var(--ink)}dialog::backdrop{background:#02080cbb}dialog p{font-size:15px;line-height:1.9}.small{font-size:12px!important;color:var(--muted)}[hidden]{display:none!important}#result-title{font-size:clamp(27px,4.4vw,36px)}#result-screen .wheel{max-width:330px}#result-screen{animation:appear .55s ease-out}@keyframes appear{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media(max-width:480px){header{height:75px;padding:16px 24px}.brand{font-size:27px}main{padding:0 24px}h1{font-size:29px}.intro{font-size:15px}.wheel{max-width:285px;margin:12px auto 20px}h2{font-size:22px}.primary{font-size:20px}.mobile-only{display:block}#result-screen .wheel{max-width:285px}.reading p{font-size:16px}.next .primary{font-size:17px;gap:10px}.pair strong{font-size:30px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;scroll-behavior:auto!important}}

/* Motion v2: a short, interruptible constellation reveal. */
.primary{position:relative;overflow:hidden;transition:transform .2s,box-shadow .3s,filter .2s}.primary::before{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 30%,#fff5 48%,transparent 65%);transform:translateX(-120%);pointer-events:none}.primary:hover::before{animation:button-sheen .85s ease}.primary:hover{box-shadow:0 5px 32px #d7b77938;transform:translateY(-2px)}.primary:active{transform:translateY(1px)}input{transition:border-color .2s,box-shadow .2s}input:focus{border-color:var(--gold);box-shadow:0 0 22px #d7b77912}.inner-orbit{transform-origin:180px 180px;animation:orbit-drift 100s linear infinite}.star-point{animation:star-breathe 4s ease-in-out infinite;animation-delay:var(--twinkle-delay,0s)}.star-halo{filter:drop-shadow(0 0 4px #e4c88c);transform-box:fill-box;transform-origin:center}.their-halo{filter:drop-shadow(0 0 4px #b7d4e8)}.search-light{opacity:0;transform-origin:180px 180px;pointer-events:none}.reveal-status{text-align:center;font-size:14px;letter-spacing:.1em;color:var(--gold);margin:0;min-height:0}.reveal-status:empty{display:none}.skip-reveal{display:block;margin:12px auto 0;color:var(--muted);font-size:13px}.revealing .pair,.revealing .reading,.revealing .next{visibility:hidden}.revealing .search-light{animation:search-orbit 1.3s cubic-bezier(.2,.6,.3,1) both}.revealing .your-halo,.revealing .your-point{animation:star-arrive .65s .65s both}.revealing .their-halo,.revealing .their-point{animation:star-arrive .65s 1.15s both}.revealing .bond-line{stroke-dasharray:1;stroke-dashoffset:1;animation:draw-bond .75s 1.45s ease both}.revealing .wheel-caption{opacity:0}.revealed .wheel-caption{animation:quiet-arrive .6s ease both}.revealed .pair{animation:quiet-arrive .6s .1s both}.revealed .reading{animation:quiet-arrive .6s .22s both}.revealed .next{animation:quiet-arrive .6s .32s both}.revealed .bond-line{filter:drop-shadow(0 0 3px #d7b77988)}
@keyframes button-sheen{to{transform:translateX(120%)}}@keyframes orbit-drift{to{transform:rotate(360deg)}}@keyframes star-breathe{0%,100%{opacity:.65}50%{opacity:1}}@keyframes search-orbit{0%{opacity:0;transform:rotate(-90deg)}15%{opacity:.9}85%{opacity:.9}100%{opacity:0;transform:rotate(360deg)}}@keyframes star-arrive{0%{opacity:0}70%{opacity:1;filter:drop-shadow(0 0 8px #f3d59a)}100%{opacity:1}}@keyframes draw-bond{to{stroke-dashoffset:0}}@keyframes quiet-arrive{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){*,*::before{animation:none!important;transition:none!important}.primary:hover{transform:none}.star-point{opacity:1}}

footer{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 24px}footer a{text-decoration:none}.policy{padding-bottom:48px}.policy h1{font-size:28px}.policy section{padding:24px 0;border-top:1px solid var(--line)}.policy h2{font-size:22px}.policy a:not(.primary){color:var(--blue);overflow-wrap:anywhere}.policy p{line-height:1.95}

/* Secondary footer links: compact text, comfortable tap targets. */
footer .text-button{font-size:8px;min-height:44px;display:inline-flex;align-items:center;color:var(--muted);border-bottom:0;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
