/* Hallmark · pre-emit critique: P5 H5 E4 S5 R5 V4
 * macrostructure: Narrative Workflow · genre: playful · theme: studied-DNA (source: user visual references)
 * tone: soft dreamlike childhood · anchor hue: paper-gold · enrichment: CSS/SVG hand-built scenes
 * audience: mobile activity users · use: complete test and save result · contrast: pass
 */
* { box-sizing: border-box; }
html, body { margin: 0; min-height: 100%; overflow-x: clip; background: var(--color-night-deep); color: var(--color-cream); }
html { scroll-behavior: smooth; }
body { font-family: var(--font-body); -webkit-font-smoothing: antialiased; }
button, input { font: inherit; }
button { white-space: nowrap; }
h1 { min-width: 0; overflow-wrap: anywhere; }
button, [role="button"] { -webkit-tap-highlight-color: transparent; }
button:focus-visible, input:focus-visible { outline: 2px solid var(--color-focus); outline-offset: 3px; }
img, svg { display: block; max-width: 100%; }
[hidden] { display: none !important; }

.app-shell { position: relative; width: min(100%, 480px); min-height: 100svh; margin-inline: auto; background: var(--color-night); box-shadow: 0 0 80px var(--color-shadow); isolation: isolate; }
.app-shell::before { content: ""; position: fixed; z-index: -1; inset: 0; pointer-events: none; opacity: .32; background-image: radial-gradient(circle at 12% 7%, var(--color-cream) 0 1px, transparent 1.5px), radial-gradient(circle at 78% 17%, var(--color-gold) 0 1px, transparent 1.7px), radial-gradient(circle at 35% 72%, var(--color-cyan) 0 1px, transparent 1.5px), radial-gradient(circle at 88% 84%, var(--color-cream) 0 1px, transparent 1.5px); background-size: 91px 97px, 143px 137px, 173px 181px, 127px 151px; }
.screen { display: none; position: relative; min-height: 100svh; overflow: clip; padding: max(var(--space-xl), env(safe-area-inset-top)) max(var(--space-md), env(safe-area-inset-right)) max(var(--space-xl), env(safe-area-inset-bottom)) max(var(--space-md), env(safe-area-inset-left)); background-color: var(--color-night); color: var(--color-cream); }
.screen.active { display: block; animation: page-in var(--dur-page) var(--ease-out) both; }
.screen--center.active { display: grid; place-items: center; }
.screen::after { content: ""; position: absolute; z-index: -1; inset: 0; pointer-events: none; opacity: .18; background: repeating-linear-gradient(7deg, transparent 0 3px, var(--color-rule) 4px, transparent 5px 9px); mix-blend-mode: screen; }
.stage-label { margin: 0 0 var(--space-lg); color: var(--color-muted); font: 500 var(--text-xs)/1 var(--font-label); letter-spacing: .32em; text-transform: uppercase; }
.stage-label--gold { color: var(--color-gold); }
.type-output { white-space: pre-line; }
.cursor::after { content: ""; display: inline-block; width: 2px; height: 1em; margin-inline-start: var(--space-3xs); vertical-align: -.14em; background: var(--color-gold); animation: cursor-blink .85s steps(1) infinite; }

.paper-button { position: relative; display: inline-grid; place-items: center; min-width: min(100%, 276px); min-height: 58px; padding: 0 var(--space-xl); border: 0; border-radius: var(--radius-sm); background: var(--color-paper); color: var(--color-accent-ink); font-family: var(--font-display); font-size: var(--text-lg); letter-spacing: .18em; clip-path: polygon(0 9%, 12% 2%, 30% 8%, 49% 2%, 68% 7%, 86% 1%, 100% 7%, 100% 91%, 85% 98%, 65% 91%, 45% 98%, 25% 92%, 0 98%); box-shadow: 0 18px 40px var(--color-shadow); transition: transform var(--dur-fast) var(--ease-out), background-color var(--dur-fast) var(--ease-out), opacity var(--dur-fast) var(--ease-out); cursor: pointer; }
.paper-button::before { content: ""; position: absolute; inset: 4px; border: var(--rule-thin) solid var(--color-rule); clip-path: inherit; pointer-events: none; }
.paper-button:active { transform: translateY(2px) scale(.99); }
.paper-button:disabled, .paper-button[aria-disabled="true"] { opacity: .38; cursor: not-allowed; filter: grayscale(.55); }
.paper-button[data-state="loading"]::after { content: ""; width: 15px; height: 15px; margin-inline-start: var(--space-2xs); border: 2px solid var(--color-ink); border-inline-end-color: transparent; border-radius: 50%; animation: spin .8s linear infinite; }
.paper-button[data-state="error"] { background: var(--color-error); color: var(--color-night-deep); }
.paper-button[data-state="success"] { background: var(--color-success); color: var(--color-night-deep); }
.button-note { margin: var(--space-sm) 0 0; color: var(--color-muted); font-size: var(--text-xs); letter-spacing: .12em; text-align: center; }
@media (hover: hover) and (pointer: fine) { .paper-button:not(:disabled):hover { transform: translateY(-2px); background: var(--color-cream); } }

