.tab-bar{position:fixed;left:0;right:0;bottom:0;z-index:10;display:flex;max-width:640px;margin:0 auto;background:var(--bg-sunken);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}.tab{flex:1;background:transparent;border:none;padding:10px 4px 12px;display:flex;flex-direction:column;align-items:center;gap:3px;color:var(--ink-faint)}.tab-glyph{font-size:19px;line-height:1}.tab-label{font-size:11px;letter-spacing:.05em}.tab.is-active{color:var(--gold-soft)}.tab.is-active .tab-glyph{text-shadow:0 0 12px rgba(201,169,79,.5)}:root{--grain-h: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='720' height='120'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.0025 0.22' numOctaves='4' seed='7' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.15 0 0 0 -0.46'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23g)'/%3E%3C/svg%3E")}.shelf-unit{display:flex;flex-direction:column;gap:30px;margin:10px 0 30px}.shelf-row{position:relative}.shelf-row:before{content:"";position:absolute;inset:-10px 6px 30px;background:radial-gradient(ellipse 55% 70% at 50% 75%,rgba(255,190,110,.08),transparent 70%);pointer-events:none}.shelf-grid{position:relative;display:grid;grid-template-columns:repeat(3,1fr);gap:8px;align-items:end;padding:0 14px}.shelf-row .shelf-grid>*{background:radial-gradient(ellipse 42% 7px at 50% calc(100% - 2px),rgba(0,0,0,.55),transparent)}.shelf-plank{position:relative;height:17px;margin:0 4px;border-radius:2px;background:linear-gradient(90deg,rgba(0,0,0,.35) 0 3px,transparent 3px calc(100% - 3px),rgba(0,0,0,.35) calc(100% - 3px)),var(--grain-h),linear-gradient(#a8805d 0 2px,#8a6748 2px 5px,#6a4e38 5px 6px,#5e4532 6px 14px,#46321f 14px);box-shadow:0 22px 20px -16px #000000d9,0 5px 6px -2px #0000008c}.shelf-fills{position:relative;display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:0 14px;margin-top:-9px}.shelf-fill{position:relative;justify-self:center;max-width:100%;min-width:0;display:flex;flex-direction:column;align-items:center;padding:5px 9px 4px;border-radius:2px;background:linear-gradient(#efe6cf,#e3d6b6);box-shadow:0 2px 4px #00000080,inset 0 0 0 1px #7a5a2e33;text-align:center;transform:rotate(-1.5deg)}.shelf-fill:nth-child(2n){transform:rotate(1.2deg)}.shelf-fill:before{content:"";position:absolute;top:-3px;left:50%;width:7px;height:7px;margin-left:-3.5px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#f6e2a0,#b08a3a 60%,#5e4520);box-shadow:0 1px 1px #00000080}.shelf-fill-name{font-size:14px;font-style:italic;line-height:1.2;color:#3a2f1c;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.shelf-fill-level{font-size:12px;font-style:italic;line-height:1.25;color:#6b5a40}.shelf-fill-level.status--ok{color:#3f7a3a}.shelf-fill-level.status--due{color:#8a6a1c}.shelf-fill-level.status--overdue{color:#a03a3a}.jar{background:transparent;border:none;padding:0;display:flex;justify-content:center}.jar-glass{position:relative;display:block;width:100%;max-width:88px;aspect-ratio:72 / 108}.sheet-scrim{position:fixed;inset:0;z-index:20;background:#08051099;display:flex;align-items:flex-end;justify-content:center}.sheet{width:100%;max-width:640px;background:var(--bg-raised);border-top-left-radius:20px;border-top-right-radius:20px;border:1px solid var(--line);border-bottom:none;padding:8px 18px calc(env(safe-area-inset-bottom) + 40px);max-height:90vh;overflow-y:auto}.sheet-grip{width:38px;height:4px;border-radius:2px;background:var(--ink-faint);opacity:.5;margin:6px auto 16px}.fill-read{text-align:center;margin-bottom:12px}.fill-read strong{font-size:22px;color:var(--gold-soft);font-weight:600;letter-spacing:.02em}.fill-slider{-webkit-appearance:none;appearance:none;width:100%;height:14px;border-radius:999px;background:var(--bg-sunken);border:1px solid var(--line);margin-bottom:14px}.fill-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:30px;height:30px;border-radius:50%;background:var(--gold);border:3px solid var(--bg-raised);cursor:pointer}.fill-slider::-moz-range-thumb{width:28px;height:28px;border-radius:50%;background:var(--gold);border:3px solid var(--bg-raised);cursor:pointer}.chip-row{display:flex;gap:5px;margin-bottom:22px}.chip{flex:1;padding:9px 2px;border-radius:10px;border:1px solid var(--line);background:var(--bg-sunken);color:var(--ink-dim);font-size:13px}.chip.is-on{background:var(--gold);color:#241a10;border-color:var(--gold)}.field{display:flex;flex-direction:column;gap:5px;margin-bottom:14px}.field>span{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint)}.field input,.field textarea{background:var(--bg-sunken);border:1px solid var(--line);border-radius:10px;padding:11px 12px;color:var(--ink);width:100%}.field textarea{resize:vertical}.field-row{display:flex;gap:12px}.field-row .field{flex:1;min-width:0}.refill-field{justify-content:flex-end}.refill-btn{height:42px;font-size:12.5px;white-space:normal;line-height:1.3}.refill-tip{margin:-6px 0 14px;padding:10px 12px;background:var(--bg-sunken);border-left:3px solid var(--gold);border-radius:6px;font-size:12.5px;line-height:1.5;color:var(--ink-dim)}.tint-row{display:flex;gap:8px;flex-wrap:wrap}.tint{width:34px;height:34px;border-radius:50%;border:2px solid transparent;padding:0}.tint.is-on{border-color:var(--gold-soft);box-shadow:0 0 0 2px var(--bg-raised) inset}.sheet-done{display:block;width:100%;margin-top:8px}.remove-btn{display:block;width:100%;margin-top:14px;padding:12px;background:transparent;border:1px solid var(--line);border-radius:12px;color:var(--danger);font-size:14px}.remove-btn.is-confirming{background:var(--danger);border-color:var(--danger);color:#2a1414;font-weight:600}.drying-rack{margin:4px 0 26px}.rack-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.rack-head h3{margin:0;font-size:15px;color:var(--gold-soft)}.rack-add{font-size:12.5px;padding:6px 12px}.rack-rod-wrap{position:relative;padding-top:26px;margin-bottom:18px}.rack-bracket{position:absolute;top:0;z-index:2;filter:drop-shadow(0 3px 3px rgba(0,0,0,.45))}.rack-bracket--left{left:14px}.rack-bracket--right{right:14px}.rack-rod{position:relative;height:13px;margin:0 8px;border-radius:7px;background:var(--grain-h),linear-gradient(#b08a64,#8a6748 40%,#5a412d 85%,#46321f);box-shadow:0 7px 9px -3px #0009}.rack-rod:before,.rack-rod:after{content:"";position:absolute;top:-3px;width:15px;height:19px;border-radius:50%;background:radial-gradient(circle at 40% 35%,#b8916a,#7a5a3e 60%,#4a3423);box-shadow:0 4px 6px -2px #0000008c}.rack-rod:before{left:-6px}.rack-rod:after{right:-6px}.rack-bundles{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;padding:0 40px;margin-top:-4px}.rack-slot{display:flex;flex-direction:column;align-items:center;min-width:0}.herb-bundle{display:block;width:100%;max-width:52px;aspect-ratio:44 / 96;padding:0;border:none;background:transparent;transform-origin:top center;animation:bundle-sway 6s ease-in-out infinite}.rack-slot:nth-child(2n) .herb-bundle{animation-delay:-3s}@keyframes bundle-sway{0%,to{transform:rotate(-1.5deg)}50%{transform:rotate(1.5deg)}}@media(prefers-reduced-motion:reduce){.herb-bundle{animation:none}}.bundle-tag{margin-top:6px;padding:3px 6px 2px}.bundle-tag .shelf-fill-name{font-size:12px}.bundle-tag .shelf-fill-level{font-size:10.5px;white-space:nowrap}.bundle-status{display:flex;flex-direction:column;gap:4px;text-align:center;margin-bottom:18px}.bundle-status strong{font-size:18px;color:var(--gold-soft)}.bundle-status span{font-size:13px;line-height:1.5;color:var(--ink-dim)}.bundle-warn{margin:-6px 0 14px;padding:10px 12px;background:var(--bg-sunken);border-left:3px solid var(--danger);border-radius:6px;font-size:12.5px;line-height:1.5;color:var(--ink-dim)}.bundle-close{display:block;width:100%;margin-top:10px;padding:11px}.rack-empty{margin:14px 8px 0;font-size:13px;font-style:italic;line-height:1.5;color:var(--ink-faint);text-align:center}.apothecary-empty{text-align:center;padding:48px 16px;color:var(--ink-faint)}.apothecary-empty p{margin-bottom:18px}.add-jar-btn{display:block;width:100%;background:transparent;color:var(--gold-soft);border:1px dashed var(--line)}.add-jar-btn:active{background:var(--bg-raised);filter:none}.crystal-item{background:transparent;border:none;padding:0;display:flex;justify-content:center}.crystal-gem{position:relative;display:block;width:100%;max-width:88px;aspect-ratio:72 / 108}.care-row{background:var(--bg-sunken);border:1px solid var(--line);border-radius:10px;padding:12px;margin-bottom:14px}.care-row-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.care-row-head>span:first-child{font-size:13px;font-weight:600;color:var(--ink)}.care-status{font-size:11px;padding:2px 8px;border-radius:999px}.care-status--ok{background:#7fae7a2e;color:#9fce9a}.care-status--due{background:#c9a94f33;color:var(--gold-soft)}.care-status--overdue{background:#d98b8b33;color:var(--danger)}.care-status--never{background:var(--bg-raised);color:var(--ink-faint)}.care-row-body{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;font-size:12px;color:var(--ink-faint)}.care-interval{display:flex;align-items:center;gap:5px}.care-interval input{width:44px;background:var(--bg-raised);border:1px solid var(--line);border-radius:6px;padding:4px;color:var(--ink);text-align:center}.care-log-btn{display:block;width:100%;padding:9px;font-size:13px}.moon-tip{background:var(--bg-sunken);border:1px solid var(--line);border-left:3px solid var(--gold);border-radius:8px;padding:10px 12px;font-size:13px;line-height:1.5;color:var(--ink-dim);margin:-6px 0 18px}.crystal-meaning{margin:-8px 0 14px;font-size:12.5px;font-style:italic;color:var(--ink-faint)}.crystal-guide{margin-top:28px;padding-top:16px;border-top:1px solid var(--line)}.crystal-guide .sky-sub{border-top:none;padding-top:0;margin-top:0}.guide-sub{margin-bottom:12px!important}.guide-list{list-style:none;margin:14px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}.guide-row{display:flex;align-items:center;gap:10px;background:var(--bg-raised);border:1px solid var(--line);border-radius:10px;padding:10px 12px}.guide-row>div{flex:1;min-width:0}.guide-row strong{display:block;font-size:14px;color:var(--gold-soft);margin-bottom:2px}.guide-row p{margin:0;font-size:12.5px;line-height:1.45;color:var(--ink-dim)}.guide-add{flex-shrink:0;font-size:12px;padding:6px 10px}.guide-not-found{border-style:dashed;background:var(--bg-sunken)}.guide-footnote{margin:12px 2px 0;font-size:11.5px;font-style:italic;color:var(--ink-faint);line-height:1.4}.segmented{display:flex;gap:4px;padding:4px;margin:4px 0 16px;background:var(--bg-sunken);border:1px solid var(--line);border-radius:999px}.segment{flex:1;padding:8px 0;border:none;border-radius:999px;background:transparent;color:var(--ink-dim);font-size:14px;letter-spacing:.03em}.segment.is-on{background:var(--gold);color:#241a10;font-weight:600}.familiar-svg{display:block;width:100%;height:100%;overflow:visible}.familiar-svg g,.familiar-svg path,.familiar-svg ellipse{transform-box:fill-box}.fam-breathe{transform-origin:50% 100%;animation:fam-breathe 3.6s ease-in-out infinite}.is-sleeping .fam-breathe{animation-duration:5.4s}@keyframes fam-breathe{0%,to{transform:scale(1)}50%{transform:scale(1.012,1.03)}}.fam-blink{transform-origin:center;animation:fam-blink 5.2s infinite}@keyframes fam-blink{0%,92%,to{transform:scaleY(1)}95%{transform:scaleY(.08)}}.fam-tail{transform-origin:0% 100%;animation:fam-tail 4.4s ease-in-out infinite}.is-sleeping .fam-tail{animation:none}@keyframes fam-tail{0%,to{transform:rotate(0)}50%{transform:rotate(-9deg)}}.fam-ear{transform-origin:60% 100%;animation:fam-ear 6.5s infinite}.is-sleeping .fam-ear{animation:none;transform:rotate(-16deg)}@keyframes fam-ear{0%,86%,to{transform:rotate(0)}90%{transform:rotate(-14deg)}94%{transform:rotate(4deg)}}.fam-throat{transform-origin:center;animation:fam-throat 2.2s ease-in-out infinite}.is-sleeping .fam-throat{animation-duration:4s}@keyframes fam-throat{0%,to{transform:scale(1)}50%{transform:scale(1.18,1.3)}}.fam-head{transition:transform .6s ease}.is-sleeping .fam-head{transform:translateY(5px) rotate(-4deg)}.is-bouncing{animation:fam-hop .55s ease}@keyframes fam-hop{0%{transform:translateY(0)}35%{transform:translateY(-9px) scale(1.03,.97)}70%{transform:translateY(0) scale(.98,1.02)}to{transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.fam-breathe,.fam-blink,.fam-tail,.fam-ear,.fam-throat,.is-bouncing{animation:none}}.familiar-card{position:relative;background:radial-gradient(ellipse 70% 60% at 35% 70%,rgba(255,190,110,.1),transparent 70%),var(--bg-raised);border:1px solid var(--line);border-radius:16px;padding:14px 16px 16px;margin-bottom:22px}.familiar-card.is-empty{text-align:center}.familiar-card.is-empty .familiar-scene{justify-content:center}.familiar-card.is-empty .familiar-line{margin-bottom:14px}.familiar-scene{display:flex;align-items:flex-end;justify-content:center;gap:4px;height:128px}.familiar-stage{position:relative;width:140px;height:126px}.familiar-pet{padding:0;border:none;background:transparent;-webkit-tap-highlight-color:transparent}.familiar-flower{width:58px;height:74px;margin-bottom:6px}.familiar-flower .flower-svg,.familiar-stage .flower-svg{width:100%;height:100%}.familiar-card.is-empty .familiar-stage{width:70px;height:90px}.fam-heart{position:absolute;top:20%;color:#e88aa8;font-size:17px;pointer-events:none;opacity:0;animation:fam-heart 1.3s ease-out forwards}@keyframes fam-heart{0%{opacity:0;transform:translateY(0) scale(.6)}20%{opacity:1}to{opacity:0;transform:translateY(-46px) scale(1.15)}}.fam-zzz{position:absolute;top:6px;right:10px;pointer-events:none}.fam-zzz span{position:absolute;font-style:italic;color:var(--gold-soft);opacity:0;animation:fam-z 3.6s ease-in-out infinite}.fam-zzz span:nth-child(2){animation-delay:1.2s;font-size:13px}.fam-zzz span:nth-child(3){animation-delay:2.4s;font-size:16px}@keyframes fam-z{0%{opacity:0;transform:translateY(18px)}30%{opacity:.9}to{opacity:0;transform:translate(12px,-14px)}}.familiar-text{text-align:center;margin-top:6px}.familiar-name-row{display:flex;align-items:baseline;justify-content:center;gap:8px}.familiar-name-row strong{font-size:18px;color:var(--gold-soft)}.familiar-edit{background:none;border:none;padding:2px 4px;font-size:12px;color:var(--ink-faint);text-decoration:underline}.familiar-line{margin:4px 0 6px;min-height:2.8em;font-size:14px;line-height:1.4;color:var(--ink-dim)}.familiar-flower-line{margin:0;font-size:12.5px;font-style:italic;color:var(--ink-faint)}.chooser-title{margin:0 0 12px;text-align:center;color:var(--gold-soft);font-size:19px}.chooser-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:10px}.chooser-option{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 4px 10px;background:var(--bg-sunken);border:1.5px solid var(--line);border-radius:14px}.chooser-option.is-on{border-color:var(--gold);background:var(--bg)}.chooser-art{width:84px;height:76px}.chooser-label{font-size:14px;color:var(--ink)}.chooser-lore{margin:0 0 14px;min-height:2.8em;text-align:center;font-size:13.5px;font-style:italic;line-height:1.45;color:var(--ink-dim)}.potted-plant{background:transparent;border:none;padding:0;display:flex;justify-content:center}.plant-pot{position:relative;display:block;width:100%;max-width:88px;aspect-ratio:72 / 108}.flower-svg{width:56px;height:70px}.journal-page{padding:16px 16px 22px;background-image:radial-gradient(circle,rgba(201,169,79,.28) 1px,transparent 1.4px);background-size:18px 18px;background-color:var(--bg-raised);border:1px solid var(--line);border-radius:10px;min-height:60vh;box-shadow:0 10px 24px -14px #000000b3}.page-bar{margin-bottom:6px}.tape-shelf{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:6px}.stuck-tape{width:62px;height:24px;border:none;border-radius:2px;opacity:.9;box-shadow:0 2px 4px #00000059}.stuck-tape:nth-child(odd){transform:rotate(-3deg)}.stuck-tape:nth-child(2n){transform:rotate(2deg)}.add-tape{width:28px;height:24px;background:var(--bg-sunken);border:1px dashed var(--line);color:var(--gold);transform:none!important;opacity:1;box-shadow:none}.tape-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}.tape-swatch{width:46px;height:26px;border:1px solid var(--line);border-radius:3px}.page-title-input{display:block;width:100%;background:transparent;border:none;border-bottom:1px solid var(--line);padding:4px 0 10px;margin-bottom:14px;color:var(--gold-soft);font-size:22px;font-family:var(--font)}.sticker-shelf{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.stuck-sticker{width:34px;height:34px;border-radius:50%;background:var(--bg-sunken);border:1px solid var(--line);font-size:17px;box-shadow:0 2px 3px #0000004d}.stuck-sticker:nth-child(3n){transform:rotate(-6deg)}.stuck-sticker:nth-child(3n+1){transform:rotate(5deg)}.add-sticker{color:var(--gold);font-size:18px;transform:none!important;border-style:dashed}.sticker-picker{margin-bottom:16px}.pack-tabs{display:flex;gap:6px;margin-bottom:8px;overflow-x:auto}.pack-tab{flex-shrink:0;padding:5px 11px;border-radius:999px;border:1px solid var(--line);background:var(--bg-sunken);color:var(--ink-faint);font-size:12px}.pack-tab.is-on{background:var(--gold);border-color:var(--gold);color:#241a10}.add-tracker-btn{display:block;width:100%;margin-bottom:14px}.page-palette{display:flex;gap:7px;margin-bottom:16px}.palette-dot{width:15px;height:15px;border-radius:50%;box-shadow:0 1px 2px #0006,inset 0 1px 1px #ffffff40}.page-date{margin:-6px 0 14px;font-family:American Typewriter,Courier New,monospace;font-size:12px;letter-spacing:.04em;color:var(--ink-faint)}.journal-empty{color:var(--ink-faint);text-align:center;padding:24px 0}.entry-list{list-style:none;margin:0 0 18px;padding:0;display:flex;flex-direction:column;gap:4px}.entry-row{display:flex;align-items:flex-start;gap:10px}.entry-glyph{flex-shrink:0;width:30px;height:34px;background:none;border:none;color:var(--gold);font-size:15px;line-height:34px;text-align:center;padding:0}.entry-glyph.is-task{cursor:pointer}.entry-text{flex:1;text-align:left;background:none;border:none;padding:6px 4px;color:var(--ink);font-size:15px;line-height:1.4;word-break:break-word}.entry-text.is-done{text-decoration:line-through;color:var(--ink-faint)}.quick-add{display:flex;align-items:center;gap:8px;background:var(--bg-raised);border:1px solid var(--line);border-radius:12px;padding:6px;margin-bottom:16px}.quick-type{flex-shrink:0;width:36px;height:36px;border-radius:8px;background:var(--bg-sunken);border:1px solid var(--line);color:var(--gold);font-size:15px}.quick-input{flex:1;min-width:0;background:none;border:none;color:var(--ink);padding:8px 4px}.quick-submit{flex-shrink:0;width:36px;height:36px;border-radius:8px;background:var(--gold);border:none;color:#241a10;font-size:18px;line-height:1}.sticker-row{display:grid;grid-template-columns:repeat(8,1fr);gap:4px}.sticker-btn{background:var(--bg-sunken);border:1px solid var(--line);border-radius:8px;font-size:18px;padding:6px 0}.sticker-btn:active{background:var(--bg-raised)}.font-row{display:flex;gap:8px;flex-wrap:wrap}.font-chip{flex:1;min-width:68px;display:flex;flex-direction:column;align-items:center;gap:2px;background:var(--bg-sunken);border:1px solid var(--line);border-radius:10px;padding:8px 4px;color:var(--ink);font-size:18px}.font-chip em{font-style:normal;font-family:var(--font);font-size:10px;color:var(--ink-faint)}.font-chip.is-on{border-color:var(--gold);background:var(--bg-raised)}.tracker{background:var(--bg-sunken);border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:14px}.tracker-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.tracker-head strong{font-size:13px;letter-spacing:.04em;color:var(--gold-soft)}.tracker-mode{background:var(--bg-raised);border:1px solid var(--line);border-radius:999px;padding:4px 10px;font-size:11px;color:var(--ink-dim)}.tracker-scroll{overflow-x:auto;margin:0 -4px 10px;padding:0 4px}.tracker-table{display:inline-flex;flex-direction:column;gap:3px}.tracker-row{display:flex;gap:3px;align-items:center}.tracker-label-spacer{width:88px;flex-shrink:0}.tracker-row-label{width:88px;flex-shrink:0;background:transparent;border:none;border-bottom:1px solid var(--line);color:var(--ink);font-size:11.5px;line-height:1.25;padding:2px 4px 3px 2px;font-family:var(--font);resize:none;overflow:hidden;white-space:normal;word-break:break-word}.tracker-cell{width:20px;height:20px;flex-shrink:0;border-radius:4px;background:var(--bg-raised);border:1px solid var(--line);padding:0}.tracker-cell--head{background:none;border:none;color:var(--ink-faint);font-size:9px;display:flex;align-items:center;justify-content:center;height:16px}.tracker-cell.is-on{background:var(--gold);border-color:var(--gold)}.tracker-actions{display:flex;gap:8px}.tracker-actions .ghost-btn{padding:6px 10px;font-size:12px}.danger-text{margin-left:auto;color:var(--danger);border-color:transparent}.page-list{list-style:none;margin:0 0 18px;padding:0;display:flex;flex-direction:column;gap:10px}.page-card{display:flex;align-items:center;justify-content:space-between;width:100%;text-align:left;background:var(--bg-raised);border:1px solid var(--line);border-radius:12px;padding:14px 16px;color:var(--ink)}.page-card strong{font-size:15px;color:var(--gold-soft)}.page-card span{font-size:12px;color:var(--ink-faint);flex-shrink:0;margin-left:10px}.sky{padding-bottom:8px}.moon-card{display:flex;align-items:center;gap:16px;padding:16px;background:var(--bg-raised);border:1px solid var(--line);border-radius:14px;margin-bottom:14px}.moon-svg{width:84px;height:84px;flex-shrink:0;filter:drop-shadow(0 0 14px rgba(231,217,168,.15))}.moon-head{display:flex;flex-direction:column;gap:3px}.moon-head strong{font-size:18px;color:var(--gold-soft)}.moon-head span{font-size:13px;color:var(--ink-dim)}.moon-head .moon-sign{color:var(--ink);margin-top:4px;font-style:italic}.corr{font-size:14px;line-height:1.55;color:var(--ink-dim);margin:0 0 14px}.corr-tag{display:block;font-size:11px;letter-spacing:.07em;text-transform:uppercase;color:var(--gold);margin-bottom:3px}.crystal-row{font-size:12.5px;color:var(--ink-faint);font-style:italic;margin:6px 0 0}.corr+.crystal-row{margin-top:-8px;margin-bottom:14px}.sky-sub{font-size:15px;color:var(--gold-soft);margin:22px 0 10px;padding-top:16px;border-top:1px solid var(--line)}.loc-ask{text-align:center;padding:8px 0 4px}.loc-ask p{font-size:14px;color:var(--ink-faint);margin-bottom:14px}.sky-error{color:var(--danger);font-size:13px;margin-top:10px}.planet-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:14px}.planet-list li{padding:12px 14px;background:var(--bg-raised);border:1px solid var(--line);border-radius:12px}.planet-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:5px}.planet-head strong{color:var(--gold-soft);font-size:15px}.planet-head span{font-size:12px;color:var(--ink-faint);text-align:right}.planet-list li p{margin:0;font-size:13px;line-height:1.5;color:var(--ink-dim)}.loc-reset{display:block;margin:18px auto 0;background:none;border:none;color:var(--ink-faint);font-size:12px;text-decoration:underline}.sky-foot{margin-top:20px;font-size:11px;color:var(--ink-faint);text-align:center;font-style:italic}.spell-detail{padding-bottom:24px}.spell-detail-bar{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.star-btn{background:none;border:none;font-size:24px;color:var(--ink-faint);line-height:1;padding:4px 8px}.star-btn.is-on{color:var(--gold)}.spell-title{margin:4px 0;color:var(--gold-soft);font-size:22px}.spell-hint{font-size:12px;color:var(--ink-faint);font-style:italic;margin:10px 0 16px}.spell-body{display:flex;flex-direction:column;gap:12px;margin-bottom:20px}.spell-para{margin:0;padding:4px 6px;border-radius:4px;font-size:15px;line-height:1.6;color:var(--ink-dim);transition:background-color .15s ease}.spell-para:active{background:var(--bg-raised)}.spell-para.is-hl{background:#c9a94f47;color:var(--ink);box-shadow:inset 0 -2px #c9a94f80}.spell-caution{background:#d98b8b1f;border:1px solid rgba(217,139,139,.45);border-left:4px solid var(--danger);border-radius:8px;padding:12px 14px;margin-bottom:20px}.spell-caution strong{display:block;font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--danger);margin-bottom:5px}.spell-caution p{margin:0;font-size:13.5px;line-height:1.5;color:var(--ink)}.spell-detail-actions{display:flex;gap:10px;padding-top:16px;border-top:1px solid var(--line)}.spell-detail-actions .ghost-btn{flex:1;text-align:center}.spell-detail-actions .remove-btn{flex:2;margin-top:0}.spell-detail .field textarea{min-height:160px;line-height:1.5}.spell-search{width:100%;background:var(--bg-sunken);border:1px solid var(--line);border-radius:12px;padding:11px 14px;color:var(--ink);margin-bottom:12px}.chip-scroll{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;margin-bottom:16px;scrollbar-width:none}.chip-scroll::-webkit-scrollbar{display:none}.ichip{flex-shrink:0;padding:7px 13px;border-radius:999px;border:1px solid var(--line);background:var(--bg-sunken);color:var(--ink-dim);font-size:13px;white-space:nowrap}.ichip.is-on{background:var(--gold);border-color:var(--gold);color:#241a10}.spell-empty{text-align:center;color:var(--ink-faint);padding:32px 0}.spell-list{list-style:none;margin:0 0 18px;padding:0;display:flex;flex-direction:column;gap:10px}.spell-card{display:block;width:100%;text-align:left;background:var(--bg-raised);border:1px solid var(--line);border-radius:12px;padding:13px 14px;color:var(--ink)}.spell-card-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.spell-card-head strong{font-size:15px;color:var(--gold-soft)}.spell-star{color:var(--gold)}.spell-tag{display:inline-block;font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-faint);margin:4px 0 6px}.spell-card p{margin:0;font-size:13px;color:var(--ink-dim);line-height:1.4}.write-btn{display:block;width:100%}.backup-sheet{padding-bottom:calc(env(safe-area-inset-bottom) + 24px)}.backup-warn{background:var(--bg-sunken);border:1px solid var(--line);border-left:3px solid var(--gold);border-radius:8px;padding:12px 14px;font-size:13px;line-height:1.5;color:var(--ink-dim);margin-bottom:18px}.backup-btn{display:block;width:100%;margin-bottom:10px;text-align:center}.backup-close{display:block;width:100%;margin-top:10px}.backup-error{color:var(--danger);font-size:13px;margin:4px 0 0}.restore-confirm{background:var(--bg-sunken);border:1px solid var(--line);border-radius:12px;padding:14px;margin-bottom:10px}.restore-confirm p{margin:0 0 12px;font-size:14px;line-height:1.5;color:var(--ink-dim)}.restore-actions{display:flex;gap:10px}.restore-actions button{flex:1}.about-sheet{text-align:center}.about-glyph{font-size:34px;color:var(--gold);line-height:1;margin-top:4px}.about-title{margin-top:8px}.about-tagline{margin:0 0 18px;font-size:14px;font-style:italic;line-height:1.5;color:var(--ink-dim)}.about-privacy{margin-bottom:22px;padding:12px 14px;background:var(--bg-sunken);border-radius:10px;font-size:13px;line-height:1.5;color:var(--ink-dim)}.about-support{margin:0 0 12px;font-size:14px;line-height:1.5;color:var(--ink-dim)}.about-coffee{display:block;text-decoration:none}.about-credit{margin:22px 0 0;font-size:13px;color:var(--ink-faint)}.about-version{display:block;margin-top:2px;font-size:11.5px;opacity:.8}.about-close{display:block;width:100%;margin-top:16px;padding:11px}.games-room{position:fixed;inset:0;z-index:30;overflow-y:auto;max-width:640px;margin:0 auto;padding:calc(env(safe-area-inset-top) + 12px) 18px calc(env(safe-area-inset-bottom) + 24px);background:url(/patterns/sky.svg) repeat,var(--bg);background-size:320px 320px,auto}.games-bar{display:flex;align-items:center;gap:14px;margin-bottom:18px}.games-bar h2{margin:0;font-size:20px;color:var(--gold-soft)}.games-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.games-card{display:flex;align-items:center;gap:14px;width:100%;text-align:left;padding:14px 16px;background:var(--bg-raised);border:1px solid var(--line);border-radius:14px}.games-glyph{width:44px;font-size:28px;text-align:center;color:var(--gold)}.games-card strong{display:block;font-size:16px;color:var(--gold-soft)}.games-card em{font-size:13px;color:var(--ink-dim)}.game{text-align:center}.game-status{min-height:1.4em;margin:4px 0 16px;font-size:15px;color:var(--ink-dim)}.game-modes,.game-row{display:flex;justify-content:center;gap:8px;margin-bottom:14px}.game-row{margin-top:16px}.game-again{margin-top:16px;min-width:180px}.ttt-board{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;max-width:300px;margin:0 auto}.ttt-cell{aspect-ratio:1;font-size:40px;background:var(--bg-raised);border:1px solid var(--line);border-radius:14px}.ttt-cell.is-moon{color:var(--gold-soft)}.ttt-cell.is-star{color:#a9b8e8}.ttt-cell.is-win{border-color:var(--gold);box-shadow:0 0 14px #c9a94f73}.ttt-score{margin-top:14px;font-size:13px;color:var(--ink-faint)}.memory-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;max-width:340px;margin:0 auto;perspective:600px}.memory-card{aspect-ratio:3 / 4;padding:0;border:none;background:transparent}.memory-inner{position:relative;display:block;width:100%;height:100%;transition:transform .35s ease;transform-style:preserve-3d}.memory-card.is-up .memory-inner{transform:rotateY(180deg)}.memory-back,.memory-front{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;border-radius:10px;backface-visibility:hidden;-webkit-backface-visibility:hidden}.memory-back{font-size:20px;color:var(--gold);background:repeating-linear-gradient(45deg,rgba(201,169,79,.12) 0 4px,transparent 4px 10px),var(--bg-raised);border:1px solid var(--line)}.memory-front{font-size:30px;background:#efe6cf;transform:rotateY(180deg)}.memory-card.is-matched .memory-front{box-shadow:0 0 10px #c9a94f8c}.sky-board{max-width:340px;margin:0 auto;border-radius:16px;background:radial-gradient(ellipse at 50% 40%,#2c2150,#120d22);border:1px solid var(--line)}.sky-board svg{display:block;width:100%}.sky-star-hit{cursor:pointer}.sky-star{fill:#f2ead2;animation:twinkle 2.4s ease-in-out infinite;transition:r .15s ease}.sky-star.is-picked{fill:var(--gold)}.sky-star.is-hint{fill:#a9d2ff}.sky-star.is-miss{fill:var(--danger)}.sky-star.is-done{fill:var(--gold-soft)}@keyframes twinkle{0%,to{opacity:1}50%{opacity:.55}}.sky-line{stroke:var(--gold);stroke-linecap:round;opacity:.85}.sky-reveal p{margin:16px 4px 0;font-size:14px;font-style:italic;line-height:1.55;color:var(--ink-dim)}.puzzle-art{background:radial-gradient(circle at 70% 26%,#33244f 0 13%,transparent 13.4%),radial-gradient(circle at 63% 30%,#f3e3a6 0 14%,transparent 14.4%),radial-gradient(circle at 63% 30%,rgba(243,227,166,.25) 0 20%,transparent 32%),radial-gradient(circle at 15% 18%,#fff 0 .7%,transparent 1%),radial-gradient(circle at 34% 9%,#fff 0 .6%,transparent .9%),radial-gradient(circle at 88% 12%,#fff 0 .7%,transparent 1%),radial-gradient(circle at 24% 40%,#fff 0 .5%,transparent .8%),radial-gradient(circle at 45% 28%,#fff 0 .5%,transparent .8%),radial-gradient(ellipse 75% 30% at 18% 100%,#3d6b4f 0 99%,transparent 100%),radial-gradient(ellipse 85% 36% at 88% 106%,#2f5a42 0 99%,transparent 100%),linear-gradient(#22183f,#4a3270 62%,#6b4a8a);background-size:300% 300%}.slide-board{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;max-width:300px;margin:0 auto;padding:3px;background:var(--bg-sunken);border-radius:12px}.slide-board.is-solved{gap:0}.slide-tile,.slide-gap{aspect-ratio:1;border-radius:6px}.slide-tile{position:relative;border:none;padding:0}.slide-board.is-solved .slide-tile{border-radius:0}.slide-num{position:absolute;top:4px;left:6px;font-size:13px;color:#fff;text-shadow:0 1px 2px #000}.app{display:flex;flex-direction:column;min-height:100%;max-width:640px;margin:0 auto}.app-bar{display:flex;align-items:center;justify-content:space-between;padding:calc(env(safe-area-inset-top) + 12px) 18px 12px;border-bottom:1px solid var(--line);background:var(--bg);position:sticky;top:0;z-index:5}.backup-nudge{margin:12px 18px 0;padding:12px 14px;background:var(--bg-raised);border:1px solid var(--line);border-left:3px solid var(--gold);border-radius:10px}.backup-nudge p{margin:0 0 10px;font-size:13.5px;line-height:1.5;color:var(--ink-dim)}.backup-nudge-actions{display:flex;gap:8px}.backup-nudge-actions .primary-btn{padding:8px 14px;font-size:14px}.app-bar-actions{display:flex;gap:8px}.app-title{margin:0;font-size:20px;color:var(--gold-soft);letter-spacing:.06em}.app-body{flex:1;padding:18px 18px 96px;background-repeat:repeat;background-image:url(/patterns/sky.svg);background-size:320px 320px}.app-title-btn{padding:0;border:none;background:none;font:inherit;color:inherit;letter-spacing:inherit;cursor:pointer}.app-title-info{margin-left:6px;font-size:15px;letter-spacing:0;color:var(--ink-faint);vertical-align:2px}.ghost-btn{background:transparent;border:1px solid var(--line);color:var(--ink-dim);padding:7px 14px;border-radius:999px;font-size:13px;letter-spacing:.04em}.ghost-btn:active{background:var(--bg-raised)}.primary-btn{background:var(--gold);border:none;color:#241a10;padding:12px 18px;border-radius:12px;font-size:15px;font-weight:600}.primary-btn:active{filter:brightness(.92)}.primary-btn:disabled{opacity:.45;filter:none}.section-head{margin:0 0 4px;font-size:22px;color:var(--gold-soft)}.section-sub{margin:0 0 20px;color:var(--ink-faint);font-size:14px;font-style:italic}.stub{text-align:center;padding:64px 24px;color:var(--ink-faint)}.stub-glyph{font-size:40px;color:var(--gold);opacity:.6}.stub h2{margin:16px 0 6px;color:var(--ink-dim)}:root{--bg: #1b1430;--bg-raised: #241a3d;--bg-sunken: #150f26;--ink: #ece6f5;--ink-dim: #a89bc4;--ink-faint: #7c6f9c;--gold: #c9a94f;--gold-soft: #e7d9a8;--line: #372a54;--danger: #d98b8b;--wood: #4a3a2e;--wood-edge: #2f251d;--font: "Iowan Old Style", "Palatino Linotype", "URW Palladio L", Palatino, "Book Antiqua", Georgia, serif;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none}button{font-family:inherit;color:inherit;cursor:pointer}input,textarea,select{font-family:inherit;font-size:16px}h1,h2,h3{font-weight:600;letter-spacing:.01em}
