/* Lunea components. Fraunces SemiBold for titles (the cut of the logo and the "nicole" on covers), VT323 for the interface (buttons, forms, tags, labels, data, captions over illustration), Figtree for reading text. Every value comes from tokens.css. */
body { margin: 0; background: var(--paper); color: var(--ink); font-family: var(--font-text); -webkit-font-smoothing: antialiased; }
.lu-stage { padding: var(--space-6); display: flex; flex-wrap: wrap; gap: var(--space-6); align-items: flex-start; }
.lu-stack { display: flex; flex-direction: column; gap: var(--space-3); max-width: 560px; width: 100%; }

/* type helpers */
.lu-title { margin: 0; font: 600 26px/30px var(--font-display); color: var(--ink); letter-spacing: -0.015em; }
.lu-body { margin: 0 0 var(--space-3); font: 400 16px/26px var(--font-text); color: var(--ink); max-width: 62ch; }
.lu-body:last-child { margin-bottom: 0; }
.lu-lead { margin: var(--space-3) 0; font: 500 19px/28px var(--font-text); color: var(--ink); }
.lu-eyebrow { font: 400 18px/20px var(--font-data); letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink); padding: 0; margin-bottom: var(--space-2); }
.lu-archetype { margin-top: var(--space-1); font: 400 22px/24px var(--font-data); letter-spacing: 0.04em; color: var(--ink-soft); }
.lu-glyph { font-family: var(--font-glyph); font-weight: 400; }
.lu-num { font-variant-numeric: tabular-nums; }
.lu-icon { flex: none; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }

/* surfaces */
.lu-card { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-card); }
.lu-thumb { flex: none; display: grid; place-items: center; background: color-mix(in srgb, var(--line) 35%, var(--card)); border-radius: var(--radius-thumb); overflow: hidden; }
.lu-minibook { position: relative; aspect-ratio: 148 / 210; overflow: hidden; box-shadow: 0 6px 14px rgba(43, 36, 33, 0.25); }
.lu-minibook img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.lu-minibook span { position: absolute; left: 8%; bottom: 9%; font-family: var(--font-display); font-weight: 600; line-height: 1; letter-spacing: -0.02em; color: var(--on-color); }

/* brand */
.lu-wordmark { display: block; height: auto; max-width: 100%; }
.lu-header { position: relative; width: 100%; max-width: 640px; height: 150px; border-radius: var(--radius-card); overflow: hidden; display: grid; place-items: center; isolation: isolate; }
.lu-header-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 40%; }
.lu-header-bg.is-moving { animation: lu-drift 22s ease-in-out infinite alternate; transform-origin: 40% 50%; }
.lu-header-glow { position: absolute; inset: -20%; background: radial-gradient(40% 60% at 30% 50%, rgba(255, 214, 150, 0.45), transparent 70%), radial-gradient(35% 55% at 75% 45%, rgba(233, 117, 103, 0.35), transparent 70%); mix-blend-mode: soft-light; animation: lu-breathe 9s ease-in-out infinite alternate; }
.lu-header-grain { position: absolute; inset: -50%; opacity: 0.22; mix-blend-mode: overlay; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); animation: lu-grain 0.9s steps(6) infinite; }
.lu-header .lu-wordmark { position: relative; z-index: 1; }
@keyframes lu-drift { 0% { transform: scale(1.06) translate(0, 0) rotate(0deg); } 50% { transform: scale(1.16) translate(-3%, 2%) rotate(0.6deg); } 100% { transform: scale(1.1) translate(2%, -2%) rotate(-0.4deg); } }
@keyframes lu-breathe { from { opacity: 0.35; transform: translateX(-4%); } to { opacity: 0.9; transform: translateX(4%); } }
@keyframes lu-grain { 0% { transform: translate(0, 0); } 20% { transform: translate(-6%, 4%); } 40% { transform: translate(5%, -6%); } 60% { transform: translate(-3%, 7%); } 80% { transform: translate(7%, 2%); } 100% { transform: translate(-5%, -3%); } }