/* Cover */
.cover { padding-block-start: max(var(--space-2xl), env(safe-area-inset-top)); text-align: center; background: radial-gradient(ellipse at 50% 62%, var(--color-night-raised), transparent 52%), linear-gradient(var(--color-night), var(--color-night-deep)); }
.cover-copy { position: relative; z-index: 3; }
.cover .stage-label { margin-block-end: var(--space-lg); }
.cover h1 { min-width: 0; margin: 0; color: var(--color-paper); font: 800 clamp(34px, 11vw, 52px)/1.18 var(--font-display); letter-spacing: -.04em; overflow-wrap: anywhere; text-shadow: 0 5px 26px var(--color-shadow); }
.cover-theory { margin: var(--space-sm) 0 0; color: var(--color-gold); font: 600 var(--text-xs)/1.5 var(--font-label); letter-spacing: .2em; }
.cover-subtitle { margin: var(--space-2xs) auto 0; max-width: 30ch; color: var(--color-cream); font: 400 var(--text-base)/1.7 var(--font-display); }
.cover-visual { position: relative; height: clamp(290px, 45svh, 390px); margin: var(--space-sm) calc(var(--space-md) * -1) 0; }
.cover-visual::before { content: ""; position: absolute; inset: 0 18% 0; background: linear-gradient(180deg, var(--color-paper-dim), transparent 87%); opacity: .52; clip-path: polygon(49% 0, 56% 0, 100% 100%, 0 100%); filter: blur(3px); }
.cover-visual::after { content: ""; position: absolute; inset: auto -15% -4px; height: 36%; background: radial-gradient(ellipse, var(--color-night-raised), var(--color-night-deep) 72%); }
.forest { position: absolute; inset: auto 0 0; z-index: 1; height: 62%; opacity: .75; background: linear-gradient(145deg, transparent 48%, var(--color-night-deep) 49%) 0 100%/22% 88% repeat-x; }
.cover-kid { position: absolute; z-index: 2; width: 96px; height: auto; inset: auto auto 10px 50%; transform: translateX(-50%); filter: drop-shadow(0 10px 14px var(--color-shadow)); animation: walk-bob 2.8s var(--ease-in-out) infinite; }
.cover-action { position: relative; z-index: 4; margin-top: calc(var(--space-lg) * -1); }
.cover-disclaimer { max-width: 31ch; margin: var(--space-md) auto 0; color: var(--color-muted); font-size: var(--text-xs); line-height: 1.8; }
.cover-footer { margin: var(--space-2xl) 0 0; color: var(--color-muted); font: var(--text-xs)/1 var(--font-label); letter-spacing: .28em; }

