@import url('https://fonts.googleapis.com/css2?family=Gowun+Batang:wght@400;700&family=Noto+Sans+KR:wght@400;500;600&display=swap');
:root{--glass:rgba(56,49,45,.68);--cream:#f3eee7;--ink:#4b423d}*{box-sizing:border-box}html,body,#app{margin:0;width:100%;height:100%;overflow:hidden;background:#d9cfc4;color:var(--ink);font-family:'Noto Sans KR',sans-serif}button{font:inherit}#world{display:block;width:100%;height:100%;touch-action:none;cursor:grab}#world:active{cursor:grabbing}#loading{position:fixed;z-index:100;inset:0;display:grid;place-content:center;text-align:center;background:#f1ece4;transition:.7s}#loading.hide{opacity:0;pointer-events:none}.mark{font-size:26px;color:#9c8b7d}#loading h1{font:700 28px 'Gowun Batang',serif;margin:12px 0 5px}#loading p{font-size:11px;color:#988b82}.top{position:fixed;z-index:20;top:20px;left:20px;right:20px;display:flex;gap:8px;align-items:center}.top button,.actions,.piano,.move-pad button{border:1px solid rgba(255,255,255,.48);color:#fff;background:var(--glass);backdrop-filter:blur(15px);box-shadow:0 8px 28px rgba(53,42,36,.15)}.circle{width:48px;height:48px;border-radius:50%;font-size:18px}.pill{height:48px;border-radius:25px;padding:0 18px;display:flex;align-items:center;gap:10px}.pill b{font-family:'Gowun Batang',serif}.pill span{font-size:10px;opacity:.6}.top-right{margin-left:auto;display:flex;padding:4px;border:1px solid rgba(255,255,255,.45);background:var(--glass);backdrop-filter:blur(15px);border-radius:26px}.top-right button{border:0;background:transparent;box-shadow:none;min-width:42px;height:38px;border-radius:20px;color:#fff}.top-right button+button{border-left:1px solid rgba(255,255,255,.13)}#status{position:fixed;z-index:18;top:16%;left:50%;transform:translateX(-50%);padding:9px 15px;border-radius:20px;color:#fff;background:rgba(66,57,51,.43);backdrop-filter:blur(10px);font:12px 'Gowun Batang',serif;white-space:nowrap}#teacher{position:fixed;z-index:18;top:23%;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:5px;padding:6px 11px;color:#fff;background:rgba(65,56,51,.55);border-radius:18px;font-size:10px;pointer-events:none}#teacher small{opacity:.55}#teacher span{margin-left:4px;padding-left:8px;border-left:1px solid rgba(255,255,255,.25);opacity:.7}.actions{position:fixed;z-index:20;left:50%;bottom:22px;transform:translateX(-50%);display:grid;grid-template-columns:repeat(3,105px);padding:6px;border-radius:34px}.actions button{border:0;color:#fff;background:transparent;border-radius:28px;min-height:58px;display:grid;place-items:center;grid-template-columns:30px auto;cursor:pointer}.actions button:hover,.actions button.active{background:rgba(255,255,255,.14)}.actions i{font-style:normal;font-size:19px}.actions b{font-size:11px}.piano{position:fixed;z-index:20;right:22px;bottom:24px;border-radius:24px;padding:12px 16px;font-size:11px}.move-pad{position:fixed;z-index:20;left:22px;bottom:22px;width:104px;height:104px;display:grid;grid-template:repeat(3,1fr)/repeat(3,1fr);gap:3px}.move-pad button{border-radius:50%}.move-pad button:nth-child(1){grid-area:1/2}.move-pad button:nth-child(2){grid-area:2/1}.move-pad button:nth-child(3){grid-area:2/2}.move-pad button:nth-child(4){grid-area:2/3}#toast{position:fixed;z-index:40;left:50%;bottom:100px;transform:translate(-50%,20px);opacity:0;padding:10px 16px;border-radius:20px;background:rgba(248,244,238,.92);font-size:11px;transition:.3s;box-shadow:0 10px 35px rgba(50,40,35,.18)}#toast.show{opacity:1;transform:translate(-50%,0)}dialog{border:0;border-radius:28px;background:rgba(246,241,234,.96);color:var(--ink);box-shadow:0 30px 100px rgba(45,35,30,.35);backdrop-filter:blur(18px)}dialog::backdrop{background:rgba(39,32,28,.42);backdrop-filter:blur(5px)}.modal-close{border:0;background:transparent;color:var(--ink);font-size:12px;cursor:pointer}.ribbon-stage{width:min(620px,82vw);height:min(600px,78vh);display:grid;place-content:center;justify-items:center;position:relative;overflow:hidden}.shoe{width:170px;height:270px;border-radius:50% 50% 35% 35%;background:linear-gradient(145deg,#efd4cd,#bd8d87);transform:perspective(500px) rotateX(18deg);box-shadow:0 25px 60px rgba(87,59,53,.2)}.shoe span{display:block;width:76px;height:130px;margin:34px auto;border:2px solid rgba(255,255,255,.55);border-radius:45%}.ribbon-loop{position:absolute;width:300px;height:420px;border:22px solid rgba(184,133,128,.7);border-radius:50%;filter:drop-shadow(0 8px 10px rgba(90,55,52,.1));transition:.25s}.ribbon-stage p{font:28px 'Gowun Batang',serif;margin:20px 0 4px}.ribbon-stage small{color:#8d7e76}.eyebrow{font-size:9px;letter-spacing:.2em;color:#907d72}#infoDialog,#settingsDialog{width:min(480px,calc(100% - 30px));padding:30px}#infoDialog h2{font:700 35px/1.3 'Gowun Batang',serif}#infoDialog>p{line-height:1.8}.primary{width:100%;border:0;border-radius:24px;padding:14px;background:#574d47;color:#fff}#settingsDialog h2{font-family:'Gowun Batang',serif}#settingsDialog label{display:grid;grid-template-columns:80px 1fr;gap:15px;padding:16px 0;border-bottom:1px solid rgba(70,60,53,.12);font-size:12px}#settingsDialog>p{font-size:10px;color:#8b7e76}
@media(max-width:700px){.top{top:12px;left:12px;right:12px}.circle{width:44px;height:44px}.pill{height:44px;padding:0 13px}.top-right button{min-width:35px}.actions{left:auto;right:12px;transform:none;grid-template-columns:repeat(3,1fr);width:calc(100% - 124px);bottom:16px}.actions button{grid-template-columns:1fr}.actions i{font-size:16px}.move-pad{left:12px;bottom:12px;width:94px;height:94px}.piano{right:14px;bottom:88px;padding:9px 12px}#status{top:14%;font-size:10px}#teacher{top:20%}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}
.walking-stop{position:fixed;z-index:24;left:50%;bottom:98px;transform:translate(-50%,12px);display:flex;align-items:center;gap:8px;height:42px;padding:0 16px;border:1px solid rgba(255,255,255,.58);border-radius:24px;color:#fff;background:rgba(72,63,57,.82);backdrop-filter:blur(16px);box-shadow:0 10px 30px rgba(50,40,35,.2);opacity:0;pointer-events:none;transition:.22s;cursor:pointer}.walking-stop.show{opacity:1;pointer-events:auto;transform:translate(-50%,0)}.walking-stop b{font-size:11px}.walking-stop>span:last-child{padding-left:8px;border-left:1px solid rgba(255,255,255,.3);font-size:10px;opacity:.78}.walking-dot{width:7px;height:7px;border-radius:50%;background:#fff;box-shadow:0 0 0 4px rgba(255,255,255,.16);animation:walkingPulse 1s ease-in-out infinite}@keyframes walkingPulse{50%{transform:scale(.7);opacity:.55}}
.ribbon-stage{width:min(620px,82vw);height:min(650px,80vh);display:grid;place-content:center;justify-items:center}.ankle{position:relative;width:240px;height:360px;margin-bottom:8px}.ankle>i{position:absolute;left:83px;top:0;width:74px;height:185px;border-radius:40px 40px 18px 18px;background:linear-gradient(90deg,#e5b59f,#f2c9b6 48%,#dca78f)}.pointe-shoe{position:absolute;left:55px;top:132px;width:130px;height:210px;background:linear-gradient(105deg,#d79f9a,#f2ccc5 42%,#c98986);border-radius:58% 58% 22px 22px;box-shadow:0 22px 35px rgba(91,57,53,.18);transform:perspective(500px) rotateX(10deg)}.vamp{position:absolute;left:30px;top:20px;width:70px;height:112px;border:1px solid rgba(255,255,255,.55);border-radius:48%}.platform{position:absolute;left:19px;bottom:-4px;width:92px;height:20px;border-radius:4px 4px 14px 14px;background:#b97675}.shoe-ribbon{position:absolute;top:143px;width:175px;height:27px;background:linear-gradient(#e6b7b3,#c88d8b);box-shadow:0 4px 10px rgba(91,57,53,.12);transform-origin:12px 50%;transition:.55s ease}.shoe-ribbon.left{left:36px;transform:rotate(-24deg)}.shoe-ribbon.right{right:34px;transform-origin:calc(100% - 12px) 50%;transform:rotate(24deg)}.ribbon-stage.step-2 .shoe-ribbon.left{transform:translate(33px,-50px) rotate(18deg)}.ribbon-stage.step-3 .shoe-ribbon-left{transform:translate(33px,-50px) rotate(18deg)}.ribbon-stage.step-3 .shoe-ribbon.right{transform:translate(-34px,-80px) rotate(-17deg)}.ribbon-stage.step-4 .shoe-ribbon.left{transform:translate(33px,-50px) rotate(18deg);width:120px}.ribbon-stage.step-4 .shoe-ribbon.right{transform:translate(-34px,-80px) rotate(-17deg);width:120px}.ribbon-stage p{font:26px 'Gowun Batang',serif;margin:4px 0}.ribbon-stage strong{max-width:440px;text-align:center;font:14px/1.7 'Gowun Batang',serif}.ribbon-stage small{max-width:430px;margin-top:12px;text-align:center;color:#8d7e76;font-size:10px}.ribbon-stage button{margin-top:16px;border:0;border-radius:22px;padding:11px 22px;background:#5b5049;color:#fff}
.actions{grid-template-columns:repeat(5,92px)}.actions button{grid-template-columns:25px auto}.actions button[aria-pressed="true"]{background:rgba(255,255,255,.16)}.move-menu{position:fixed;z-index:23;left:50%;bottom:98px;transform:translate(-50%,12px);width:min(620px,calc(100% - 28px));padding:9px;display:grid;grid-template-columns:repeat(3,1fr);gap:7px;border:1px solid rgba(255,255,255,.5);border-radius:25px;background:rgba(248,243,237,.94);box-shadow:0 18px 55px rgba(55,43,37,.22);backdrop-filter:blur(20px);opacity:0;pointer-events:none;transition:.22s}.move-menu.open{opacity:1;pointer-events:auto;transform:translate(-50%,0)}.move-menu button{min-height:54px;border:0;border-radius:17px;background:rgba(255,255,255,.7);color:#554943;text-align:left;display:grid;grid-template-columns:28px 1fr;grid-template-rows:auto auto;padding:8px 10px;cursor:pointer}.move-menu button:hover,.move-menu button.active{background:#eadbd6}.move-menu i{grid-row:1/3;align-self:center;font-style:normal;font-size:18px}.move-menu b{font:12px 'Gowun Batang',serif}.move-menu small{font-size:9px;color:#948079}.sequence-status{position:fixed;z-index:22;left:50%;bottom:99px;transform:translateX(-50%);padding:9px 15px;border-radius:19px;color:#fff;background:rgba(72,63,57,.78);backdrop-filter:blur(14px);font:11px 'Gowun Batang',serif;opacity:0;pointer-events:none;transition:.25s}.sequence-status.show{opacity:1}@media(max-width:700px){.actions{left:auto;right:8px;transform:none;grid-template-columns:repeat(5,1fr);width:calc(100% - 112px);bottom:12px}.actions button{grid-template-columns:1fr;min-height:62px}.actions i{font-size:15px}.actions b{font-size:9px}.move-menu{bottom:86px;grid-template-columns:repeat(2,1fr)}.sequence-status{bottom:86px}.piano{max-width:170px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}
.move-menu{max-height:calc(100vh - 190px);overflow:auto}.piano-keys{position:fixed;z-index:25;left:50%;bottom:102px;transform:translate(-50%,12px);display:flex;align-items:center;gap:9px;height:46px;padding:0 19px;border:1px solid rgba(255,255,255,.62);border-radius:25px;color:#fff;background:rgba(44,37,34,.86);backdrop-filter:blur(18px);box-shadow:0 12px 34px rgba(40,30,26,.25);opacity:0;pointer-events:none;transition:.22s;cursor:pointer}.piano-keys.show{opacity:1;pointer-events:auto;transform:translate(-50%,0)}.piano-keys[aria-pressed="true"]{background:rgba(117,84,64,.94)}.piano-keys span{font-size:17px}.piano-keys b{font-size:11px}@media(max-width:700px){.piano-keys{bottom:92px}}
.piano-keyboard{position:fixed;z-index:28;left:50%;bottom:18px;width:min(760px,calc(100% - 28px));padding:13px 15px 16px;transform:translate(-50%,calc(100% + 30px));opacity:0;pointer-events:none;border:1px solid rgba(255,255,255,.7);border-radius:24px;background:rgba(242,235,224,.94);box-shadow:0 24px 70px rgba(45,34,28,.34);backdrop-filter:blur(22px);transition:.3s ease}.piano-keyboard.show{transform:translate(-50%,0);opacity:1;pointer-events:auto}.piano-keyboard header{display:flex;align-items:center;justify-content:space-between;margin:0 2px 10px}.piano-keyboard header div{display:grid;gap:2px}.piano-keyboard header small{font-size:8px;letter-spacing:.18em;color:#9a7e6e}.piano-keyboard header b{font:12px 'Gowun Batang',serif;color:#5b4d46}.piano-keyboard header>span{padding:6px 10px;border-radius:14px;background:#e4d5ca;color:#725d51;font-size:9px}.piano-keyboard header>span.live{background:#bddbc8;color:#315f44}.keyboard-keys{position:relative;display:flex;height:142px;padding:0 3px}.keyboard-key{position:relative;flex:1;border:1px solid #c9bdb3;border-radius:0 0 8px 8px;background:linear-gradient(90deg,#f3eee8,#fffdf8 35%,#eee6dc);box-shadow:inset 0 -5px 10px rgba(96,75,63,.08);cursor:pointer;touch-action:none}.keyboard-key span{position:absolute;left:50%;bottom:8px;transform:translateX(-50%);font-size:9px;color:#aa9a90}.keyboard-key.active{transform:translateY(3px);background:#ead8cf}.keyboard-black{position:absolute;z-index:2;top:0;width:7.1%;height:88px;border:0;border-radius:0 0 6px 6px;background:linear-gradient(90deg,#171412,#3d3632 55%,#171412);box-shadow:0 7px 9px rgba(30,23,19,.38);cursor:pointer;touch-action:none}.keyboard-black.active{height:84px;background:#6e5144}.keyboard-black span{display:none}@media(max-width:700px){.piano-keyboard{bottom:9px;padding:10px 9px 12px;border-radius:20px}.piano-keyboard header b{font-size:10px}.keyboard-keys{height:112px}.keyboard-black{height:69px}.actions,.move-pad,.piano,.piano-keys{transition:opacity .2s}.piano-keyboard.show~.move-pad{opacity:.2}}
.piano-keys{display:none!important}
#world{cursor:pointer}#world:active{cursor:grabbing}
#follow,#ribbon{display:none!important}
#applause{display:grid!important}.applause-burst{position:fixed;z-index:35;width:1px;height:1px;pointer-events:none}.applause-burst span{position:absolute;left:0;top:0;font-size:23px;filter:drop-shadow(0 4px 5px rgba(65,43,35,.25));animation:applause-float 1.1s cubic-bezier(.2,.7,.2,1) forwards}@keyframes applause-float{0%{opacity:0;transform:translate(-50%,-50%) scale(.4)}18%{opacity:1}100%{opacity:0;transform:translate(calc(-50% + var(--x)),calc(-50% + var(--y))) scale(1.15) rotate(18deg)}}
.view-distance{position:fixed;z-index:21;left:22px;bottom:145px;display:grid;gap:5px;padding:5px;border:1px solid rgba(255,255,255,.48);border-radius:22px;background:var(--glass);backdrop-filter:blur(15px);box-shadow:0 8px 28px rgba(53,42,36,.15)}.view-distance button{min-width:84px;height:38px;padding:0 11px;border:0;border-radius:17px;display:flex;align-items:center;gap:7px;color:#fff;background:transparent;cursor:pointer}.view-distance button:hover,.view-distance button.active{background:rgba(255,255,255,.18)}.view-distance span{width:14px;font-size:11px;opacity:.8}.view-distance b{font-size:10px;white-space:nowrap}@media(max-width:700px){.view-distance{left:12px;bottom:116px;padding:4px}.view-distance button{min-width:76px;height:34px;padding:0 9px}.view-distance b{font-size:9px}}
.guestbook-dialog{width:min(520px,calc(100% - 28px));padding:28px}.guestbook-dialog>.modal-close{float:right;font-size:18px}.guestbook-dialog h2{margin:8px 0 5px;font:700 30px 'Gowun Batang',serif}.guestbook-dialog>p:not(.eyebrow){margin:0 0 20px;color:#8a786e;font-size:11px}.guestbook-dialog form{display:flex;gap:8px}.guestbook-dialog input{min-width:0;flex:1;height:46px;padding:0 16px;border:1px solid #ddcfc4;border-radius:15px;background:#fffdf9;color:#534841;outline:none}.guestbook-dialog input:focus{border-color:#b99a88;box-shadow:0 0 0 3px rgba(185,154,136,.14)}.guestbook-dialog form button{border:0;border-radius:15px;padding:0 17px;background:#69584e;color:#fff;font-size:11px;cursor:pointer}.guestbook-entries{display:grid;gap:7px;margin-top:18px;max-height:230px;overflow:auto}.guestbook-entry{display:grid;grid-template-columns:1fr auto;gap:3px 10px;padding:11px 13px;border-radius:14px;background:rgba(255,255,255,.66)}.guestbook-entry b{font-size:10px;color:#806b60}.guestbook-entry time{font-size:9px;color:#ad9b91}.guestbook-entry p{grid-column:1/3;margin:0;font:12px/1.5 'Gowun Batang',serif;color:#51443e}@media(max-width:560px){.guestbook-dialog form{display:grid}.guestbook-dialog form button{height:42px}}
.hair-picker{position:fixed;z-index:25;right:20px;top:82px;display:grid;justify-items:end;gap:8px}.hair-picker>button{height:42px;padding:0 14px;border:1px solid rgba(255,255,255,.52);border-radius:23px;color:#fff;background:var(--glass);backdrop-filter:blur(15px);box-shadow:0 8px 28px rgba(53,42,36,.15);display:flex;align-items:center;gap:7px;cursor:pointer}.hair-picker>button span{font-size:15px}.hair-picker>button b{font:11px 'Gowun Batang',serif}.hair-options{width:226px;padding:10px;display:grid;grid-template-columns:repeat(2,1fr);gap:7px;border:1px solid rgba(255,255,255,.7);border-radius:22px;background:rgba(248,243,237,.96);box-shadow:0 18px 55px rgba(55,43,37,.24);backdrop-filter:blur(20px);opacity:0;transform:translateY(-7px) scale(.96);pointer-events:none;transform-origin:top right;transition:.2s}.hair-options.open{opacity:1;transform:none;pointer-events:auto}.hair-options button{min-height:65px;border:0;border-radius:16px;background:rgba(255,255,255,.78);color:#594b45;display:grid;place-items:center;gap:3px;padding:7px;cursor:pointer}.hair-options button:hover,.hair-options button.active{background:#eadbd6;box-shadow:inset 0 0 0 1px rgba(126,91,76,.18)}.hair-options button.loading{opacity:.55}.hair-options button span{font:10px 'Gowun Batang',serif}.hair-options>small{grid-column:1/-1;text-align:center;color:#9a877c;font-size:8px;padding:2px}.hair-icon{position:relative;display:block;width:34px;height:28px;border-radius:50% 50% 42% 42%;background:#342725}.hair-icon:before,.hair-icon:after{content:"";position:absolute;background:#342725}.hair-icon.classic:before{width:13px;height:13px;border-radius:50%;left:10px;top:-8px}.hair-icon.buns:before,.hair-icon.buns:after{width:12px;height:12px;border-radius:50%;top:-4px}.hair-icon.buns:before{left:-3px}.hair-icon.buns:after{right:-3px}.hair-icon.long{height:35px;border-radius:48% 48% 35% 35%}.hair-icon.long:before{width:30px;height:20px;border-radius:0 0 45% 45%;left:2px;top:17px}.hair-icon.parted:before{width:2px;height:15px;left:16px;top:0;background:#eadbd6;transform:rotate(12deg)}.hair-icon.short{height:22px;border-radius:55% 55% 24% 24%}.hair-icon.short:before{width:25px;height:5px;left:4px;top:16px;border-radius:0 0 50% 50%}.hair-options button:focus-visible,.hair-picker>button:focus-visible{outline:2px solid #fff;outline-offset:2px}@media(max-width:700px){.hair-picker{right:10px;top:66px}.hair-picker>button{height:38px;padding:0 11px}.hair-options{width:202px}.hair-options button{min-height:58px}}