/* buttons and form */
.lu-btn { display: flex; align-items: center; justify-content: center; gap: 10px; width: 100%; box-sizing: border-box; font: 400 22px/24px var(--font-data); color: var(--ink); background: var(--sage); border: 1px solid transparent; border-radius: var(--radius-button); padding: 15px 20px; cursor: pointer; text-decoration: none; transition: background-color 0.15s ease; }
.lu-btn:hover { background: var(--sage-strong); }
.lu-btn-secondary { background: transparent; border-color: var(--line-strong); }
.lu-btn-secondary:hover { background: var(--card); }
.lu-btn:disabled { opacity: 0.5; cursor: not-allowed; }
.lu-btn:focus-visible, .lu-chip:focus-visible, .lu-linkrow:focus-visible, .lu-input:focus-visible, .lu-option:has(input:focus-visible) { outline: 2px solid var(--focus); outline-offset: 2px; }
.lu-field { display: flex; flex-direction: column; gap: 6px; max-width: 420px; }
.lu-field-label { font: 400 20px/24px var(--font-data); color: var(--ink); }
.lu-input { font: 400 22px/26px var(--font-data); color: var(--ink); background: var(--card); border: 1px solid var(--line-strong); border-radius: var(--radius-button); padding: 11px 14px; }
.lu-input::placeholder { color: var(--ink-soft); }
.lu-field-hint { margin: 0; font: 400 17px/20px var(--font-data); color: var(--ink-soft); }
.lu-field.is-error .lu-input { border-color: var(--link); }
.lu-field.is-error .lu-field-hint { color: var(--link); }
.lu-format { display: flex; flex-direction: column; gap: var(--space-2); width: 100%; max-width: 440px; }
.lu-format-opts { display: flex; gap: 10px; flex-wrap: wrap; }
.lu-chip { font: 400 20px/24px var(--font-data); color: var(--ink); background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-button); padding: 10px 14px; cursor: pointer; }
.lu-chip[aria-pressed="true"] { border-color: var(--line-strong); box-shadow: var(--shadow-card); }
.lu-price { margin-top: var(--space-1); font: 600 28px/32px var(--font-display); letter-spacing: -0.01em; color: var(--ink); }
.lu-coverpick { border: 0; margin: 0; padding: 0; width: 100%; max-width: 440px; display: flex; flex-direction: column; gap: 10px; }
.lu-option { position: relative; display: flex; align-items: center; gap: var(--space-4); padding: 10px 14px; background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-card); cursor: pointer; font: 400 22px/24px var(--font-data); color: var(--ink); }
.lu-option input { position: absolute; opacity: 0; pointer-events: none; }
.lu-option img { width: 44px; height: 62px; object-fit: cover; border-radius: 2px; box-shadow: 0 2px 6px rgba(43, 36, 33, 0.18); }
.lu-option:has(input:checked) { border-color: var(--line-strong); box-shadow: var(--shadow-card); }

/* cards */
.lu-product { box-sizing: border-box; max-width: 560px; padding: var(--space-6); display: flex; flex-direction: column; gap: 20px; }
.lu-product-top { display: flex; gap: 20px; align-items: center; }
.lu-product-text { min-width: 0; }
.lu-product .lu-title { margin-bottom: 6px; }
@media (max-width: 460px) { .lu-product-top { flex-direction: column; align-items: flex-start; } }
.lu-linkrow { box-sizing: border-box; display: flex; align-items: center; gap: 18px; max-width: 560px; padding: 12px 18px 12px 12px; text-decoration: none; color: var(--ink); font: 600 18px/24px var(--font-display); letter-spacing: -0.01em; }
.lu-linkrow:hover { border-color: var(--line-strong); }
.lu-linkrow-t { flex: 1; min-width: 0; }