/* Dream */
.dream { background: linear-gradient(180deg, var(--color-night) 0 52%, var(--color-night-deep) 100%); }
.dream-inner { width: 100%; }
.door-scene { position: relative; width: 220px; height: 275px; margin: 0 auto var(--space-lg); perspective: 700px; }
.door-light { position: absolute; inset: 20px 30px 0; background: linear-gradient(var(--color-indigo), var(--color-paper)); box-shadow: 0 20px 55px var(--color-gold); clip-path: polygon(32% 0, 71% 0, 100% 100%, 0 100%); opacity: .8; }
.door-panel { position: absolute; z-index: 2; inset: 20px 108px 10px 18px; border: 2px solid var(--color-rule-strong); background: linear-gradient(135deg, var(--color-night-raised), var(--color-indigo)); transform-origin: right center; transform: rotateY(-28deg); box-shadow: -12px 8px 25px var(--color-shadow); }
.door-panel::after { content: ""; position: absolute; right: 8px; top: 52%; width: 7px; height: 7px; border-radius: 50%; background: var(--color-gold); }
.dream-charms { position: absolute; z-index: 3; inset: 35px 34px 35px 88px; color: var(--color-gold); }
.dream-charms svg { position: absolute; width: 24px; height: 24px; stroke: currentColor; fill: none; stroke-width: 2; animation: float 4s var(--ease-in-out) infinite; }
.dream-charms svg:nth-child(1) { top: 10%; left: 15%; }
.dream-charms svg:nth-child(2) { top: 36%; right: 5%; animation-delay: -1.2s; }
.dream-charms svg:nth-child(3) { top: 68%; left: 24%; animation-delay: -2.3s; }
.dream-copy { min-height: 330px; margin: 0; color: var(--color-cream); font: 400 var(--text-base)/2 var(--font-display); letter-spacing: .06em; }
.dream-action { margin-block-start: var(--space-lg); text-align: center; opacity: 0; transform: translateY(10px); transition: opacity var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out); }
.dream-action.revealed { opacity: 1; transform: none; }

/* Gear */
.gear-screen { padding-inline: var(--space-sm); padding-bottom: 110px; background: var(--color-night-deep); }
.gear-title { margin: 0; color: var(--color-paper-dim); font: 500 var(--text-2xl)/1.25 var(--font-display); letter-spacing: .16em; text-align: center; }
.gear-lead { margin: var(--space-2xs) 0 var(--space-2xl); color: var(--color-muted); font-size: var(--text-sm); letter-spacing: .18em; text-align: center; }
.gear-group { scroll-margin-top: var(--space-md); margin-block-end: var(--space-2xl); }
.gear-head { display: flex; gap: var(--space-sm); align-items: end; justify-content: space-between; margin-block-end: var(--space-sm); }
.gear-head > div { min-width: 0; display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-3xs); }
.gear-head span { color: var(--color-gold); font: var(--text-sm)/1 var(--font-label); }
.gear-head h2 { margin: 0; color: var(--color-paper-dim); font: 500 var(--text-lg)/1.3 var(--font-display); letter-spacing: .12em; }
.gear-head p { flex: 0 0 auto; margin: 0; color: var(--color-gold); font-size: var(--text-xs); }
.choice-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-2xs); }
.choice-grid--toy { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.item-choice { position: relative; min-width: 0; min-height: 104px; padding: var(--space-xs) var(--space-3xs) var(--space-2xs); border: var(--rule-thin) solid var(--color-rule); background: var(--color-night-raised); color: var(--color-paper-dim); clip-path: polygon(0 8%, 25% 2%, 50% 7%, 76% 1%, 100% 8%, 100% 92%, 75% 99%, 50% 94%, 25% 100%, 0 92%); cursor: pointer; transition: transform var(--dur-fast) var(--ease-out), background-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out); }
.item-choice .item-icon { width: 40px; height: 40px; margin: 0 auto var(--space-2xs); fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2.4; }
.item-choice span { display: block; min-width: 0; font: 500 12px/1.25 var(--font-display); overflow-wrap: anywhere; }
.item-choice small { display: block; margin-top: var(--space-3xs); color: var(--color-muted); font: 7px/1 var(--font-label); letter-spacing: .14em; }
.item-choice.selected { color: var(--color-gold); border-color: var(--color-gold); background: var(--color-indigo); transform: scale(1.05); animation: select-pop 360ms var(--ease-out); }
.item-choice.selected::after { content: "✓"; position: absolute; top: 8px; right: 8px; display: grid; place-items: center; width: 18px; height: 18px; border-radius: 50%; background: var(--color-gold); color: var(--color-ink); font: 700 11px/1 var(--font-body); }
.item-choice:disabled { opacity: .45; cursor: not-allowed; }
.item-choice:active { transform: translateY(1px); }
.item-choice[data-state="loading"] { opacity: .7; }
.item-choice[data-state="error"] { border-color: var(--color-error); }
.item-choice[data-state="success"] { border-color: var(--color-success); }
.gear-action { position: fixed; z-index: 20; inset: auto max(var(--space-md), env(safe-area-inset-right)) max(var(--space-sm), env(safe-area-inset-bottom)) max(var(--space-md), env(safe-area-inset-left)); width: min(calc(100% - 40px), 440px); margin-inline: auto; text-align: center; }
@media (hover: hover) and (pointer: fine) { .item-choice:hover { transform: translateY(-2px); color: var(--color-gold); } }

