.identity .identity-home { padding:0; border:0; background:none; font:25px var(--serif); color:#ad3979; }
.identity .identity-name { padding:4px 0 4px 20px; border:0; border-left:1px solid var(--line); background:none; font-size:12px; color:#365f78; }
.identity button,.book-name .name-charm { min-height:44px; }
.book-name .name-charm { font:inherit; color:inherit; background:none; border:0; padding:0; text-align:left; }
.name-charm:focus-visible { outline:2px solid #ad3979; outline-offset:6px; }
.spell-sparks { position:fixed; width:0; height:0; pointer-events:none; z-index:100; }
.spell-spark { position:absolute; display:block; width:13px; height:17px; color:#b8548c; pointer-events:none; }
.spell-spark svg { display:block; width:100%; height:100%; fill:#f5fbfe; stroke:currentColor; stroke-width:1.35; stroke-linecap:round; stroke-linejoin:round; }
.spell-spark:nth-child(even) { color:#70a9c5; }
.wand-luminescence { position:fixed; inset:0; display:block; width:100vw; height:100svh; pointer-events:none; z-index:95; }
.spell-particle.water-drop { width:24px; height:34px; border:0; background:none; border-radius:0; box-shadow:none; transform:none; transform-origin:50% 0; }
.spell-particle.water-drop::after { display:none; }
.water-drop svg { display:block; width:100%; height:100%; overflow:visible; }
.water-drop-body { fill:#b7dfed; fill-opacity:.85; stroke:#78abc4; stroke-width:1.2; }
.water-drop-light { fill:none; stroke:#fff; stroke-width:2.1; stroke-linecap:round; opacity:.95; }
.water-drop-glint { stroke:#edfaff; stroke-width:3; stroke-linecap:round; }
.water-drop-neck { position:absolute; width:12px; height:18px; transform-origin:50% 0; }
.water-drop-neck svg { width:100%; height:100%; fill:#b7dfed; stroke:#8cbdd1; stroke-width:.8; }
.water-drop-ripple { position:absolute; width:34px; height:10px; border:1.5px solid #91c5d8; border-radius:50%; }
.spell-splash.is-water { width:5px; height:7px; background:#a9d5e5; border:1px solid #8ab7ce; }
.inspiration-note { position:fixed; z-index:100; left:50%; bottom:max(64px,calc(env(safe-area-inset-bottom) + 28px)); transform:translateX(-50%); max-width:calc(100vw - 48px); width:max-content; padding:12px 22px; border-block:1px solid #d49cbb; color:#a43e75; background:#f5fbfef2; font:17px/1.7 "Songti SC",serif; pointer-events:none; text-align:center; }
.potion-sway { position:relative; display:block; transform-origin:50% 72%; }
.potion-visit { position:absolute; display:grid; place-items:center; width:29px; height:29px; right:0; top:12%; color:#ad3979; transform:rotate(9deg); pointer-events:none; }
.potion-visit svg { width:25px; height:25px; fill:#f5fbfe; stroke:currentColor; stroke-width:1.35; stroke-linecap:round; stroke-linejoin:round; }
.potion-visit .visit-dot { fill:#93bfd3; stroke:none; }
.book-corner-curl { position:absolute; z-index:3; width:40px; height:40px; right:5%; bottom:18%; pointer-events:none; opacity:0; transform:translate(3px,5px) rotate(-9deg) scale(.65); transform-origin:100% 100%; transition:opacity .18s ease,transform .28s ease; }
.book-corner-curl svg { display:block; width:100%; height:100%; overflow:visible; fill:#e5f2f8; stroke:#8bb7cd; stroke-width:1.3; stroke-linecap:round; stroke-linejoin:round; }
.book-corner-curl svg .curl-fold { fill:none; stroke:#c27da5; }
.spellbook[data-curl="back"] .book-corner-curl { right:auto; left:14%; bottom:18%; transform-origin:0 100%; scale:-1 1; }
@media(hover:hover) and (pointer:fine) {
 html.magic-pointer body { cursor:url('./assets/wand-cursor.svg') 6 6,auto; }
 html.magic-pointer :is(button:not(:disabled),a[href],summary,[role="button"],.spellbook[data-book-page="profile"]) { cursor:url('./assets/wand-cursor-lit.svg') 6 6,pointer; }
 html.magic-pointer :is(input,textarea,[contenteditable="true"]) { cursor:text; }
 html.magic-pointer :is(input[type="range"],video) { cursor:auto; }
 html.magic-pointer :is(button:disabled,[aria-disabled="true"]) { cursor:not-allowed; }
 html.magic-pointer [data-potion] { cursor:url('./assets/wand-cursor-lit.svg') 6 6,grab; }
 html.magic-pointer #bellRope { cursor:url('./assets/hand-open.svg') 16 14,grab; }
 html.magic-pointer :is(.bell-rope:active,body.is-rope-pulling,body.is-rope-pulling *,body.is-potion-dragging,body.is-potion-dragging *) { cursor:url('./assets/hand-grab.svg') 16 14,grabbing!important; }
 .potion:is(.is-near,:focus-visible) .potion-sway { animation:potion-greeting 1.05s ease-in-out; }
 .potion:is(.is-near,:focus-visible) .potion-name { transform-origin:50% -7px; animation:potion-tag-swing 1.4s ease-in-out; }
 .potion:is(.is-near,:focus-visible) .liquid-surface { animation:liquid-greeting 1.7s ease-in-out infinite; }
 .potion:is(.is-near,:focus-visible) .bead-part,.potion:is(.is-near,:focus-visible) .gummy-part { animation-duration:2.4s; }
 .potion:is(.is-near,:focus-visible) .pipette-liquid path { animation-duration:3s; }
 .spellbook[data-curl] .book-corner-curl { opacity:1; transform:translate(0,-2px) rotate(-7deg) scale(1); }
}
.is-potion-dragging .potion-sway,.lab-stage.is-mixing .potion-sway { animation:none!important; }
.spellbook.is-page-turning .book-corner-curl { display:none; }
@keyframes potion-greeting { 0%,100% { transform:rotate(0); } 25% { transform:rotate(-2deg); } 65% { transform:rotate(1.6deg); } }
@keyframes potion-tag-swing { 0%,100% { transform:translate(-50%,0) rotate(0); } 25% { transform:translate(-50%,0) rotate(-4deg); } 65% { transform:translate(-50%,0) rotate(2.5deg); } }
@keyframes liquid-greeting { 0%,100% { transform:translateY(0) rotate(-1deg); } 50% { transform:translateY(-2px) rotate(1.8deg); } }
@media(max-width:820px) { .identity .identity-home { font-size:20px; } .identity .identity-name { padding-left:12px; } .book-corner-curl { display:none; } }
@media(max-width:420px) { .identity .identity-name { display:none; } .inspiration-note { font-size:16px; } }
@media(prefers-reduced-motion:reduce) {
 .potion-sway,.potion-name,.potion .liquid-surface,.potion .bead-part,.potion .gummy-part,.potion .pipette-liquid path { animation:none!important; }
 .book-corner-curl { transition:none; }
}
@media(forced-colors:active) { html.magic-pointer body,html.magic-pointer :is(button,a,summary) { cursor:auto; } }
