*{box-sizing:border-box;margin:0;padding:0}html,body{-webkit-user-select:none;user-select:none;cursor:default;background:#000;width:100%;height:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;overflow:hidden}#app{width:100vw;height:100vh;position:relative}#app canvas{object-fit:cover;display:block;transform:scaleX(-1);width:100%!important;height:100%!important}.shade-selector{z-index:10;pointer-events:none;background:linear-gradient(#0000,#000000b3 30%);padding:16px 20px 24px;position:fixed;bottom:0;left:0;right:0}.shade-selector__tabs{pointer-events:auto;justify-content:center;gap:4px;margin-bottom:12px;display:flex}.shade-tab{color:#ffffff80;cursor:pointer;-webkit-tap-highlight-color:transparent;background:#ffffff14;border:1px solid #ffffff1f;border-radius:20px;padding:6px 16px;font-size:12px;font-weight:500;transition:all .2s}.shade-tab:hover{color:#ffffffb3;background:#ffffff1f}.shade-tab--active{color:#fff;background:#ffffff2e;border-color:#ffffff4d;font-weight:600}.shade-selector__track{scrollbar-width:none;pointer-events:auto;justify-content:center;gap:16px;padding:4px 0;display:flex;overflow-x:auto}.shade-selector__track::-webkit-scrollbar{display:none}.shade-swatch{cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none;flex-direction:column;align-items:center;gap:6px;padding:4px;transition:transform .15s;display:flex}.shade-swatch:active{transform:scale(.92)}.shade-swatch__color{border:2px solid #ffffff40;border-radius:50%;width:48px;height:48px;transition:border-color .2s,box-shadow .2s,transform .2s;box-shadow:0 2px 8px #0000004d}.shade-swatch--active .shade-swatch__color{border:3px solid #fff;transform:scale(1.1);box-shadow:0 0 12px #ffffff4d,0 2px 8px #0000004d}.shade-swatch__name{color:#ffffff80;white-space:nowrap;font-size:10px;transition:color .2s}.shade-swatch--active .shade-swatch__name{color:#fff;font-weight:600}.toggle-bar{z-index:10;gap:8px;display:flex;position:fixed;top:24px;right:24px}.toggle-btn{-webkit-backdrop-filter:blur(12px);color:#fff;cursor:pointer;-webkit-tap-highlight-color:transparent;background:#00000080;border:1px solid #ffffff26;border-radius:24px;padding:10px 20px;font-size:13px;font-weight:500;transition:background .2s,border-color .2s}.toggle-btn:hover{background:#000000b3;border-color:#ffffff4d}.toggle-btn:active,.toggle-btn--active{background:#ffffff26;border-color:#fff6}.overlay{z-index:100;-webkit-backdrop-filter:blur(20px);background:#000000d9;flex-direction:column;justify-content:center;align-items:center;transition:opacity .4s;display:flex;position:fixed;inset:0}.overlay--hidden{opacity:0;pointer-events:none}.overlay__spinner{border:3px solid #ffffff1a;border-top-color:#fff;border-radius:50%;width:48px;height:48px;animation:.8s linear infinite spin}.overlay__text{color:#fffc;text-align:center;margin-top:20px;font-size:16px;font-weight:400;line-height:1.5}.overlay__subtext{color:#fff6;margin-top:8px;font-size:13px}@keyframes spin{to{transform:rotate(360deg)}}.idle-screen{z-index:50;opacity:0;pointer-events:none;background:radial-gradient(#0009 0%,#000000e6 100%);flex-direction:column;justify-content:center;align-items:center;transition:opacity .8s;display:flex;position:fixed;inset:0}.idle-screen--visible{opacity:1;pointer-events:auto}.idle-screen__title{color:#fff;letter-spacing:2px;text-align:center;font-size:36px;font-weight:300;animation:3s ease-in-out infinite pulse-text}.idle-screen__subtitle{color:#ffffff80;letter-spacing:1px;margin-top:12px;font-size:16px;font-weight:300}@keyframes pulse-text{0%,to{opacity:.7}50%{opacity:1}}.no-face-prompt{z-index:10;-webkit-backdrop-filter:blur(12px);color:#fffc;opacity:0;pointer-events:none;background:#00000080;border:1px solid #ffffff1a;border-radius:12px;padding:12px 24px;font-size:14px;transition:opacity .4s;position:fixed;top:24px;left:50%;transform:translate(-50%)}.no-face-prompt--visible{opacity:1}.slider-panel{z-index:10;position:fixed;top:80px;left:16px}.slider-panel__toggle{-webkit-backdrop-filter:blur(12px);color:#fff;cursor:pointer;-webkit-tap-highlight-color:transparent;background:#00000080;border:1px solid #ffffff26;border-radius:8px;padding:8px 14px;font-size:12px}.slider-panel__body{-webkit-backdrop-filter:blur(12px);background:#000000b3;border:1px solid #ffffff1a;border-radius:8px;min-width:220px;margin-top:6px;padding:12px 16px}.slider-panel__body label{color:#fffc;margin-bottom:10px;font-size:12px;display:block}.slider-panel__body label span{float:right;color:#ffffff80;font-family:monospace}.slider-panel__body input[type=range]{accent-color:#e06080;width:100%;margin-top:4px;display:block}
