:root{--lf-ink:#4a3526;--lf-ink-soft:#7a5f48;--lf-wood-hi:#ecdcbf;--lf-wood:#d9c4a3;--lf-wood-lo:#b9976f;--lf-wood-edge:#8f6f4c;--lf-cream:#f4ead6;--lf-sage:#a8b98a;--lf-moss:#7c9a55;--lf-rose:#dc9f93;--lf-sky:#9bb6cf;--lf-butter:#e8cc7c;--lf-lilac:#b9a3cf;--lf-peach:#efb48f;--lf-rope:#b99c6e;--lf-glow:#ffc76a;--lf-ui-scale:1;--lf-title:"Fredoka", "Nunito", system-ui, sans-serif;--lf-body:"Nunito", "Fredoka", system-ui, sans-serif;--lf-hand:"Patrick Hand", "Comic Sans MS", cursive}.lf{font-family:var(--lf-hand);color:var(--lf-ink);-webkit-user-select:none;user-select:none}.lf [hidden]{display:none!important}.lf :where(button){font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}.lf button:focus-visible{outline:3px dashed var(--lf-glow);outline-offset:4px}.lf-wood{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='80'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.004 0.22' numOctaves='3' seed='4'/%3E%3CfeColorMatrix values='0 0 0 0 0.45 0 0 0 0 0.3 0 0 0 0 0.15 0 0 0 0.55 -0.12'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23g)'/%3E%3C/svg%3E"), linear-gradient(180deg, var(--lf-wood-hi), var(--lf-wood) 45%, var(--lf-wood-lo));box-shadow:inset 0 2px 0 #fffaebb3, inset 0 -3px 0 #6e502d59, 0 0 0 2px var(--lf-wood-edge), 0 10px 22px #3c231447;border-radius:22px/50%;position:relative}.lf-wood.flat{border-radius:14px}.lf-wood .knot{opacity:.7;pointer-events:none;background:radial-gradient(#9b7a52 0 30%,#c5a67c 55%,#0000 70%);border-radius:50%;width:14px;height:9px;position:absolute}.lf-felt{background-color:var(--c,var(--lf-cream));border-radius:18px;position:relative;box-shadow:inset 0 2px #ffffff59,inset 0 -3px #0000001a,0 4px #462d1929,0 8px 16px #3c231433}.lf-felt:before{content:"";border-radius:inherit;border:2px dashed var(--stitch,#ffffffbf);pointer-events:none;position:absolute;inset:5px}.lf-felt:after{content:"";border-radius:inherit;pointer-events:none;opacity:.5;mix-blend-mode:soft-light;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='f'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.1' numOctaves='3'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.45 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23f)'/%3E%3C/svg%3E");position:absolute;inset:0}.lf-felt.round,.lf-felt.round:before,.lf-felt.round:after{border-radius:50%}.lf-felt.cream{--c:var(--lf-cream);--stitch:#a0785073}.lf-felt>*{z-index:1;position:relative}.lf-rope{pointer-events:none;background:repeating-linear-gradient(160deg,#cdb286 0 3px,#9c7f52 3px 5px,#b99c6e 5px 8px);border-radius:3px;width:5px;position:absolute;box-shadow:1px 1px 2px #3c23144d}.lf-paper{background:#f6ecd8 radial-gradient(at 20% 0,#fff9,#0000 60%);border-radius:6px;position:relative;box-shadow:0 6px 14px #3c231438}.lf-lantern{pointer-events:none;transform-origin:50% 0;width:38px;animation:5.5s ease-in-out infinite lf-sway;position:absolute}.lf-lantern svg{filter:drop-shadow(0 0 14px #ffb450bf)drop-shadow(0 0 34px #ffaa4659);width:100%;display:block;overflow:visible}.lf-lantern .flick{transform-origin:50%;animation:3.2s ease-in-out infinite lf-flicker}@keyframes lf-sway{0%,to{transform:rotate(-3.5deg)}50%{transform:rotate(3.5deg)}}@keyframes lf-flicker{0%,to{opacity:1}40%{opacity:.86}55%{opacity:1}70%{opacity:.92}}.lf-sprig{pointer-events:none;width:46px;height:34px;position:absolute}.lf-round{place-items:center;width:50px;height:50px;transition:transform .22s cubic-bezier(.3,1.6,.5,1),filter .2s;display:grid}.lf-round svg{width:24px;height:24px}.lf-round:hover{transform:translateY(-2px)rotate(-4deg)scale(1.05)}.lf-round.on{filter:brightness(.92);transform:translateY(2px)}.lf-round .badge{z-index:2;text-align:center;min-width:20px;color:var(--lf-ink);border-radius:7px;padding:0 4px;font-size:14px;line-height:20px;position:absolute;bottom:-5px;right:-6px}.lf-pill{align-items:center;gap:10px;padding:10px 24px 12px;font-size:22px;transition:transform .2s cubic-bezier(.3,1.6,.5,1);display:inline-flex}.lf-pill:hover{transform:translateY(-2px)rotate(-1deg)}.lf-pill.glow,.lf-pill:hover{box-shadow:inset 0 2px #ffffff59,0 0 0 3px #ffd278b3,0 0 22px #ffbe5aa6,0 8px 16px #3c231433}.lf-slider{cursor:pointer;touch-action:none;align-items:center;height:26px;display:flex;position:relative}.lf-slider .track{background:#eadcc2;border-radius:8px;height:14px;position:absolute;left:0;right:0;box-shadow:inset 0 2px 3px #5a3c1e40}.lf-slider .fill{background:var(--c,var(--lf-moss));background-image:repeating-linear-gradient(90deg,#fffc 0 6px,#0000 6px 10px);background-position:0;background-repeat:repeat-x;background-size:100% 2px;border-radius:8px;height:14px;position:absolute;left:0}.lf-slider .knob{width:28px;height:28px;box-shadow:0 0 0 2px var(--lf-wood-edge), 0 3px 6px #3c231459;background:radial-gradient(circle at 35% 30%,#f0dcb8,#c9a57a 70%,#a27c52);border-radius:50%;place-items:center;margin-left:-14px;display:grid;position:absolute}.lf-slider .knob svg{width:16px;height:16px}.lf-slider:focus-visible{outline:3px dashed var(--lf-glow);outline-offset:4px;border-radius:10px}.lf-toggle{background:#e5d6bb;border-radius:18px;flex-shrink:0;width:74px;height:32px;font-size:15px;transition:background .2s;position:relative;box-shadow:inset 0 2px 4px #5a3c1e47}.lf-toggle:before{content:"";border:1.5px dashed #8c643c66;border-radius:16px;position:absolute;inset:3px}.lf-toggle .knob{width:28px;height:28px;box-shadow:0 0 0 2px var(--lf-wood-edge), 0 2px 4px #3c23144d;background:radial-gradient(circle at 35% 30%,#f0dcb8,#c9a57a 70%,#a27c52);border-radius:50%;place-items:center;transition:left .22s cubic-bezier(.3,1.5,.5,1);display:grid;position:absolute;top:2px;left:3px}.lf-toggle .knob svg{width:14px;height:14px}.lf-toggle .lbl{color:var(--lf-ink-soft);position:absolute;top:5px;right:11px}.lf-toggle.on{background:var(--lf-moss)}.lf-toggle.on:before{border-color:#fff9}.lf-toggle.on .knob{left:43px}.lf-toggle.on .lbl{color:#fff;left:12px;right:auto}.lf-key{min-width:34px;height:32px;box-shadow:inset 0 -3px 0 #6e502d59, 0 0 0 1.5px var(--lf-wood-edge), 0 3px 4px #3c231440;background:linear-gradient(#ecdcbf,#cfb48d);border-radius:8px;place-items:center;padding:0 9px;font-size:16px;display:inline-grid}.lf-key.listening{background:var(--lf-butter);animation:.9s ease-in-out infinite lf-pulse}@keyframes lf-pulse{50%{box-shadow:inset 0 -3px 0 #6e502d59, 0 0 0 3px var(--lf-glow), 0 0 14px var(--lf-glow)}}.lf-seg{flex-wrap:wrap;gap:6px;display:inline-flex}.lf-seg button{background:#eadcc2;border-radius:14px;padding:4px 14px 5px;font-size:16px;box-shadow:inset 0 -2px #6e502d33}.lf-seg button.on{background:var(--lf-moss);color:#fff;box-shadow:inset 0 -2px #00000026,0 0 0 2px #ffffff80}@media (prefers-reduced-motion:reduce){.lf-lantern,.lf-lantern .flick{animation:none}}:root.lf-still .lf-lantern,:root.lf-still .lf-lantern .flick{animation:none}.sp-plank{filter:drop-shadow(0 6px 8px #321e0f59);border-style:solid;border-width:22px 30px;border-image:url(/ui/plank_sign.png) 60 70 fill/22px 30px}.sp-shelf{filter:drop-shadow(0 6px 8px #321e0f59);border-style:solid;border-width:30px 44px;border-image:url(/ui/plank_shelf.png) 70 110 fill/30px 44px}.sp-rail{filter:drop-shadow(0 6px 8px #321e0f59);border-style:solid;border-width:18px 30px;border-image:url(/ui/plank_rail.png) 55 80 fill/18px 30px}.sp-tag{filter:drop-shadow(0 3px 3px #321e0f59);border-style:solid;border-width:12px 14px;border-image:url(/ui/plank_tag.png) 34 40 fill/12px 14px}.sp-pbtn{filter:drop-shadow(0 4px 5px #321e0f4d);border-style:solid;border-width:16px 24px;border-image:url(/ui/plank_btn.png) 45 60 fill/16px 24px}.sp-beam{filter:drop-shadow(0 5px 6px #321e0f66);border-style:solid;border-width:0 70px;border-image:url(/ui/log_beam.png) 0 140 fill/0 70px}.sp-pill{filter:drop-shadow(0 4px 5px #321e0f47);border-style:solid;border-width:20px 24px;border-image:url(/ui/felt_pill_cream.png) 56 60 fill/20px 24px}.sp-pill.peach{border-image-source:url(/ui/felt_pill_peach.png)}.sp-pill.pink{border-image-source:url(/ui/felt_pill_pink.png)}.sp-pill.lilac{border-image-source:url(/ui/felt_pill_lilac.png)}.sp-pill.sky{border-image-source:url(/ui/felt_pill_sky.png)}.sp-pill.slate{border-image-source:url(/ui/felt_pill_slate.png)}.sp-pill.sage{border-image-source:url(/ui/felt_pill_sage.png)}.sp-pill.moss{border-image-source:url(/ui/felt_pill_moss.png)}.sp-pill.butter{border-image-source:url(/ui/felt_pill_butter.png)}.sp-pill.stone{border-image-source:url(/ui/felt_pill_stone.png)}.sp-pill.gold{border-image-source:url(/ui/felt_pill_gold.png)}.sp-plank,.sp-shelf,.sp-rail,.sp-tag,.sp-pbtn,.sp-beam,.sp-pill,.sp-panel,.sp-branch{border-color:#0000}.sp-panel{filter:drop-shadow(0 10px 18px #321e0f59);border-style:solid;border-width:40px;border-image:url(/ui/felt_panel.png) 90 fill/40px}.sp-disc{filter:drop-shadow(0 4px 4px #321e0f59);background:50%/contain no-repeat}.sp-rope{pointer-events:none;filter:drop-shadow(1px 2px 1px #28190a59);background:url(/ui/rope_v.png) top/7px repeat-y;width:7px;position:absolute}.sp-lantern{pointer-events:none;transform-origin:50% 0;z-index:2;width:46px;animation:5.5s ease-in-out infinite sp-sway;position:absolute}.sp-lantern:before{content:"";pointer-events:none;background:radial-gradient(circle,#ffc46e8c,#ffaa502e 45%,#0000 70%);border-radius:50%;width:150px;height:150px;margin:-75px 0 0 -75px;animation:3.4s ease-in-out infinite sp-flicker;position:absolute;top:calc(100% - 38px);left:50%}.sp-lantern .str{background:url(/ui/rope_v.png) top/7px repeat-y;width:7px;margin:0 auto}.sp-lantern img{filter:drop-shadow(0 0 10px #ffbe5ae6);width:100%;display:block;position:relative}@keyframes sp-sway{0%,to{transform:rotate(-3deg)}50%{transform:rotate(3deg)}}@keyframes sp-flicker{0%,to{opacity:1}45%{opacity:.82}60%{opacity:.95}}.sp-flowers{pointer-events:none;filter:drop-shadow(0 2px 2px #28190a4d);width:64px;position:absolute}.sp-branch{filter:drop-shadow(0 5px 5px #28190a59);pointer-events:none;border-style:solid;border-width:0 60px;border-image:url(/ui/branch.png) 0 140 fill/0 60px;height:40px;position:absolute}@media (prefers-reduced-motion:reduce){.sp-lantern,.sp-lantern:before{animation:none}}:root.lf-still .sp-lantern,:root.lf-still .sp-lantern:before{animation:none}