/* Bag */
.bag-screen { min-height: 100svh; background: radial-gradient(circle at 55% 65%, var(--color-indigo), transparent 33%), var(--color-night-deep); }
.bag-intro { margin-block-start: var(--space-lg); }
.bag-intro h1 { margin: 0 0 var(--space-md); color: var(--color-paper); font: 500 var(--text-2xl)/1.2 var(--font-display); letter-spacing: .12em; }
.bag-intro p { margin: 0; color: var(--color-paper-dim); font: var(--text-base)/1.6 var(--font-display); letter-spacing: .12em; }
.bag-route { position: relative; min-height: 480px; padding-block: var(--space-xl); }
.bag-route::before { content: ""; position: absolute; top: 0; bottom: 0; left: 50%; width: 2px; background: repeating-linear-gradient(var(--color-cyan) 0 10px, transparent 10px 20px); transform: rotate(9deg); opacity: .7; }
.bag-orbit { position: relative; min-height: 142px; opacity: 0; animation: orbit-in 480ms var(--ease-out) var(--delay) forwards; }
.bag-orbit:nth-child(odd) .bag-item { margin-inline: auto 6%; }
.bag-orbit:nth-child(even) .bag-item { margin-inline: 6% auto; }
.bag-item { display: grid; place-items: center; width: 126px; height: 126px; border: 2px solid var(--color-indigo); border-radius: 50%; background: var(--color-night); box-shadow: 0 0 34px var(--color-indigo-glow); }
.bag-item .item-icon { width: 58px; height: 58px; fill: none; stroke: var(--color-gold); stroke-linecap: round; stroke-linejoin: round; stroke-width: 2; }
.bag-item strong { color: var(--color-paper-dim); font: 500 var(--text-sm)/1 var(--font-display); letter-spacing: .14em; }
.bag-action { margin-block-start: var(--space-sm); text-align: center; }

