/*! Bamboo — Sign in — © 2026 Hasib (OVERSHOOT). All rights reserved. Licensed, not sold: see LICENSE.md. */*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}:root{--bg-1: #0f1713;--bg-2: #060a08;--accent: #4fd6a0;--accent-2: #a5f3d0;--accent-deep: #1c8f6a;--warm: #ffd79a;--warm-2: #ffb765;--ink: #edf5f0;--muted: rgba(237, 245, 240, .62);--faint: rgba(237, 245, 240, .56);--line: rgba(255, 255, 255, .1);--field: rgba(255, 255, 255, .045);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--ease-out: cubic-bezier(.22, .72, .16, 1);--snap: cubic-bezier(.4, 0, .2, 1);font-family:Manrope,system-ui,-apple-system,sans-serif}html,body{width:100%;min-height:100%;background:var(--bg-2);color:var(--ink);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.room{position:relative;min-height:100vh;min-height:100svh;display:grid;justify-items:center;align-content:center;padding:clamp(28px,5vh,56px) clamp(16px,3vw,44px) clamp(48px,7vh,76px);overflow-x:hidden}.ambient{position:fixed;inset:0;z-index:0;overflow:hidden;pointer-events:none}.ambient:before{content:"";position:absolute;inset:0;background:radial-gradient(110% 70% at 62% -6%,#16211b 0%,transparent 55%),linear-gradient(180deg,var(--bg-1),var(--bg-2) 68%)}.orb{position:absolute;border-radius:50%;filter:blur(70px);mix-blend-mode:screen;opacity:0;transition:opacity .55s var(--ease-out) .06s;will-change:transform}.room.is-on .orb{opacity:.5}.orb--a{width:46vmax;height:46vmax;right:-16vmax;top:-20vmax;background:radial-gradient(closest-side,rgba(255,197,128,.5),transparent);animation:float-a 22s ease-in-out infinite}.orb--b{width:40vmax;height:40vmax;left:-16vmax;bottom:-20vmax;background:radial-gradient(closest-side,rgba(79,214,160,.32),transparent);animation:float-b 28s ease-in-out infinite}@keyframes float-a{0%,to{transform:translate(0) scale(1)}50%{transform:translate(-6vmax,4vmax) scale(1.1)}}@keyframes float-b{0%,to{transform:translate(0) scale(1)}50%{transform:translate(5vmax,-3vmax) scale(1.12)}}.roomlight{position:absolute;inset:0;background:radial-gradient(58vmax 52vmax at var(--lx, 68%) var(--ly, 18%),rgba(255,205,133,.3) 0%,rgba(255,176,96,.1) 38%,transparent 72%);opacity:0;transition:opacity .5s var(--ease-out)}.room.is-on .roomlight{opacity:1}.motes{position:absolute;inset:0;opacity:0;transition:opacity .8s ease .2s}.room.is-on .motes{opacity:1}.mote{position:absolute;width:3px;height:3px;border-radius:50%;background:radial-gradient(circle,rgba(255,227,178,.9),transparent 70%);animation:mote-drift var(--dur, 14s) ease-in-out infinite alternate;opacity:0}@keyframes mote-drift{0%{opacity:0;transform:translate(0)}20%{opacity:.7}to{opacity:0;transform:translate(var(--dx, 20px),var(--dy, -60px))}}.grain{position:absolute;inset:-50%;background-image:url(/bamboo/textures/grain.png);background-size:260px;opacity:.05;animation:grain 6s steps(6) infinite}@keyframes grain{0%{transform:translate(0)}20%{transform:translate(-4%,3%)}40%{transform:translate(3%,-5%)}60%{transform:translate(-3%,4%)}80%{transform:translate(5%,-2%)}to{transform:translate(0)}}.scene{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;gap:clamp(0px,1vw,16px);width:100%;max-width:980px}.lamp-stage{position:relative;z-index:4;flex:none;width:clamp(178px,34vw,436px);pointer-events:none}.bob{animation:bob 4.8s ease-in-out infinite}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.lamp{display:block;width:100%;height:auto;overflow:visible}.lamp__head{transform-box:view-box;transform-origin:180px 233px;transform:rotate(-7deg);transition:transform .55s var(--ease-spring)}.room.is-on .lamp__head{transform:rotate(0)}.face--on{opacity:0;transition:opacity .12s var(--snap)}.face--off{opacity:1;transition:opacity .12s var(--snap)}.room.is-on .face--on{opacity:1}.room.is-on .face--off{opacity:0}.zzz{transform-box:view-box;transform-origin:224px 148px}.room:not(.is-on) .zzz{animation:zfloat 3.2s ease-in-out infinite}@keyframes zfloat{0%{transform:translateY(3px) scale(.92);opacity:.35}50%{transform:translateY(-4px) scale(1);opacity:1}to{transform:translateY(-9px) scale(1.04);opacity:0}}.lamp_light{opacity:0;transition:opacity .12s var(--snap)}.room.is-on .lamp_light{opacity:1}.shade--on{opacity:0;transition:opacity .12s var(--snap)}.shade--off{opacity:1;transition:opacity .12s var(--snap)}.room.is-on .shade--on{opacity:1}.room.is-on .shade--off{opacity:0}.stand,.rope,.rope-sheen,.ferrule,.bead,.bead-hi{filter:brightness(.44);transition:filter .16s var(--snap)}.room.is-on .stand,.room.is-on .rope,.room.is-on .rope-sheen,.room.is-on .ferrule,.room.is-on .bead,.room.is-on .bead-hi{filter:none}.room.is-on .glow{transform-box:view-box;transform-origin:180px 242px;animation:glowbreath 3.6s ease-in-out infinite}@keyframes glowbreath{0%,to{transform:scale(1)}50%{transform:scale(1.045)}}.pull{pointer-events:auto;cursor:grab;outline:none;touch-action:none}.pull.dragging{cursor:grabbing}.rope,.rope-sheen,.ferrule,.bead,.bead-hi,.beacon{pointer-events:none}.rope-hit{pointer-events:all}.pull:hover .bead,.pull:focus-visible .bead{filter:drop-shadow(0 0 6px rgba(255,214,150,.95))}.pull:focus-visible .rope{stroke:var(--warm)}.pull{transform-box:view-box;transform-origin:210px 236px;animation:ropeSway 4.2s ease-in-out infinite}.pull.busy{animation:none}@keyframes ropeSway{0%,to{transform:rotate(-2.2deg)}50%{transform:rotate(2.4deg)}}.beacon{opacity:0;transform-box:fill-box;transform-origin:center}.room:not(.is-on) .beacon{animation:beacon 2.6s ease-in-out infinite}@keyframes beacon{0%,to{opacity:0;transform:scale(.55)}45%{opacity:.55;transform:scale(1.3)}}.bead{transform-box:fill-box;transform-origin:center}.bead.pop{animation:knobpop .22s ease}@keyframes knobpop{0%{transform:scale(1)}42%{transform:scale(1.35)}to{transform:scale(1)}}.hint{position:absolute;left:50%;top:87%;margin-top:8px;transform:translate(-50%);white-space:nowrap;font-size:.76rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:#ffdba59e;transition:opacity .3s var(--ease-out);pointer-events:none}.room.is-on .hint{opacity:0}.auth{position:relative;z-index:1;flex:0 1 410px;min-width:0;display:flex;flex-direction:column;align-items:center}.mascot-stage{position:relative;z-index:3;width:226px;margin-bottom:-44px;filter:drop-shadow(0 22px 26px rgba(0,0,0,.5));transform:translate3d(var(--m-x, 0),var(--m-y, 0),0)}.mascot{display:block;width:100%;height:auto;overflow:visible}.mascot__shadow{fill:#0000004d}.mascot__art{filter:brightness(.21);transition:filter .42s var(--ease-out) .08s}.room.is-on .mascot__art{filter:none}.eye__ball{transform:translate(var(--px, 0px),var(--py, 0px))}.mascot .head{transform:translate(var(--hx, 0px),var(--hy, 0px))}.mascot .ears{transform:translate(calc(var(--hx, 0px) * .45),calc(var(--hy, 0px) * .45))}.ear,.eye,.paw,.tongue{transform-box:fill-box;transform-origin:center}.ear--l,.ear--r{transform-origin:50% 90%}.eye{transition:transform .12s ease}.mascot.is-blink .eye{transform:scaleY(.08)}.mouth{fill:none;stroke:#2b2b33;stroke-width:3;stroke-linecap:round}.eye__sleep{opacity:0;transition:opacity .3s var(--ease-out)}.mascot.is-asleep .eye__sleep{opacity:1}.mascot.is-asleep .eye{transform:scaleY(0)}.mascot.is-asleep .ear--l{transform:rotate(-13deg)}.mascot.is-asleep .ear--r{transform:rotate(13deg)}.mascot.is-asleep .blush{opacity:.32}.tongue{opacity:0;transform-origin:center top;transform:scaleY(.35);transition:opacity .25s ease,transform .32s var(--ease-spring)}.blush{opacity:.55;transition:opacity .35s ease}.ear{transition:transform .4s var(--ease-spring)}.paw{transform:translateY(120px) scale(.88);transition:transform .44s var(--ease-spring);filter:drop-shadow(0 6px 6px rgba(0,0,0,.24))}.mascot.is-cover .paw{transform:translateY(0) scale(1)}.mascot.is-cover .blush{opacity:.95}.mascot.is-cover .ear--l{transform:rotate(-9deg)}.mascot.is-cover .ear--r{transform:rotate(9deg)}.mascot.is-peek .paw{transform:translateY(52px) scale(1);transition:transform .34s var(--ease-out)}.mascot.is-peek .blush{opacity:.95}.mascot.is-peek .ear--l{transform:rotate(-5deg)}.mascot.is-peek .ear--r{transform:rotate(5deg)}.mascot.is-happy .eye{transform:scaleY(.18)}.mascot.is-happy .blush{opacity:.9}.mascot.is-happy .mouth{transform:translateY(1px)}.mascot.is-happy .tongue{opacity:1;transform:scaleY(1)}.mascot{animation:mascot-bob 5.2s ease-in-out infinite}@keyframes mascot-bob{0%,to{transform:translateY(0) rotate(0)}50%{transform:translateY(-5px) rotate(-.6deg)}}.card{position:relative;z-index:2;width:100%;padding:56px 34px 30px;border-radius:26px;background:linear-gradient(162deg,#22362ea3,#0b141085);backdrop-filter:blur(26px) saturate(1.3);-webkit-backdrop-filter:blur(26px) saturate(1.3);border:1px solid rgba(255,255,255,.13);box-shadow:0 44px 90px #0000008c,0 2px 8px #0000004d,inset 0 1px #ffffff29;overflow:hidden}.card__sheen{position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:radial-gradient(280px circle at var(--mx, 50%) var(--my, -10%),rgba(255,236,200,.15),transparent 45%)}.card__head{text-align:center;margin-bottom:22px}.brand{font-family:Sora,sans-serif;font-weight:700;font-size:2.1rem;letter-spacing:-.02em;background:linear-gradient(120deg,var(--accent-2),var(--accent));-webkit-background-clip:text;background-clip:text;color:transparent}.sub{margin-top:5px;font-size:.9rem;font-weight:400;color:var(--muted)}.form{display:flex;flex-direction:column;gap:15px}.field{position:relative}.field input{width:100%;padding:21px 16px 8px;font-size:1rem;font-weight:500;font-family:inherit;color:var(--ink);background:var(--field);border:1px solid var(--line);border-radius:13px;outline:none;transition:border-color .25s ease,background .25s ease,box-shadow .25s ease}#password{padding-right:48px}.field input:focus{border-color:var(--accent);background:#ffffff14;box-shadow:0 0 0 3px #4fd6a03d}.field label{position:absolute;left:16px;top:16px;font-size:1rem;color:var(--muted);pointer-events:none;transform-origin:left top;transition:transform .2s ease,color .2s ease}.field input:focus+label,.field input:not(:placeholder-shown)+label{transform:translateY(-11px) scale(.72);color:var(--accent-2)}.reveal{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:36px;height:36px;display:grid;place-items:center;background:transparent;border:0;border-radius:10px;color:var(--muted);cursor:pointer;transition:color .2s ease,background .2s ease}.reveal:hover{color:var(--ink);background:#ffffff14}.reveal:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.reveal svg{width:20px;height:20px}.reveal .icon-off,.reveal.is-on .icon-on{display:none}.reveal.is-on .icon-off{display:block}.row{display:flex;align-items:center;justify-content:space-between;font-size:.85rem;margin-top:1px}.check{display:inline-flex;align-items:center;gap:9px;cursor:pointer;color:var(--muted);user-select:none}.check input{position:absolute;opacity:0;width:0;height:0}.check__box{width:18px;height:18px;border-radius:6px;border:1px solid rgba(255,255,255,.26);background:#ffffff0d;display:grid;place-items:center;transition:background .2s ease,border-color .2s ease}.check__box:after{content:"";width:5px;height:9px;border:2px solid #08281d;border-top:0;border-left:0;transform:rotate(45deg) scale(0);margin-top:-2px;transition:transform .18s var(--ease-spring)}.check input:checked+.check__box{background:linear-gradient(135deg,var(--accent-2),var(--accent));border-color:transparent}.check input:checked+.check__box:after{transform:rotate(45deg) scale(1)}.check input:focus-visible+.check__box{box-shadow:0 0 0 3px #4fd6a057}.link{color:var(--accent-2);text-decoration:none;transition:color .2s ease}.link:hover{color:var(--accent);text-decoration:underline}.link:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.btn{position:relative;margin-top:6px;min-height:60px;padding:0 18px 0 26px;display:flex;align-items:center;justify-content:space-between;gap:0;font-family:inherit;font-size:1.02rem;font-weight:700;color:#04211a;background:linear-gradient(135deg,#7ceabc,#3cc292 54%,#1c8f6a);border:1px solid rgba(190,255,226,.34);border-radius:14px;cursor:pointer;isolation:isolate;box-shadow:0 16px 30px -10px #1c8f6a8c,inset 0 1px #ffffff4d;transition:transform .2s var(--ease-out),box-shadow .2s ease,filter .2s ease}.btn:hover{transform:translateY(-2px);filter:brightness(1.06);box-shadow:0 22px 40px -12px #1c8f6aad,inset 0 1px #ffffff57}.btn:active{transform:translateY(0) scale(.99)}.btn:disabled{cursor:default}.btn:focus-visible{outline:3px solid var(--accent-2);outline-offset:3px}.doorbtn__label{position:relative;z-index:1;letter-spacing:.01em;white-space:nowrap;transition:opacity .3s ease}.btn.walking .doorbtn__label{opacity:.6}.dooric{position:relative;width:62px;height:38px;flex:none;perspective:300px;z-index:1}.dooric__frame{position:absolute;right:0;top:2px;width:28px;height:34px;border-radius:5px;overflow:hidden;background:linear-gradient(180deg,#06241a,#031009);box-shadow:inset 0 0 0 1.5px #a0f0cd4d}.dooric__glow{position:absolute;inset:0;background:radial-gradient(62% 72% at 50% 46%,#ffdba0f2,#ffbe6e00 72%);opacity:0;transition:opacity .35s var(--ease-out)}.dooric__panel{position:absolute;right:0;top:2px;width:28px;height:34px;border-radius:5px;background:linear-gradient(180deg,var(--accent-2),var(--accent) 55%,var(--accent-deep));box-shadow:inset 0 0 0 1.5px #ffffff42,inset -6px 0 10px #00000042;transform-origin:right center;transform:rotateY(0);transition:transform .42s var(--ease-out);backface-visibility:hidden}.dooric__handle{position:absolute;left:4px;top:50%;width:2.5px;height:10px;border-radius:2px;transform:translateY(-50%);background:linear-gradient(180deg,#fff,#d6f7e8)}.dooric__person{position:absolute;left:2px;bottom:2px;color:#fff;transition:transform .74s var(--ease-out),opacity .3s var(--ease-out) .36s}.dooric__person svg{display:block;overflow:visible}.leg,.arm,.shin{transform-box:fill-box;transform-origin:50% 0}.person__bob,.person{transform-box:fill-box;transform-origin:50% 100%}.leg--front{transform:rotate(11deg)}.leg--back{transform:rotate(-11deg)}.arm--front{transform:rotate(-9deg)}.arm--back{transform:rotate(9deg)}.leg--front .shin,.leg--back .shin{transform:rotate(7deg)}.person{transition:transform .25s var(--ease-out)}.btn.walking .person{transform:rotate(4deg)}.btn.walking .leg--front{animation:thighF .46s linear infinite}.btn.walking .leg--back{animation:thighB .46s linear infinite}.btn.walking .leg--front .shin{animation:shinF .46s linear infinite}.btn.walking .leg--back .shin{animation:shinB .46s linear infinite}.btn.walking .arm--front{animation:armF .46s linear infinite}.btn.walking .arm--back{animation:armB .46s linear infinite}.btn.walking .person__bob{animation:bob .23s linear infinite}@keyframes thighF{0%,to{transform:rotate(26deg)}50%{transform:rotate(-24deg)}}@keyframes thighB{0%,to{transform:rotate(-24deg)}50%{transform:rotate(26deg)}}@keyframes armF{0%,to{transform:rotate(-24deg)}50%{transform:rotate(24deg)}}@keyframes armB{0%,to{transform:rotate(24deg)}50%{transform:rotate(-24deg)}}@keyframes shinF{0%{transform:rotate(8deg)}25%{transform:rotate(48deg)}55%{transform:rotate(10deg)}to{transform:rotate(8deg)}}@keyframes shinB{0%{transform:rotate(34deg)}30%{transform:rotate(6deg)}78%{transform:rotate(44deg)}to{transform:rotate(34deg)}}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(-1.4px)}}.btn.dooropen .dooric__panel{transform:rotateY(72deg)}.btn.dooropen .dooric__glow{opacity:.95}.btn.out .dooric__person{transform:translate(36px) scale(.72);opacity:0}.status{min-height:0;font-size:.8rem;color:var(--muted);text-align:center}.status:empty{display:none}.divider{display:flex;align-items:center;gap:12px;color:var(--faint);font-size:.72rem;letter-spacing:.02em}.divider:before,.divider:after{content:"";height:1px;flex:1;background:var(--line)}.socials{display:grid;grid-template-columns:1fr 1fr;gap:12px}.social{display:flex;align-items:center;justify-content:center;gap:8px;padding:11px;border-radius:12px;background:#ffffff0d;border:1px solid var(--line);font-family:inherit;color:var(--ink);font-size:.9rem;font-weight:600;cursor:pointer;transition:background .2s ease,transform .2s ease,border-color .2s ease}.social:hover{background:#ffffff1c;border-color:#ffffff38;transform:translateY(-1px)}.social:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.social svg{width:18px;height:18px}.foot{text-align:center;font-size:.85rem;color:var(--muted);margin-top:2px}html.js .card,html.js .mascot-stage{transition:opacity .5s var(--ease-out) .14s,transform .62s var(--ease-spring) .14s,filter .42s var(--ease-out) .08s}html.js .room:not(.is-on) .card{opacity:.07;transform:translateY(18px) scale(.985);transition-delay:0s}html.js .room:not(.is-on) .card__sheen{opacity:0}html.js .room:not(.is-on) .mascot-stage{transform:translate3d(var(--m-x, 0),14px,0) scale(.965);transition-delay:0s}html.js .lamp-stage{opacity:0;transform:translateY(16px) scale(.97)}html.js .room.is-in .lamp-stage{opacity:1;transform:none;transition:opacity .6s ease,transform .9s var(--ease-spring)}html.js .hint{opacity:0}html.js .room.is-in .hint{opacity:1;transition:opacity .6s ease .7s}html.js .room.is-in.is-on .hint{opacity:0;transition:opacity .3s var(--ease-out)}@media(max-width:840px){.room{padding:clamp(14px,2vh,30px) 20px clamp(24px,3vh,40px)}.scene{flex-direction:column;align-items:center;gap:0}.lamp-stage{width:clamp(180px,52vw,244px);margin-bottom:-11%}.hint{position:static;transform:none;margin:2px 0 4px;text-align:center}.auth{flex:none;width:min(100%,410px)}}@media(max-width:430px){.card{padding:52px 24px 26px}.mascot-stage{width:186px;margin-bottom:-36px}.brand{font-size:1.9rem}.hint{font-size:.68rem}}@media(min-width:841px)and (max-height:760px){.lamp-stage{width:clamp(170px,21vw,262px)}.mascot-stage{width:196px;margin-bottom:-38px}.card{padding:48px 30px 24px}.form{gap:13px}}@media(prefers-reduced-motion:reduce){.orb,.mote,.grain,.mascot,.pull,.zzz,.beacon,.bob,.room.is-on .glow{animation:none!important}html.js .card,html.js .mascot-stage,html.js .lamp-stage,html.js .hint,.lamp_light,.shade--on,.shade--off,.face--on,.face--off,.lamp__head,.eye,.eye__sleep,.ear,.roomlight,.stand,.rope,.rope-sheen,.ferrule,.bead,.bead-hi,.mascot__art{transition-duration:1ms!important;transition-delay:0s!important}.paw{transition:transform .2s ease}.btn.walking .leg,.btn.walking .arm,.btn.walking .person__bob{animation:none!important}}html:not(.js) .lamp-stage,html:not(.js) .hint{display:none}html:not(.js) .roomlight,html:not(.js) .orb,html:not(.js) .motes{opacity:1}html:not(.js) .mascot__art{filter:none}
