:root{--bg: #0e2436;--bg-2: #122c42;--bg-3: #15334c;--surface: #1a3247;--surface-2: #1f3c54;--surface-3: #244a66;--surface-edge: #38617f;--line: rgba(244, 230, 196, .1);--line-strong: rgba(244, 230, 196, .22);--ink: #f5e6c4;--ink-2: #dcc998;--ink-3: #a89770;--ink-4: #6f6248;--brass: #e5b85b;--brass-hi: #f8d67a;--brass-lo: #b98e32;--candle: #ffd18a;--rose: #e8754a;--aurora: #b19be0;--sage: #8bb57e;--serif: "Newsreader", Georgia, serif;--display: "Cormorant Garamond", "Newsreader", Georgia, serif;--sans: "Source Sans 3", system-ui, -apple-system, sans-serif;--lift-1: 0 1px 0 rgba(255, 255, 255, .06) inset, 0 6px 18px rgba(0, 0, 0, .4);--lift-2: 0 1px 0 rgba(255, 255, 255, .08) inset, 0 18px 48px rgba(0, 0, 0, .45)}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;height:100%;background:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;overscroll-behavior:none}body{background:radial-gradient(ellipse at 50% -10%,rgba(229,184,91,.08),transparent 60%),radial-gradient(ellipse at 50% 110%,rgba(177,155,224,.06),transparent 60%),var(--bg);background-attachment:fixed;min-height:100dvh}button{font-family:inherit;font-size:inherit;color:inherit;background:none;border:0;cursor:pointer;padding:0}input{font-family:inherit;font-size:inherit;color:inherit}.app{min-height:100dvh;display:flex;flex-direction:column;align-items:center;padding:24px 20px 32px;max-width:480px;margin:0 auto}.brand{font-family:var(--display);font-weight:500;font-size:22px;letter-spacing:.04em;color:var(--brass);margin-bottom:8px}.eyebrow{font-family:var(--sans);text-transform:uppercase;letter-spacing:.18em;font-size:11px;color:var(--ink-3);margin-bottom:12px}h1{font-family:var(--display);font-weight:400;font-size:36px;line-height:1.15;margin:0 0 18px;color:var(--ink)}h2{font-family:var(--display);font-weight:400;font-size:28px;line-height:1.2;margin:0 0 14px;color:var(--ink)}p{margin:0 0 16px;color:var(--ink-2);line-height:1.55;font-size:16px}.lead{font-family:var(--serif);font-size:19px;line-height:1.6;color:var(--ink)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:52px;padding:0 28px;border-radius:28px;background:linear-gradient(180deg,var(--brass-hi),var(--brass));color:#1a1206;font-family:var(--sans);font-weight:600;font-size:15px;letter-spacing:.04em;text-transform:uppercase;box-shadow:var(--lift-1);transition:transform .1s ease,box-shadow .2s ease,filter .2s ease;width:100%;max-width:320px}.btn:hover:not(:disabled){filter:brightness(1.05)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-ghost{background:transparent;color:var(--ink-2);border:1px solid var(--line-strong);box-shadow:none}.link-btn{display:block;margin:0 auto;background:transparent;border:0;color:var(--ink-3);font-family:var(--serif);font-size:15px;font-style:italic;padding:8px 16px;cursor:pointer;text-decoration:underline;text-decoration-color:#a8977066;text-underline-offset:4px;transition:color .15s ease}.link-btn:hover{color:var(--ink-2)}.input{width:100%;height:48px;padding:0 16px;border-radius:12px;background:var(--surface);border:1px solid var(--line-strong);color:var(--ink);outline:none;transition:border-color .15s ease}.input:focus{border-color:var(--brass-lo)}.input::placeholder{color:var(--ink-4)}.pill{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px 0 14px;border-radius:16px;background:var(--surface-2);border:1px solid var(--line-strong);color:var(--ink);font-size:14px;font-family:var(--serif)}.pill button{color:var(--ink-3);font-size:18px;line-height:1;padding:0 2px}.pill button:hover{color:var(--rose)}.pills-row{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.card-stack{position:relative;width:100%;max-width:360px;aspect-ratio:9 / 16;max-height:calc(100dvh - 170px);user-select:none;-webkit-user-select:none;touch-action:none;margin:0 auto}.card{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:24px;overflow:hidden;background:var(--surface);box-shadow:var(--lift-2);border:1px solid var(--line-strong);will-change:transform,opacity;max-height:100%}.intent-badge{position:absolute;top:24px;padding:10px 18px;border-radius:8px;font-family:var(--sans);font-weight:700;font-size:14px;letter-spacing:.18em;border:2px solid currentColor;background:#0e2436b3;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);pointer-events:none;z-index:5;animation:badge-pop .15s ease-out}.intent-intrigued{right:24px;color:var(--rose);transform:rotate(8deg)}.intent-pass{left:24px;color:var(--ink-3);transform:rotate(-8deg)}.intent-obsessed{left:50%;top:18px;transform:translate(-50%);color:var(--aurora)}@keyframes badge-pop{0%{opacity:0;transform:scale(.85) rotate(var(--badge-rotate, 0))}to{opacity:1}}.card-image{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;background:var(--surface-2)}.card-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,transparent 32%,rgba(14,36,54,.98) 88%);pointer-events:none}.card-body{position:absolute;inset:auto 0 0 0;padding:22px 24px 26px;color:var(--ink)}.card-name{font-family:var(--display);font-size:32px;font-weight:500;line-height:1.1;margin:0 0 6px}.card-book{font-family:var(--serif);font-size:15px;font-style:italic;color:var(--ink-2);margin:0 0 12px}.card-teaser{font-family:var(--serif);font-size:17px;line-height:1.45;color:var(--ink);margin:0 0 14px}.card-traits{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:14px}.trait{font-family:var(--sans);font-size:11px;font-weight:600;letter-spacing:.12em;color:var(--brass);background:#e5b85b24;border:1px solid rgba(229,184,91,.28);padding:4px 9px;border-radius:4px;text-transform:uppercase}.card-why{font-family:var(--serif);font-size:14px;font-style:italic;color:var(--ink-2);line-height:1.45}.swipe-header{display:flex;align-items:center;justify-content:space-between;width:100%;max-width:340px;margin-bottom:14px}.mute-btn{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:16px;border:1px solid var(--line-strong);background:var(--surface);color:var(--ink-2);transition:background .15s ease}.mute-btn:hover{background:var(--surface-2);color:var(--ink)}.reactions{display:flex;justify-content:center;gap:16px;margin-top:24px}.reaction-btn{width:56px;height:56px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:22px;border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);transition:transform .1s ease,background .15s ease}.reaction-btn:hover{transform:translateY(-2px)}.reaction-btn.pass{color:var(--ink-3)}.reaction-btn.intrigued{color:var(--rose);border-color:#e8754a66}.reaction-btn.obsessed{color:var(--aurora);border-color:#b19be066}.shelf{display:flex;flex-direction:column;gap:16px;width:100%;margin-top:12px}.shelf-book{display:flex;align-items:center;gap:14px;padding:14px;border-radius:14px;background:var(--surface);border:1px solid var(--line-strong)}.shelf-book-cover{width:56px;height:84px;border-radius:4px;background:linear-gradient(135deg,var(--surface-3),var(--surface));border:1px solid var(--line-strong);flex-shrink:0;display:flex;align-items:center;justify-content:center;font-family:var(--display);font-size:28px;color:var(--brass)}.shelf-book-title{font-family:var(--display);font-size:17px;font-weight:500;margin:0 0 2px}.shelf-book-author{font-family:var(--serif);font-style:italic;font-size:13px;color:var(--ink-3);margin:0 0 4px}.shelf-book-hook{font-family:var(--serif);font-size:12px;color:var(--ink-2);line-height:1.4;margin:0}.spinner{width:24px;height:24px;border:2px solid rgba(229,184,91,.2);border-top-color:var(--brass);border-radius:50%;animation:spin .9s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.conjuring{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;min-height:60dvh;text-align:center}.text-center{text-align:center}.muted{color:var(--ink-3)}.error{color:var(--rose);font-size:13px;margin-top:8px}.autocomplete{position:relative}.autocomplete-list{position:absolute;top:calc(100% + 4px);left:0;right:0;max-height:240px;overflow-y:auto;background:var(--surface-2);border:1px solid var(--line-strong);border-radius:12px;box-shadow:var(--lift-1);z-index:10}.autocomplete-item{display:flex;align-items:center;gap:10px;padding:10px 14px;cursor:pointer;border-bottom:1px solid var(--line)}.autocomplete-item:last-child{border-bottom:none}.autocomplete-item:hover,.autocomplete-item.active{background:var(--surface-3)}.autocomplete-item-name{font-family:var(--serif);font-size:14px;color:var(--ink)}.autocomplete-item-book{font-size:12px;font-style:italic;color:var(--ink-3);margin-left:auto}.reveal-root{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse 90% 60% at 50% 38%,#1e4a6e,#0b1b2a 60%,#07111b);padding:24px;overflow:hidden;animation:reveal-fade-in .5s ease-out both}@keyframes reveal-fade-in{0%{opacity:0}to{opacity:1}}.reveal-stars{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.reveal-shaft{position:absolute;top:-10%;left:50%;width:110%;height:130%;transform:translate(-50%) rotate(0);background:conic-gradient(from 90deg at 50% 0%,transparent 0deg,rgba(255,209,138,0) 50deg,rgba(255,209,138,.6) 90deg,rgba(255,209,138,0) 130deg,transparent 360deg);filter:blur(8px);animation:rev-shaft 8s linear infinite;opacity:0;transform-origin:50% 0%;pointer-events:none}.reveal-shaft.on{opacity:1;transition:opacity 1.2s ease}@keyframes rev-shaft{0%{transform:translate(-50%) rotate(-20deg)}to{transform:translate(-50%) rotate(20deg)}}.reveal-flare{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 50% 40%,rgba(255,209,138,.6) 0%,rgba(229,184,91,.22) 22%,transparent 60%);opacity:0;transform:scale(.5);transition:opacity .5s ease,transform 1s cubic-bezier(.16,1,.3,1);pointer-events:none}.reveal-flare.on{opacity:1;transform:scale(1)}.reveal-stage{position:relative;z-index:2;text-align:center;max-width:420px;display:flex;flex-direction:column;align-items:center;gap:0}.reveal-eyebrow{font-family:var(--sans);text-transform:uppercase;letter-spacing:.28em;font-size:11px;color:var(--brass);opacity:0;transform:translateY(8px);transition:opacity .7s ease-out,transform .7s ease-out;margin-bottom:22px}.reveal-eyebrow.on{opacity:1;transform:translateY(0)}.reveal-character-pair{display:flex;align-items:center;justify-content:center;gap:16px;opacity:0;transform:translateY(8px);transition:opacity .7s ease-out .05s,transform .7s ease-out .05s;margin-bottom:18px}.reveal-character-pair.on{opacity:1;transform:translateY(0)}.reveal-pair-row{display:flex;align-items:center;gap:16px}.reveal-char{display:flex;flex-direction:column;align-items:center;gap:6px;filter:brightness(.7);transition:filter .4s ease,transform .4s ease}.reveal-char[data-active="1"]{filter:brightness(1.15);transform:scale(1.08)}.reveal-char-portrait{width:64px;height:64px;border-radius:50%;object-fit:cover;border:2px solid var(--brass);box-shadow:0 0 20px #e5b85b80}.reveal-char-sigil{width:64px;height:64px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--surface-3);border:2px solid var(--brass);font-family:var(--display);font-size:30px;color:var(--brass)}.reveal-pair-name{font-family:var(--display);font-size:14px;font-style:italic;color:var(--ink-2);letter-spacing:.04em}.reveal-amp{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle,#ffd18a66,#e5b85b1a);border:1px solid rgba(229,184,91,.6);color:var(--brass-hi);font-family:var(--display);font-style:italic;font-size:16px;box-shadow:0 0 14px #ffd18a66}.reveal-quotes{position:relative;min-height:78px;width:100%;max-width:320px;margin-bottom:8px}.reveal-quote{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;transform:translateY(6px);transition:opacity .6s ease-out,transform .6s ease-out;pointer-events:none}.reveal-quote.on{opacity:1;transform:translateY(0)}.quote-line{font-family:var(--display);font-style:italic;font-size:17px;line-height:1.4;color:var(--ink);text-align:center}.quote-mark{color:var(--brass);margin:0 2px}.quote-attrib{margin-top:6px;font-family:var(--sans);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3)}.reveal-title{font-family:var(--display);font-style:italic;font-size:18px;color:var(--brass);letter-spacing:.04em;margin:18px 0 12px;opacity:0;transform:translateY(6px);transition:opacity .6s ease-out,transform .6s ease-out}.reveal-title.on{opacity:1;transform:translateY(0)}.reveal-book-wrap{height:240px;display:flex;align-items:center;justify-content:center}.reveal-book{width:160px;height:238px;position:relative;transform-style:preserve-3d;transform:rotateY(-18deg) scale(.6) translateY(40px);opacity:0;transition:transform 1.4s cubic-bezier(.16,1,.3,1) .2s,opacity .8s ease .2s}.reveal-book.on{opacity:1;transform:rotateY(0) scale(1) translateY(0)}.reveal-book-cover{width:160px;height:238px;border-radius:6px;background:linear-gradient(135deg,var(--surface-3),var(--surface));border:1px solid var(--brass-lo);box-shadow:0 1px #ffffff14 inset,-4px 0 6px #00000080 inset,0 30px 60px #0009,0 0 60px #e5b85b73,0 0 100px #e5b85b40;display:flex;align-items:center;justify-content:center}.reveal-book-sigil{font-family:var(--display);font-size:84px;color:var(--brass);text-shadow:0 0 24px rgba(255,209,138,.6)}.reveal-book-meta{margin-top:18px;opacity:0;transform:translateY(6px);transition:opacity .6s ease-out,transform .6s ease-out}.reveal-book-meta.on{opacity:1;transform:translateY(0)}.reveal-book-author{font-family:var(--serif);font-size:13px;font-style:italic;color:var(--ink-3);letter-spacing:.04em;margin-bottom:4px}.reveal-book-title{font-family:var(--display);font-style:italic;font-weight:400;font-size:30px;color:var(--ink);line-height:1.1;margin:0}.reveal-actions{position:relative;z-index:3;margin-top:28px;opacity:0;transform:translateY(8px);transition:opacity .5s ease-out,transform .5s ease-out}.reveal-actions.on{opacity:1;transform:translateY(0)}.reveal-continue-btn{max-width:280px;font-size:13px!important;height:46px!important}.glitter{position:absolute;border-radius:50%;pointer-events:none;z-index:1}@keyframes revtwinkle{0%{opacity:.2}to{opacity:.9}}@keyframes revglitter{0%{opacity:0;transform:translate(0) scale(.4)}30%{opacity:1;transform:translate(calc(var(--drift) * .4),-4px) scale(1.1)}60%{opacity:.85;transform:translate(calc(var(--drift) * .7),-6px) scale(.95)}to{opacity:0;transform:translate(var(--drift),-10px) scale(.5)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