/* Gift pages */
.gift-screen { padding-inline: var(--space-lg); }
.gift-screen--five { background: linear-gradient(180deg, var(--color-violet), var(--color-night) 57%, var(--color-night-deep)); }
.gift-screen--ten { background: linear-gradient(180deg, var(--color-night-raised), var(--color-indigo) 32%, var(--color-night-deep)); }
.gift-screen--now { background: var(--color-night-deep); }
.scene { position: relative; height: 265px; margin: 0 calc(var(--space-lg) * -1) var(--space-lg); overflow: hidden; }
.carousel { position: absolute; inset: 32px 8% 5px; }
.carousel-roof { position: absolute; top: 20px; left: 10%; width: 80%; height: 86px; border-radius: 52% 52% 9% 9%; background: repeating-conic-gradient(from -14deg at 50% 100%, var(--color-red) 0 12deg, var(--color-paper) 12deg 24deg); box-shadow: 0 9px 0 var(--color-gold); }
.carousel-roof::after { content: ""; position: absolute; left: 49%; bottom: -118px; width: 3px; height: 120px; background: var(--color-gold); }
.carousel-base { position: absolute; left: 8%; right: 8%; bottom: 12px; height: 45px; border-radius: 50%; background: var(--color-red); border: 4px solid var(--color-paper-dim); }
.horse { position: absolute; z-index: 2; bottom: 38px; width: 72px; height: 42px; color: var(--color-paper); animation: horse-rise 2.4s var(--ease-in-out) infinite; }
.horse::before { content: ""; position: absolute; inset: 10px 8px 4px; border-radius: 55% 40% 45% 55%; background: currentColor; }
.horse::after { content: ""; position: absolute; right: 4px; top: 2px; width: 20px; height: 25px; border-radius: 50% 50% 15% 40%; background: currentColor; transform: rotate(-24deg); }
.horse-1 { left: 12%; }
.horse-2 { left: 40%; animation-delay: -1.2s; }
.horse-3 { right: 9%; animation-delay: -.6s; }
.gift-narration { min-height: 285px; margin: 0 0 var(--space-lg); color: var(--color-cream); font: 400 var(--text-base)/1.9 var(--font-display); letter-spacing: .035em; }
.gift-choices { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-sm); margin-block: var(--space-lg); }
.gift-screen--ten .gift-choices { grid-template-columns: repeat(2, minmax(0, 1fr)); max-width: 300px; margin-inline: auto; }
.gift-card, .last-item { position: relative; min-width: 0; min-height: 142px; padding: var(--space-sm) var(--space-2xs); border: var(--rule-thin) solid var(--color-paper-dim); background: var(--color-paper); color: var(--color-ink); clip-path: polygon(0 6%, 24% 0, 48% 5%, 72% 0, 100% 6%, 100% 94%, 76% 100%, 50% 94%, 25% 100%, 0 94%); cursor: pointer; transition: transform var(--dur-fast) var(--ease-out), opacity var(--dur-fast) var(--ease-out); }
.gift-card .item-icon, .last-item .item-icon { width: 58px; height: 58px; margin: 0 auto var(--space-xs); fill: none; stroke: var(--color-gold-deep); stroke-linecap: round; stroke-linejoin: round; stroke-width: 2.2; }
.gift-card strong, .last-item strong { display: block; font: 600 var(--text-sm)/1.2 var(--font-display); letter-spacing: .08em; }
.gift-card small, .last-item small { display: block; margin-top: var(--space-2xs); color: var(--color-muted); font: 8px/1 var(--font-label); letter-spacing: .15em; }
.gift-card:disabled { opacity: .33; cursor: not-allowed; }
.gift-card:active { transform: translateY(1px); }
.gift-card[data-state="loading"] { opacity: .7; }
.gift-card[data-state="error"] { border-color: var(--color-error); }
.gift-card[data-state="success"] { border-color: var(--color-success); }
.gift-card.selected { opacity: 1; color: var(--color-gold-deep); outline: 2px solid var(--color-gold); outline-offset: 3px; transform: translateY(-3px); }
.gift-feedback { min-height: 78px; margin: var(--space-lg) auto; color: var(--color-paper); font: 500 var(--text-base)/1.8 var(--font-display); text-align: center; }
.gift-continue { margin-block-start: var(--space-lg); text-align: center; }
@media (hover: hover) and (pointer: fine) { .gift-card:not(:disabled):hover { transform: translateY(-3px); } }
.rain { position: absolute; inset: 0; opacity: .5; background: repeating-linear-gradient(75deg, transparent 0 17px, var(--color-cyan) 18px 19px, transparent 20px 34px); background-size: 86px 100%; animation: rain 1.2s linear infinite; }
.campfire { position: absolute; left: 50%; bottom: 38px; width: 130px; height: 155px; transform: translateX(-50%); }
.campfire::after { content: ""; position: absolute; left: 10px; right: 10px; bottom: 0; height: 18px; border-radius: 50%; background: var(--color-ink); box-shadow: 0 0 48px var(--color-gold); }
.flame { position: absolute; left: 50%; bottom: 12px; width: 88px; height: 126px; border-radius: 48% 52% 55% 45% / 65% 60% 40% 35%; background: var(--color-red); transform: translateX(-50%) rotate(45deg); animation: flame 1.4s var(--ease-in-out) infinite alternate; }
.flame::before { content: ""; position: absolute; inset: 28px 22px 12px 28px; border-radius: inherit; background: var(--color-gold); }
.flame::after { content: ""; position: absolute; inset: 54px 39px 13px 43px; border-radius: inherit; background: var(--color-paper); }
.cabin-scene { height: 310px; }
.moon { position: absolute; left: 13%; top: 20px; width: 64px; height: 64px; border-radius: 50%; background: var(--color-paper); box-shadow: 14px -3px 0 0 var(--color-night-deep), 0 0 35px var(--color-paper-dim); }
.cabin { position: absolute; left: 50%; top: 105px; width: 142px; height: 105px; transform: translateX(-50%); background: var(--color-paper-dim); border: 2px solid var(--color-muted); box-shadow: 0 0 34px var(--color-gold-deep); }
.cabin::before { content: ""; position: absolute; left: -16px; top: -49px; width: 174px; height: 64px; background: var(--color-paper); clip-path: polygon(50% 0, 100% 76%, 92% 100%, 50% 36%, 8% 100%, 0 76%); }
.cabin::after { content: ""; position: absolute; left: 58px; bottom: 0; width: 33px; height: 66px; background: var(--color-ink); border: 3px solid var(--color-gold); }
.path { position: absolute; left: 50%; top: 202px; width: 155px; height: 110px; transform: translateX(-50%); background: linear-gradient(var(--color-paper-dim), transparent); clip-path: polygon(42% 0, 62% 0, 100% 100%, 0 100%); opacity: .35; }
.now-choice { text-align: center; }
.last-item { display: inline-block; width: 166px; min-height: 160px; cursor: default; box-shadow: 0 0 32px var(--color-gold-glow); }
.now-confirm { margin-block-start: var(--space-md); }