/* luminous web: glass, pills, hero */
.lu-glass { background: rgba(255, 253, 248, 0.58); -webkit-backdrop-filter: blur(18px) saturate(1.2); backdrop-filter: blur(18px) saturate(1.2); border: 1px solid rgba(255, 255, 255, 0.75); box-shadow: 0 1px 0 rgba(255, 255, 255, 0.9) inset, var(--shadow-glow); }
.lu-pill { display: inline-flex; align-items: center; justify-content: center; gap: 8px; font: 400 20px/22px var(--font-data); color: var(--ink); background: var(--cream-glow); border-radius: 999px; padding: 14px 26px; text-decoration: none; box-shadow: 0 1px 0 rgba(255, 255, 255, 0.8) inset, 0 8px 24px rgba(200, 120, 60, 0.18); transition: transform 0.2s ease, box-shadow 0.2s ease; }
.lu-pill:hover { transform: translateY(-1px); box-shadow: 0 1px 0 rgba(255, 255, 255, 0.8) inset, 0 12px 30px rgba(200, 120, 60, 0.26); }
.lu-pill-sm { padding: 9px 18px; font-size: 18px; }
.lu-pill-ghost { background: rgba(255, 255, 255, 0.35); box-shadow: inset 0 0 0 1px var(--line); }
.lu-pill:focus-visible { outline: 2px solid var(--focus); outline-offset: 3px; }
.lu-nav { position: relative; z-index: 2; display: flex; align-items: center; justify-content: space-between; gap: var(--space-6); border-radius: 999px; padding: 8px 8px 8px 24px; max-width: 1040px; margin: 0 auto; }
.lu-nav-mark { width: 74px; height: auto; display: block; }
.lu-nav-links { display: flex; gap: 28px; }
.lu-nav-links a { font: 400 18px/20px var(--font-data); color: var(--ink-soft); text-decoration: none; }
.lu-nav-links a:hover { color: var(--ink); }
@media (max-width: 720px) { .lu-nav-links { display: none; } }
.lu-duo { font: 400 17px/20px var(--font-data); letter-spacing: 0.14em; text-transform: uppercase; color: var(--ink-soft); }
.lu-duo b { color: var(--ink); font-weight: 400; }
.lu-orbit { color: var(--ink); display: block; margin: 0 auto var(--space-4); }
.lu-hero { position: relative; overflow: hidden; width: 100%; box-sizing: border-box; padding: 18px 18px 72px; background: var(--paper); border-radius: var(--radius-card); isolation: isolate; }
.lu-hero-glow { position: absolute; inset: 0; z-index: -1; background: radial-gradient(42% 38% at 18% 8%, rgba(255, 196, 150, 0.75), transparent 70%), radial-gradient(38% 34% at 88% 22%, rgba(246, 176, 196, 0.6), transparent 70%), radial-gradient(50% 40% at 50% 92%, rgba(243, 212, 138, 0.55), transparent 72%); }
.lu-hero-glow::after { content: ""; position: absolute; inset: 0; opacity: 0.18; mix-blend-mode: multiply; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); }
.lu-hero-in { max-width: 760px; margin: 0 auto; padding-top: 72px; text-align: center; }
.lu-hero h1 { margin: 18px 0 0; font: 600 clamp(44px, 7.4vw, 84px)/0.96 var(--font-display); letter-spacing: -0.04em; color: var(--ink); }
.lu-hero h1 em { font-style: normal; background: linear-gradient(100deg, #e8641a, #dcb94d); -webkit-background-clip: text; background-clip: text; color: transparent; }
.lu-hero p { margin: 22px auto 0; max-width: 46ch; font: 400 18px/29px var(--font-text); color: var(--ink-soft); }
.lu-hero-cta { margin-top: 32px; display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }
.lu-hero-fan { margin: 56px auto 0; display: flex; justify-content: center; align-items: flex-start; gap: 0; }
.lu-hero-card { position: relative; width: 31%; max-width: 210px; margin: 0 -14px; aspect-ratio: 4 / 5; border-radius: 14px; overflow: hidden; box-shadow: 0 30px 60px rgba(120, 70, 40, 0.22), 0 2px 6px rgba(120, 70, 40, 0.12); }
.lu-hero-card .lu-illus { width: 100%; height: 100%; box-shadow: none; border-radius: 0; }

/* app screen: Open-like calm, in light */
.lu-phone { box-sizing: border-box; aspect-ratio: 9 / 19; flex: none; overflow: hidden; border-radius: 2.4em; padding: 1.4em 1.1em 0; background: linear-gradient(180deg, #fbf7ef, var(--paper)); box-shadow: 0 0 0 0.45em #fdfcf8, 0 0 0 calc(0.45em + 1px) var(--line), 0 30px 60px rgba(120, 70, 40, 0.18); display: flex; flex-direction: column; color: var(--ink); }
.lu-app-days { display: flex; justify-content: space-between; padding: 0 0.3em; font: 400 0.85em/1 var(--font-data); letter-spacing: 0.06em; color: var(--ink-soft); }
.lu-app-days .is-on { color: var(--ink); border-bottom: 1.5px solid var(--ink); padding-bottom: 0.25em; }
.lu-app-hero { position: relative; margin-top: 1.1em; aspect-ratio: 1; border-radius: 1.4em; overflow: hidden; }
.lu-app-hero .lu-illus { width: 100%; height: 100%; box-shadow: none; border-radius: 0; }
.lu-app-hero-t { position: absolute; left: 1em; right: 1em; bottom: 1em; display: grid; grid-template-columns: 1fr auto; align-items: end; color: inherit; }
.lu-app-hero.is-dark { color: var(--film-ink); } .lu-app-hero.is-light { color: #fbf7ef; }
.lu-app-hero-t .lu-app-k { grid-column: 1; color: inherit; opacity: 0.8; }
.lu-app-hero-t .lu-play { grid-column: 2; grid-row: 1 / span 2; }
.lu-app-title { grid-column: 1; font: 400 1.2em/1.05 var(--font-data); letter-spacing: 0.04em; text-transform: uppercase; }
.lu-app-k { font: 400 0.85em/1.3 var(--font-data); letter-spacing: 0.06em; text-transform: uppercase; color: var(--ink-soft); }
.lu-play { display: grid; place-items: center; border-radius: 50%; border: 1.5px solid currentColor; color: inherit; }
.lu-app-menu { list-style: none; margin: 1.2em 0 0; padding: 0; }
.lu-app-menu li { font: 400 1.45em/1.3 var(--font-data); letter-spacing: 0.06em; text-transform: uppercase; }
.lu-app-menu li:first-child { color: var(--ink); } .lu-app-menu li + li { color: var(--ink-soft); }
.lu-app-rule { margin-top: 1.1em; padding-top: 0.9em; border-top: 1px solid var(--line); }
.lu-app-row { margin-top: 0.5em; display: flex; justify-content: space-between; align-items: center; gap: 0.8em; }
.lu-app-row-t { font: 600 1em/1.3 var(--font-display); letter-spacing: -0.01em; }
.lu-app-row-s { font: 400 0.72em/1.4 var(--font-text); color: var(--ink-soft); }
.lu-app-tabs { margin-top: auto; display: flex; justify-content: space-around; padding: 1em 0 1.4em; border-top: 1px solid var(--line); font: 400 0.9em/1 var(--font-data); letter-spacing: 0.04em; color: var(--ink-soft); }
.lu-app-tabs .is-on { color: var(--ink); }

.lu-opener-photo { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.lu-app-photo { position: absolute; inset: 0; }
.lu-app-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.lu-app-photo::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 55%, rgba(43, 36, 33, 0.28)); }
.lu-app-hero-t { z-index: 1; }

/* illustration */
.lu-illus { display: block; height: auto; max-width: 100%; border-radius: 2px; box-shadow: var(--shadow-book); }
.lu-library { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: var(--space-6) var(--space-4); width: 100%; }
.lu-library figure { margin: 0; }
.lu-library figcaption { margin-top: var(--space-2); font: 400 16px/18px var(--font-data); letter-spacing: 0.04em; color: var(--ink-soft); }
.lu-library figcaption b { display: block; font: 600 16px/20px var(--font-display); color: var(--ink); letter-spacing: -0.01em; }
.lu-library-h { grid-column: 1 / -1; margin: var(--space-2) 0 0; font: 400 18px/20px var(--font-data); letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink); border-bottom: 1px solid var(--line); padding-bottom: var(--space-2); }

/* full-bleed frames with text over illustration: openers, posts, stories */
.lu-opener, .lu-post, .lu-story { position: relative; overflow: hidden; border-radius: 2px; flex: none; box-shadow: var(--shadow-book); }
.lu-opener { aspect-ratio: 148 / 210; }
.lu-post { aspect-ratio: 4 / 5; }
.lu-story { aspect-ratio: 9 / 16; border-radius: 10px; }
.lu-opener .lu-illus, .lu-post .lu-illus, .lu-story .lu-illus { position: absolute; inset: 0; width: 100%; height: 100%; box-shadow: none; border-radius: 0; }
.is-dark { color: var(--film-ink); }
.is-light { color: var(--thread); }
.lu-overlay-text { position: absolute; left: 0; right: 0; bottom: 6%; text-align: center; padding: 0 8%; }
.lu-opener.is-top .lu-overlay-text { bottom: auto; top: 6%; }
.lu-overlay-num { font-family: var(--font-data); letter-spacing: 0.06em; }
.lu-overlay-text h2, .lu-post-bottom h2 { margin: 0.1em 0 0; font-family: var(--font-data); font-weight: 400; line-height: 1; letter-spacing: 0.04em; text-transform: uppercase; }
.lu-overlay-sub, .lu-post-sub { margin-top: 0.25em; font-family: var(--font-data); font-weight: 400; letter-spacing: 0.04em; text-transform: uppercase; opacity: 0.75; }
.lu-post-top { position: absolute; left: 6%; right: 6%; top: 5%; display: flex; justify-content: space-between; font-family: var(--font-data); letter-spacing: 0.04em; }
.lu-post-bottom { position: absolute; left: 6%; right: 6%; bottom: 5%; }
.lu-post.is-top .lu-post-top { top: auto; bottom: 4%; }
.lu-post.is-top .lu-post-bottom { bottom: auto; top: 5%; }
.lu-story-mark { position: absolute; left: 50%; top: 4%; transform: translateX(-50%); height: auto; }
.lu-story-handle { position: absolute; left: 0; right: 0; bottom: 2.5%; text-align: center; font-family: var(--font-data); letter-spacing: 0.04em; }
.lu-slide { position: relative; box-sizing: border-box; aspect-ratio: 4 / 5; flex: none; background: var(--paper); border: 1px solid var(--line); border-radius: 2px; box-shadow: var(--shadow-book); display: flex; flex-direction: column; overflow: hidden; }
.lu-slide-top, .lu-slide-foot { display: flex; justify-content: space-between; font-family: var(--font-data); letter-spacing: 0.04em; color: var(--ink-soft); }
.lu-slide-orb { margin: 7% 0 4%; border-radius: 50%; overflow: hidden; flex: none; }
.lu-slide-orb .lu-illus { width: 100%; height: 100%; box-shadow: none; }
.lu-slide h2 { margin: 0 0 0.35em; font: 600 1em/1 var(--font-display); font-size: inherit; letter-spacing: -0.02em; color: var(--ink); }
.lu-slide p { margin: 0 0 0.6em; font-family: var(--font-text); line-height: 1.45; color: var(--ink); }
.lu-slide-foot { margin-top: auto; padding-top: 0.6em; border-top: 1px solid var(--line); }

/* book (product) */
.lu-bookcover { position: relative; aspect-ratio: 148 / 210; overflow: hidden; border-radius: 2px; box-shadow: var(--shadow-book); color: var(--on-color); flex: none; }
.lu-bookcover > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.lu-bookcover-bottom { position: absolute; z-index: 1; left: 6%; right: 5%; bottom: 6%; }
.lu-bookcover-art { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
.lu-bookcover-name { position: relative; margin: 0; font-family: var(--font-display); font-weight: 600; line-height: 0.9; letter-spacing: -0.03em; }
.lu-cv-namebox { line-height: 0; text-transform: none; letter-spacing: 0; }
.lu-cv-stack .lu-fitname { line-height: 0.86; }
.is-stack .lu-cv-stack, .is-generic .lu-cv-block > .lu-cv-namebox { margin-bottom: 0.2em; }
.lu-cv-namebox .lu-fitname { line-height: 0.95; }
.lu-cv-namebox .lu-fitname { margin: 0; }
.lu-cv-block.is-top { top: 5.5%; bottom: auto; }
.lu-cv-center { position: absolute; z-index: 1; inset: 6% 7%; display: flex; flex-direction: column; justify-content: space-between; align-items: center; text-align: center; font-family: var(--font-data); letter-spacing: 0.08em; text-transform: uppercase; }
.lu-cv-center .lu-cv-tags { width: 100%; justify-content: center; gap: 0; }
.lu-cv-center > .lu-fitrow, .lu-cv-center > :last-child { width: 100%; }
.lu-cv-datum { display: inline-flex; align-items: center; gap: 0.35em; white-space: nowrap; letter-spacing: 0.1em; }
.lu-cv-datum b { font-weight: 400; margin: 0 0.55em 0 0.2em; opacity: 0.8; }
.lu-cv-datum i { font-style: normal; font-family: var(--font-glyph); font-size: 0.85em; line-height: 1; }
.lu-cv-mark { display: block; height: auto; margin-top: 0.4em; filter: drop-shadow(0 1px 8px rgba(20,14,10,0.16)); }
.lu-cv-mid { position: absolute; left: 0; right: 0; top: 50%; transform: translateY(-46%); display: flex; flex-direction: column; align-items: center; gap: 0.45em; width: 100%; }
.lu-cv-ctitle .lu-cv-namebox { display: flex; justify-content: center; }
.lu-cv-ctitle { margin-bottom: 0.7em; font-family: var(--font-display); font-weight: 600; line-height: 1.02; letter-spacing: -0.01em; text-transform: none; }
.lu-cv-small { opacity: 0.9; letter-spacing: 0.16em; }
.lu-cv-center .lu-cv-datum { letter-spacing: 0.14em; opacity: 0.92; }
.lu-cv-label { position: absolute; z-index: 1; left: 6%; right: 6%; bottom: 5%; padding: 1.1em 1.1em 1em; border-radius: 0.6em; background: rgba(255, 250, 240, 0.16); border: 1px solid rgba(255, 255, 255, 0.55); -webkit-backdrop-filter: blur(10px) saturate(1.2); backdrop-filter: blur(10px) saturate(1.2); font-family: var(--font-data); letter-spacing: 0.06em; line-height: 1.25; text-transform: uppercase; }
.lu-cv-ltitle { margin-bottom: 0.2em; font-family: var(--font-display); font-weight: 600; line-height: 1; letter-spacing: -0.02em; text-transform: none; white-space: nowrap; }
.lu-bookcover.is-pass::before { content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none; background: radial-gradient(70% 45% at 50% 50%, rgba(20, 14, 10, 0.07), transparent 75%), linear-gradient(180deg, rgba(20, 14, 10, 0.05), transparent 18%, transparent 82%, rgba(20, 14, 10, 0.06)); }
.is-pass .lu-cv-head, .is-pass .lu-cv-center, .is-pass .lu-cv-block, .is-pass .lu-cv-label { z-index: 2; text-shadow: 0 1px 10px rgba(20, 14, 10, 0.16), 0 0 1px rgba(20, 14, 10, 0.08); }
.lu-cv-head { position: absolute; z-index: 1; left: 7%; right: 7%; top: 5.5%; font-family: var(--font-data); letter-spacing: 0.06em; text-transform: uppercase; }
.lu-cv-block { position: absolute; z-index: 1; left: 7%; right: 7%; bottom: 6%; font-family: var(--font-data); letter-spacing: 0.06em; line-height: 1.25; text-transform: uppercase; }
.lu-cv-title { margin: 0; font-family: var(--font-display); font-weight: 600; line-height: 0.95; letter-spacing: -0.025em; text-transform: none; color: var(--on-color); }
.lu-cv-pass { position: absolute; z-index: 1; left: 7%; right: 7%; top: 5.5%; font-family: var(--font-data); letter-spacing: 0.06em; line-height: 1.25; text-transform: uppercase; }
.lu-cv-row { display: flex; justify-content: space-between; gap: 1em; }
.lu-cv-dash { margin: 0.5em 0; border-top: 1px dashed rgba(255, 255, 255, 0.7); }
.lu-cv-tags { display: flex; flex-wrap: wrap; gap: 0.45em; margin-bottom: 0.9em; font-family: var(--font-data); letter-spacing: 0.06em; }
.lu-cv-tag { padding: 0.25em 0.7em 0.2em; border-radius: 999px; border: 1px solid rgba(255, 255, 255, 0.75); background: rgba(255, 255, 255, 0.14); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.lu-cv-tag i { font-style: normal; font-family: var(--font-glyph); font-size: 0.85em; }
.is-pass .lu-cv-tags { flex-wrap: nowrap; gap: 0.35em; margin: 1em 0 0; white-space: nowrap; }
.is-pass .lu-cv-tags { display: flex; width: 100%; }
.is-pass .lu-cv-tag { flex: 1 0 auto; justify-content: center; padding: 0 0.5em; }
.lu-cv-tag { display: inline-flex; align-items: center; gap: 0.3em; height: 2em; line-height: 1; box-sizing: border-box; }
.lu-cv-tag i { display: inline-block; line-height: 1; transform: translateY(0.02em); }
.lu-fitname { white-space: nowrap; display: inline-block; width: max-content; line-height: 0.8; margin: 0 0 -0.04em; }
.is-pass .lu-bookcover-bottom { left: 6%; right: 6%; bottom: 5%; }
.lu-sectiontitle { margin: 0; font: 600 44px/46px var(--font-display); color: var(--ink); letter-spacing: -0.025em; }
.lu-tag { display: inline-block; font: 400 17px/18px var(--font-data); letter-spacing: 0.08em; text-transform: uppercase; color: var(--on-color); background: var(--ember); border-radius: 999px; padding: 5px 12px; }
.lu-reading { box-sizing: border-box; max-width: 540px; padding: var(--space-6) 26px; }
.lu-reading .lu-lead { font-family: var(--font-display); font-weight: 600; font-size: 21px; line-height: 27px; letter-spacing: -0.01em; }
.lu-reading .lu-glyph { font-size: 0.7em; vertical-align: 0.12em; }
.lu-folio { margin-top: var(--space-3); text-align: center; font: 400 18px/20px var(--font-data); color: var(--ink-soft); }
.lu-places { box-sizing: border-box; list-style: none; margin: 0; padding: 14px 22px; max-width: 440px; }
.lu-places li { display: grid; grid-template-columns: 30px 1fr auto 1.25fr 16px; gap: 10px; align-items: baseline; padding: 6px 0; border-bottom: 1px solid var(--line); font: 400 21px/24px var(--font-data); color: var(--ink); }
.lu-places li:last-child { border-bottom: 0; }
.lu-places .lu-glyph { font-size: 16px; color: var(--ink-soft); }
.lu-places .lu-num { text-align: right; }
.lu-retro { color: var(--link); }
.lu-wheel { display: block; width: 100%; max-width: 420px; height: auto; }
.lu-wheel.is-drawn { max-width: none; aspect-ratio: 1; border-radius: var(--radius-sm, 6px); }
.lu-wheel-disc { fill: var(--forest); }
.lu-wheel-ring { fill: none; stroke: var(--thread); stroke-width: 1.2; opacity: 0.85; }
.lu-wheel-tick { stroke: var(--thread); stroke-width: 1; opacity: 0.7; }
.lu-wheel-aspect { stroke: var(--honey); stroke-width: 0.9; opacity: 0.8; }
.lu-wheel-sign { fill: var(--thread); font: 400 15px var(--font-glyph); text-anchor: middle; }
.lu-wheel-planet { fill: var(--gold); font: 400 19px var(--font-glyph); text-anchor: middle; }
.lu-wheel-label { fill: var(--thread); font: 400 18px var(--font-data); text-anchor: middle; }

@media (prefers-reduced-motion: reduce) { .lu-btn { transition: none; } .lu-header-bg.is-moving, .lu-header-glow, .lu-header-grain { animation: none; } }

.lu-cv-sparkle { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 1; pointer-events: none; }
.lu-opener-fade { position: absolute; left: 0; right: 0; bottom: 0; height: 36%; z-index: 1; pointer-events: none; background: linear-gradient(to top, rgba(239,231,216,0.94), rgba(239,231,216,0.86) 60%, rgba(239,231,216,0)); }
.lu-opener .lu-overlay-text { z-index: 2; }
.lu-bookcover.cv-earthlight-flow::before { background: radial-gradient(75% 38% at 50% 50%, rgba(20,24,14,0.30), transparent 78%), linear-gradient(180deg, rgba(20,24,14,0.10), rgba(20,24,14,0.06) 50%, rgba(20,24,14,0.22)); }
.lu-bookcover.cv-golden-aura::before { background: radial-gradient(75% 38% at 50% 50%, rgba(60,24,10,0.20), transparent 78%), linear-gradient(180deg, rgba(60,24,10,0.06), transparent 30%, transparent 70%, rgba(60,24,10,0.16)); }
.cv-earthlight-flow .lu-cv-center, .cv-golden-aura .lu-cv-center { text-shadow: 0 1px 14px rgba(20,14,10,0.28), 0 0 2px rgba(20,14,10,0.18); }
.lu-cv-mid.is-wheel { transform: translateY(-50%); gap: 0.55em; }
.lu-cv-wheel { display: block; margin-bottom: 1.4em; overflow: visible; filter: drop-shadow(0 1px 6px rgba(20,14,10,0.12)); }
.lu-cv-vtitle { font-family: var(--font-data); letter-spacing: 0.08em; line-height: 1; white-space: nowrap; }
.lu-cv-stitle { font-family: var(--font-display); font-weight: 600; letter-spacing: -0.005em; text-transform: none; line-height: 1.05; margin-bottom: 0.3em; }
.lu-cv-scene { position: absolute; left: 11%; right: 11%; top: 12%; aspect-ratio: 1 / 1; z-index: 1; pointer-events: none; }
.cv-paper .lu-cv-scene { top: 11.5%; left: 16%; right: 16%; } .cv-paper .lu-cv-scene.is-masked { -webkit-mask-image: radial-gradient(ellipse 64% 62% at 50% 48%, #000 62%, transparent 100%); mask-image: radial-gradient(ellipse 64% 62% at 50% 48%, #000 62%, transparent 100%); }
.lu-cv-scene .lu-illus { position: absolute; inset: 0; width: 100%; height: 100%; box-shadow: none; border-radius: 0; }
.lu-cv-mid.is-scene { top: auto; bottom: 12%; transform: none; }
.lu-bookcover.cv-paper { color: var(--ink, #2b392f); background-color: #efe7d8;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.36 0 0 0 0 0.3 0 0 0 0 0.24 0 0 0 0.55 0'/%3E%3C/filter%3E%3Crect width='220' height='220' filter='url(%23n)' opacity='0.55'/%3E%3C/svg%3E"), radial-gradient(60% 45% at 30% 30%, rgba(255,250,240,0.55), transparent 70%), radial-gradient(55% 40% at 75% 80%, rgba(205,190,165,0.28), transparent 70%); }
.lu-bookcover.cv-paper::before { display: none; }
.lu-bookcover.cv-paper .lu-cv-center { text-shadow: none; color: #2b392f; }
.lu-bookcover.cv-paper .lu-cv-mark { filter: none; }
.lu-option-ill { position: relative; width: 44px; height: 44px; border-radius: 6px; overflow: hidden; flex: none; display: block; }
.lu-option-ill .lu-illus { position: absolute; inset: 0; width: 100%; height: 100%; box-shadow: none; border-radius: 0; }
.lu-minibook.is-paper { background: #efe7d8; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; aspect-ratio: 148 / 210; color: #2b392f; font-family: var(--font-data); letter-spacing: 0.08em; box-shadow: var(--shadow-book); border-radius: 2px; }
.lu-minibook-ill { position: relative; width: 80%; aspect-ratio: 1; display: block; }
.lu-minibook-ill .lu-illus { position: absolute; inset: 0; width: 100%; height: 100%; box-shadow: none; border-radius: 0; }
.lu-header { background: var(--illustration-ground, #efe7d8); }
.lu-header-ill { position: absolute; inset: 0; opacity: 0.9; }
.lu-header-ill .lu-illus { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; box-shadow: none; border-radius: 0; }
.lu-header .lu-wordmark { position: relative; z-index: 1; background: rgba(239,231,216,0.82); padding: 6px 14px; border-radius: 999px; box-sizing: content-box; }
.lu-minibook.is-paper span { position: static; font-family: var(--font-data); font-weight: 400; letter-spacing: 0.08em; color: #2b392f; }
.lu-minibook.is-paper .lu-minibook-ill { position: relative; }
.lu-cv-page { position: absolute; inset: 0; z-index: 0; }
.lu-cv-page .lu-illus { position: absolute; inset: 0; width: 100%; height: 100%; box-shadow: none; border-radius: 0; }
.cv-paper .lu-cv-mid.is-scene { bottom: 11%; }
.cv-paper .lu-cv-small { font-size: 0.92em; }
.lu-cv-stitle { white-space: nowrap; }
.lu-cv-coords { opacity: 0.7; }
.lu-bookcover.cv-paper::after { content: ""; position: absolute; inset: 4.2%; border: 1px solid rgba(43,57,47,0.42); box-shadow: inset 0 0 0 3px transparent, inset 0 0 0 3.8px rgba(43,57,47,0.22); pointer-events: none; z-index: 3; }
.cv-paper .lu-cv-center { inset: 8.5% 10%; }
.cv-paper .lu-cv-stitle { margin-bottom: 0.8em; }
.cv-paper .lu-cv-stitle::after { content: ""; display: block; width: 1.6em; height: 1px; background: rgba(43,57,47,0.5); margin: 0.7em auto 0; }
.cv-paper .lu-cv-small { font-size: 0.74em; letter-spacing: 0.2em; opacity: 0.8; }
.cv-paper .lu-cv-mid.is-scene { gap: 0.3em; bottom: 9%; }
.cv-paper .lu-cv-center .lu-cv-datum { letter-spacing: 0.16em; opacity: 0.8; }
.lu-cv-tname { display: flex; flex-direction: column; align-items: center; margin-bottom: 1.1em; text-transform: none; }
.lu-cv-tname .nm { font-family: var(--font-display); font-weight: 600; line-height: 1; letter-spacing: -0.02em; }
.lu-cv-tname .sub, .lu-cv-titalic .sub { font-family: var(--font-data); letter-spacing: 0.32em; margin-top: 0.9em; opacity: 0.85; }
.lu-cv-titalic { display: flex; flex-direction: column; align-items: center; margin-bottom: 1.1em; text-transform: none; }
.lu-cv-titalic .sub { margin: 0 0 0.6em; }
.lu-cv-titalic .nm { font-family: var(--font-display); font-style: italic; font-weight: 400; line-height: 1; letter-spacing: -0.01em; }
.lu-cv-tstack { font-family: var(--font-display); font-weight: 600; line-height: 1.02; text-transform: none; margin-bottom: 1em; letter-spacing: -0.01em; }
.lu-cv-tstack .it { font-style: italic; font-weight: 400; font-size: 0.72em; letter-spacing: 0; }
.lu-bookcover.cv-paper.is-darkpaper, .lu-bookcover.cv-paper.is-darkpaper .lu-cv-center { color: #f6efe2; }
.lu-bookcover.cv-paper.is-darkpaper::after { border-color: rgba(246,239,226,0.45); box-shadow: inset 0 0 0 3px transparent, inset 0 0 0 3.8px rgba(246,239,226,0.25); }
.cv-paper.is-darkpaper .lu-cv-stitle::after, .is-darkpaper .bk-back-rule { background: rgba(246,239,226,0.5); }
.lu-bookcover.cv-paper.is-darkpaper { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.9 0 0 0 0 0.88 0 0 0 0 0.8 0 0 0 0.5 0'/%3E%3C/filter%3E%3Crect width='220' height='220' filter='url(%23n)' opacity='0.18'/%3E%3C/svg%3E"), radial-gradient(60% 45% at 30% 30%, rgba(255,250,240,0.06), transparent 70%); }
