*{margin:0;padding:0;box-sizing:border-box}:root{--bg: #06040f;--deep: #0b0820;--purple-dark: #1a1035;--purple-mid: #2d1f5e;--purple-accent: #7c5cbf;--gold: #c9a84c;--gold-light: #e8c97a;--text: #e8e0f5;--text-dim: #9b8fc0;--glow: rgba(124, 92, 191, .4);--content-max: 920px}html,body,#root{height:100%}body{background:var(--bg);min-height:100vh;display:flex;align-items:center;justify-content:center;font-family:Cormorant Garamond,serif;overflow:hidden}.app{width:100vw;height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.stars{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden}.star{position:absolute;border-radius:50%;background:#fff;animation:twinkle var(--dur) ease-in-out infinite var(--delay)}@keyframes twinkle{0%,to{opacity:var(--min-op);transform:scale(1)}50%{opacity:var(--max-op);transform:scale(1.3)}}.nebula{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(ellipse 60% 50% at 30% 40%,rgba(45,31,94,.6) 0%,transparent 70%),radial-gradient(ellipse 50% 60% at 75% 65%,rgba(26,16,53,.7) 0%,transparent 70%),radial-gradient(ellipse 80% 40% at 50% 20%,rgba(15,10,35,.5) 0%,transparent 60%)}.vignette{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(ellipse 80% 80% at 50% 50%,transparent 40%,rgba(6,4,15,.85) 100%)}.content{position:relative;z-index:10;display:flex;flex-direction:column;align-items:center;gap:40px;padding:40px 24px;max-width:var(--content-max);width:100%}.eyebrow{font-family:Cinzel,serif;font-size:10px;letter-spacing:.35em;color:var(--gold);text-transform:uppercase;opacity:.7;animation:fadeIn 1s ease both}.message-wrap{position:relative;text-align:center;width:100%}.message-glow{position:absolute;top:-60px;right:-60px;bottom:-60px;left:-60px;background:radial-gradient(ellipse at center,var(--glow) 0%,transparent 70%);pointer-events:none;animation:pulseGlow 4s ease-in-out infinite}@keyframes pulseGlow{0%,to{opacity:.5;transform:scale(.95)}50%{opacity:1;transform:scale(1.05)}}.reading{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:28px;transition:opacity .4s ease,transform .4s ease}.reading.fading{opacity:0;transform:translateY(-10px)}.reading.appearing{opacity:0;transform:translateY(10px)}.hexagram{display:flex;flex-direction:column;gap:7px;filter:drop-shadow(0 0 18px rgba(201,168,76,.35))}.hex-line{display:flex;gap:14px;width:96px;height:11px}.hex-line .seg{flex:1;background:linear-gradient(90deg,var(--gold),var(--gold-light))}.hex-line.yang{gap:0}.hex-meta{display:flex;align-items:baseline;gap:14px;font-family:Cinzel,serif;color:var(--gold-light)}.hex-number{font-size:13px;color:var(--gold);opacity:.7}.hex-name{font-size:15px;letter-spacing:.22em;text-transform:uppercase}.message{font-family:Cormorant Garamond,serif;font-size:clamp(22px,3.2vw,38px);font-weight:300;line-height:1.5;color:var(--text);letter-spacing:.01em;white-space:pre-line;text-align:center;text-shadow:0 0 40px rgba(124,92,191,.5)}.ornament{display:flex;align-items:center;gap:12px;opacity:.4}.ornament-line{width:60px;height:1px;background:linear-gradient(90deg,transparent,var(--gold))}.ornament-line.right{background:linear-gradient(90deg,var(--gold),transparent)}.ornament-dot{width:4px;height:4px;border-radius:50%;background:var(--gold)}.actions{display:flex;gap:12px;align-items:center}.btn{font-family:Cinzel,serif;font-size:9px;letter-spacing:.25em;text-transform:uppercase;padding:10px 22px;border:1px solid rgba(124,92,191,.4);background:#2d1f5e33;color:var(--text-dim);cursor:pointer;transition:all .2s ease;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.btn:hover{border-color:var(--gold);color:var(--gold-light);background:#2d1f5e66;box-shadow:0 0 20px #c9a84c26}.btn:active{transform:scale(.97)}.btn.copied,.btn.active{border-color:var(--gold);color:var(--gold-light)}.index-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;display:flex;align-items:center;justify-content:center;padding:24px;background:#06040fb8;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);animation:fadeIn .25s ease both}.index-panel{background:#0b0820f7;border:1px solid rgba(124,92,191,.4);box-shadow:0 0 60px #7c5cbf47;padding:26px;max-width:460px;width:100%}.index-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.index-title{font-family:Cinzel,serif;font-size:11px;letter-spacing:.3em;text-transform:uppercase;color:var(--gold)}.index-close{background:none;border:none;color:var(--text-dim);font-size:13px;cursor:pointer;padding:4px 8px;transition:color .2s ease}.index-close:hover{color:var(--gold-light)}.index-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:6px}.idx-cell{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-family:Cormorant Garamond,serif;font-size:16px;color:var(--text-dim);background:#2d1f5e2e;border:1px solid transparent;cursor:pointer;transition:color .15s ease,background .15s ease,border-color .15s ease,box-shadow .15s ease}.idx-cell:hover{color:var(--gold-light);border-color:#c9a84c80;background:#2d1f5e66}.idx-cell.current{color:var(--bg);background:linear-gradient(135deg,var(--gold),var(--gold-light));border-color:var(--gold-light);box-shadow:0 0 16px #c9a84c80;font-weight:600}.tap-hint{font-family:Cormorant Garamond,serif;font-style:italic;font-size:13px;color:var(--text-dim);opacity:.5;animation:breathe 3s ease-in-out infinite;letter-spacing:.05em}@keyframes breathe{0%,to{opacity:.3}50%{opacity:.6}}.toast{position:fixed;bottom:32px;left:50%;transform:translate(-50%) translateY(20px);background:#2d1f5ef2;border:1px solid var(--gold);color:var(--gold-light);font-family:Cinzel,serif;font-size:10px;letter-spacing:.2em;padding:10px 24px;opacity:0;transition:all .3s ease;pointer-events:none;z-index:100;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.toast.show{opacity:1;transform:translate(-50%) translateY(0)}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media (max-width: 480px){.content{gap:32px;padding:32px 20px}.ornament-line{width:40px}}