/* Nickname + analysis */
.nickname-screen { background: var(--color-night-deep); }
.nickname-wrap { width: 100%; text-align: center; }
.nickname-wrap h1 { margin: 0; color: var(--color-paper); font: 500 var(--text-xl)/1.5 var(--font-display); letter-spacing: .1em; }
.nickname-wrap > p { margin: var(--space-2xs) 0 var(--space-xl); color: var(--color-muted); font-size: var(--text-sm); }
.field { position: relative; }
.field label { display: block; margin-block-end: var(--space-2xs); color: var(--color-cream); font-size: var(--text-sm); text-align: start; }
.field input { width: 100%; height: 62px; padding: 0 58px 0 var(--space-lg); border: 1px solid var(--color-cream); border-radius: var(--radius-round); outline: 2px solid transparent; outline-offset: 1px; background: var(--color-night-deep); color: var(--color-cream); font-size: var(--text-lg); text-align: center; transition: background-color var(--dur-fast) var(--ease-out); }
.field input::placeholder { color: var(--color-muted); }
.field input[aria-invalid="true"] { border-color: var(--color-error); }
.field input:focus-visible { outline-color: var(--color-focus); }
.field-count { position: absolute; right: var(--space-lg); bottom: 22px; color: var(--color-muted); font-size: var(--text-xs); }
.nickname-submit { display: grid; place-items: center; width: 148px; height: 148px; min-width: 0; padding-inline: var(--space-xs); margin: var(--space-2xl) auto 0; border-radius: 50%; clip-path: none; font: 700 var(--text-lg)/1.2 var(--font-body); letter-spacing: .05em; box-shadow: 0 0 28px var(--color-paper-dim); }
.analysis-screen { background: var(--color-night-deep); }
.analysis-text { min-height: 330px; margin: 0; color: var(--color-cream); font: 700 clamp(22px, 7vw, 32px)/1.45 var(--font-body); text-align: center; letter-spacing: -.015em; }
.analysis-text::first-line { color: var(--color-cyan); }

/* Result */
.result-screen { padding: 0; background: var(--color-night-deep); overflow: visible; }
.result-card { position: relative; width: 100%; padding: max(var(--space-3xl), env(safe-area-inset-top)) var(--space-lg) var(--space-xl); background: var(--color-night-deep); color: var(--color-cream); }
.result-card::before { content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .25; background-image: radial-gradient(circle at 20% 12%, var(--color-cream) 0 1px, transparent 1.3px), radial-gradient(circle at 82% 26%, var(--color-gold) 0 1px, transparent 1.4px); background-size: 127px 137px, 173px 181px; }
.result-card > * { position: relative; }
.result-hero { text-align: center; }
.avatar-ring { display: grid; place-items: center; width: 134px; height: 134px; margin: 0 auto var(--space-lg); border: 2px solid var(--color-gold); border-radius: 50%; background: var(--color-violet); overflow: hidden; }
.avatar-ring img { width: 72px; height: auto; transform: translateY(16px); }
.result-owner { margin: 0; color: var(--color-muted); font-size: var(--text-sm); }
.result-prefix { margin: var(--space-2xs) 0 0; color: var(--color-gold); font: 600 var(--text-base)/1.4 var(--font-display); letter-spacing: .12em; }
.result-hero h1 { min-width: 0; margin: var(--space-2xs) 0 0; color: var(--color-paper); font: 500 var(--text-display)/1.06 var(--font-display); letter-spacing: -.04em; overflow-wrap: anywhere; }
.result-en { margin: 0; color: var(--color-muted); font: var(--text-xs)/1 var(--font-label); letter-spacing: .28em; }
.result-subtitle { margin: var(--space-sm) 0 0; color: var(--color-paper-dim); font-size: var(--text-sm); }
.keywords { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--space-2xs); margin-block-start: var(--space-md); }
.keyword { padding: 7px 12px; border: 1px solid currentColor; border-radius: var(--radius-round); font-size: var(--text-xs); font-weight: 700; }
.keyword-1 { color: var(--color-cyan); }
.keyword-2 { color: var(--color-pink); }
.keyword-3 { color: var(--color-green); }
.result-module { margin-block-start: var(--space-2xl); }
.result-module h2 { display: flex; align-items: center; gap: var(--space-xs); margin: 0 0 var(--space-lg); color: var(--color-paper); font: 600 var(--text-lg)/1.3 var(--font-display); letter-spacing: .14em; text-align: center; }
.result-module h2 span { flex: 1; height: 1px; background: var(--color-rule); }
.energy-copy { margin: 0; color: var(--color-paper-dim); font: 400 var(--text-sm)/1.95 var(--font-display); }
.gift-module h2 { display: block; }
.gift-timeline { position: relative; }
.gift-timeline::before { content: ""; position: absolute; top: 24px; bottom: 24px; left: 17px; border-inline-start: 1px dashed var(--color-rule-strong); }
.gift-result { display: grid; grid-template-columns: minmax(0, 1fr) 66px; gap: var(--space-sm); align-items: center; min-height: 116px; padding-inline-start: var(--space-xl); }
.gift-copy { position: relative; min-width: 0; }
.gift-copy::before { content: ""; position: absolute; left: calc(var(--space-xl) * -1 - 6px); top: 4px; width: 10px; height: 10px; border: 2px solid var(--color-gold); border-radius: 50%; background: var(--color-night-deep); }
.gift-copy p { margin: 0 0 var(--space-2xs); color: var(--color-muted); font-size: var(--text-xs); }
.gift-copy p b { color: var(--color-gold); font-family: var(--font-label); }
.gift-copy strong { display: block; color: var(--color-paper-dim); font: 400 var(--text-sm)/1.65 var(--font-display); }
.gift-icon { display: grid; place-items: center; width: 58px; height: 58px; border: 1px solid var(--color-gold); border-radius: 50%; background: var(--color-paper); color: var(--color-gold-deep); }
.gift-icon .item-icon { width: 34px; height: 34px; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 2.3; }
.dialogue-module { margin-block-start: var(--space-xl); }
.dialogue-module article { margin-block-start: var(--space-md); padding: var(--space-lg); border: 1px solid var(--color-rule); border-radius: var(--radius-md); background: var(--color-night-raised); color: var(--color-paper-dim); }
.dialogue-module span { color: var(--color-muted); font-size: var(--text-xs); letter-spacing: .12em; }
.dialogue-module p { margin: var(--space-xs) 0 0; font: 400 var(--text-base)/1.75 var(--font-display); }
.action-module > h2 { display: block; margin-block-end: var(--space-2xs); }
.action-module > p { margin: 0 0 var(--space-lg); color: var(--color-muted); font-size: var(--text-xs); text-align: center; }
.action-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-2xs); }
.action-grid article { min-width: 0; padding: var(--space-sm) var(--space-3xs); background: var(--color-paper); color: var(--color-ink); text-align: center; clip-path: polygon(0 6%, 25% 0, 50% 6%, 75% 0, 100% 6%, 100% 94%, 75% 100%, 50% 94%, 25% 100%, 0 94%); }
.action-grid svg { width: 38px; height: 38px; margin: 0 auto var(--space-2xs); fill: none; stroke: var(--color-gold-deep); stroke-linecap: round; stroke-linejoin: round; stroke-width: 2.2; }
.action-grid strong { display: block; min-height: 36px; font: 500 var(--text-xs)/1.45 var(--font-display); overflow-wrap: anywhere; }
.action-grid small { display: block; margin-top: var(--space-2xs); color: var(--color-muted); font: 7px/1 var(--font-label); letter-spacing: .1em; }
.result-signature { margin-block-start: var(--space-2xl); color: var(--color-muted); font: 8px/1 var(--font-label); letter-spacing: .18em; text-align: center; }
.result-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-sm); padding: var(--space-lg) var(--space-lg) max(var(--space-lg), env(safe-area-inset-bottom)); background: var(--color-night-deep); }
.result-actions button { min-width: 0; width: 100%; padding-inline: var(--space-sm); font-size: var(--text-base); letter-spacing: .08em; }
.result-actions .secondary { border: 1px solid var(--color-gold); background: var(--color-night-deep); color: var(--color-gold); }
.result-actions .secondary::before { border-color: transparent; }

/* Toast + save overlay */
.toast { position: fixed; z-index: 100; left: 50%; bottom: max(var(--space-xl), env(safe-area-inset-bottom)); width: max-content; max-width: calc(100% - 40px); padding: 12px 18px; border: 1px solid var(--color-rule-strong); border-radius: var(--radius-round); background: var(--color-paper); color: var(--color-ink); font-size: var(--text-sm); opacity: 0; transform: translate(-50%, 10px); pointer-events: none; transition: opacity var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out); }
.toast.is-visible { opacity: 1; transform: translate(-50%, 0); }
.toast.is-error { background: var(--color-error); color: var(--color-night-deep); }
.toast.is-success { background: var(--color-success); color: var(--color-night-deep); }
.save-overlay { position: fixed; z-index: 110; inset: 0; padding: max(var(--space-lg), env(safe-area-inset-top)) var(--space-md) max(var(--space-lg), env(safe-area-inset-bottom)); background: var(--color-overlay); opacity: 0; overflow-y: auto; transition: opacity var(--dur-base) var(--ease-out); }
.save-overlay.is-open { opacity: 1; }
.save-overlay p { position: sticky; z-index: 2; top: 0; margin: 0 0 var(--space-md); padding: var(--space-xs); border-radius: var(--radius-round); background: var(--color-paper); color: var(--color-ink); font-size: var(--text-sm); text-align: center; }
.save-overlay img { width: min(100%, 750px); height: auto; margin-inline: auto; box-shadow: 0 16px 58px var(--color-shadow); }

@keyframes page-in { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
@keyframes cursor-blink { 50% { opacity: 0; } }
@keyframes spin { to { transform: rotate(360deg); } }
@keyframes walk-bob { 50% { transform: translate(-50%, -5px) rotate(-1deg); } }
@keyframes float { 50% { transform: translateY(-12px) rotate(7deg); } }
@keyframes select-pop { 50% { transform: scale(1.09); } }
@keyframes orbit-in { from { opacity: 0; transform: scale(.88) translateY(10px); } to { opacity: 1; transform: none; } }
@keyframes horse-rise { 50% { transform: translateY(-8px); } }
@keyframes rain { to { background-position: 30px 80px; } }
@keyframes flame { to { transform: translateX(-50%) rotate(43deg) scale(.94, 1.05); } }

@media (min-width: 40rem) {
  .app-shell { margin-block: var(--space-xl); min-height: calc(100svh - var(--space-4xl)); border: 1px solid var(--color-rule); }
  .screen { min-height: calc(100svh - var(--space-4xl)); }
}
@media (max-width: 350px) {
  .screen { padding-inline: var(--space-sm); }
  .result-screen { padding-inline: 0; }
  .choice-grid { gap: var(--space-3xs); }
  .item-choice { min-height: 96px; }
  .gift-choices { gap: var(--space-2xs); }
  .paper-button { padding-inline: var(--space-lg); }
}
@media (pointer: coarse) { .paper-button, .item-choice, .gift-card { min-height: 48px; } }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: 1ms !important; animation-iteration-count: 1 !important; transition-duration: 1ms !important; }
}
