/* Values follow Figma「★ Web Lite · V1 Final」(desktop 1440×900, mobile lite 390×844). */
:root{
  --bg:#020430; --panel:rgba(28,29,37,.78); --panel-96:rgba(28,29,37,.96); --line:rgba(255,255,255,.14);
  --ink:#fff; --mute:#a6a9b1; --purple:#5c58ed; --cyan:#3ee6e0;
  --font:"Ubuntu",system-ui,-apple-system,sans-serif;
  color-scheme:dark;
}
*{box-sizing:border-box}
html,body{height:100%;margin:0}
body{background:var(--bg);color:var(--ink);font:15px/1.4 var(--font);overflow:hidden;-webkit-user-select:none;user-select:none;touch-action:none}
button{font:inherit;color:inherit;cursor:pointer;border:0;background:none;padding:0}
button:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}
svg{width:24px;height:24px;flex:none}
svg.i30{width:30px;height:30px}
svg.i36{width:36px;height:36px}
.hidden{display:none!important}
#gl,#fx,#hands{position:fixed;inset:0;width:100%;height:100%;display:block}
#fx,#hands{pointer-events:none}
#hands{z-index:40}
#fx{z-index:3}
#emoji-layer{position:fixed;inset:0;pointer-events:none;z-index:4;overflow:hidden}
#emoji-layer img{position:absolute;width:64px;height:64px;will-change:transform,opacity}
#fade{position:fixed;inset:0;background:#000;opacity:0;pointer-events:none;transition:opacity .35s;z-index:30}
#fade.on{opacity:1}
#flash{position:fixed;inset:0;background:#fff;opacity:0;pointer-events:none;z-index:60;transition:opacity .4s}
#flash.on{opacity:.85;transition:none}

/* 01 loading */
#loading{position:fixed;inset:0;z-index:50;background:rgba(2,3,15,.6);transition:opacity .8s}
#loading.done{opacity:0;pointer-events:none}
.logo-big{position:absolute;left:50%;top:calc(50% - 110px);width:460px;max-width:70vw;transform:translateX(-50%)}
.bar{position:absolute;left:50%;top:calc(50% + 20px);width:480px;max-width:70vw;height:6px;transform:translateX(-50%);border-radius:3px;background:rgba(255,255,255,.15);overflow:hidden}
.bar i{display:block;height:100%;width:0;background:var(--purple);transition:width .2s}
#load-text{position:absolute;left:0;right:0;top:calc(50% + 48px);margin:0;text-align:center;color:var(--mute);font-size:18px}

/* shared controls */
.pill,.round{display:inline-flex;align-items:center;gap:10px;background:var(--panel);border:1px solid var(--line);border-radius:24px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.pill{padding:12px 16px;font-weight:500;font-size:15px}
.pill.small{padding:10px 14px;font-size:14px}
.round{width:48px;height:48px;justify-content:center}
.pill.primary,.round.primary{background:var(--purple);border-color:var(--purple)}
.pill.ghost{background:transparent;border-color:rgba(255,255,255,.4)}
.pill:hover,.round:hover{border-color:rgba(255,255,255,.4)}
.btn{display:inline-flex;align-items:center;justify-content:center;padding:12px 24px;border-radius:10px;font-weight:500;font-size:16px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.25)}
.btn.primary{background:var(--purple);border-color:var(--purple)}
.btn{transition:background .15s,border-color .15s}
.btn.primary:hover{background:#7470f2;border-color:#7470f2}  /* e.g. Copy link */
.btn.primary:active{background:#4b47d6;border-color:#4b47d6}
.btn.wide{width:100%}
.row{display:flex;gap:12px;align-items:center}
.hand-hover{outline:2px solid var(--cyan)!important;outline-offset:2px}

/* HUD (component HUD/Desktop) */
.hud{position:fixed;inset:0;pointer-events:none;z-index:10;transition:opacity .6s}
.hud>*{pointer-events:auto}
.hud.fade{opacity:0}
.hud-logo{position:absolute;left:32px;top:36px;width:168px}
.hud-logo img{display:block;width:100%}
.top-right{position:absolute;right:32px;top:28px;display:flex;gap:12px;align-items:center}
.toggle .switch{width:36px;height:20px;border-radius:10px;background:rgba(166,169,177,.45);position:relative;transition:background .2s}
.toggle .switch b{position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:#fff;transition:left .2s,background .2s}
.toggle[aria-pressed="true"]{background:rgba(92,88,237,.95);border-color:var(--purple)}
.toggle[aria-pressed="true"] .switch{background:#fff}
.toggle[aria-pressed="true"] .switch b{left:19px;background:var(--purple)}
.toggle.busy{opacity:.7}
.round.selected{background:#fff;color:#1c1d25}
[aria-pressed="false"]>.on,[aria-pressed="true"]>.off{display:none}
.dock{position:absolute;left:32px;bottom:32px;display:flex;gap:6px;padding:8px;background:var(--panel);border:1px solid var(--line);border-radius:28px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.dock-btn{display:flex;align-items:center;gap:8px;padding:10px 16px;border-radius:20px;font-weight:500;color:var(--mute);transition:color .15s}
.dock-btn:hover,.dock-btn.selected{color:#fff}  /* selected = white */
.dock-btn.pulse{animation:pulse 1.4s ease-in-out infinite}
@keyframes pulse{0%,100%{box-shadow:0 0 0 0 rgba(92,88,237,0)}50%{box-shadow:0 0 0 6px rgba(92,88,237,.55)}}
.dock-btn.v{flex-direction:column;gap:4px;padding:8px 16px;font-size:12px;color:#fff}
.dock-btn img{width:24px;height:24px}

/* 05 emoji bar */
.emoji-bar{position:fixed;left:50%;bottom:114px;transform:translateX(-50%);display:flex;align-items:center;gap:8px;height:84px;padding:0 18px;background:#22242b;border-radius:1000px;z-index:11}
.emoji-bar button{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;transition:transform .12s}
.emoji-bar button:hover{transform:scale(1.15)}
.emoji-bar img{width:52px;height:52px}

/* prompt (component Prompt) */
.prompt{position:fixed;z-index:12;padding:12px 22px;border-radius:30px;background:rgba(28,29,37,.85);border:1px solid rgba(255,255,255,.15);font-size:18px;pointer-events:none;white-space:nowrap}
.prompt.follow{transform:translate(18px,22px)}
.prompt.fixed{left:50%;bottom:48px;transform:translateX(-50%)}

/* controls legend */
.legend{position:fixed;right:32px;bottom:32px;z-index:12;min-width:190px;padding:10px 18px;background:var(--panel);border:1px solid var(--line);border-radius:16px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);pointer-events:none}
.legend .l-hand{display:none}.legend.hand .l-hand{display:block}.legend.hand .l-mouse{display:none}
.l-row{display:flex;justify-content:space-between;align-items:center;gap:24px;height:36px;font-size:16px;font-weight:500}
.l-row b{font-weight:400;color:var(--mute)}
.l-row img{width:28px;height:28px}

/* popovers */
.popover{position:fixed;z-index:20;background:var(--panel-96);border:1px solid var(--line);border-radius:16px;padding:20px 22px;box-shadow:0 12px 40px rgba(0,0,0,.4)}
.popover h3{margin:0 0 8px;font-size:19px;font-weight:700}
.popover p{margin:0 0 14px;color:var(--mute);font-size:14px;line-height:1.5}
.cam-pop{z-index:14;width:340px;top:86px;border-color:rgba(92,88,237,.8)}
.share-pop{width:380px;right:32px;top:92px;display:flex;flex-direction:column;gap:14px}
.share-pop h3{font-size:20px;margin:0}
.link-field{display:flex;gap:10px;align-items:center;padding:12px 14px;border-radius:10px;background:rgba(255,255,255,.06);color:var(--mute);font-size:15px}
.toast-pill{align-self:flex-start;padding:8px 20px;border-radius:24px;background:var(--cyan);color:#020430;font-weight:500;font-size:16px}
.help-pop{width:385px;top:99px;padding:24px 28px;border-radius:20px;border-color:rgba(255,255,255,.12)}
.help-pop h2{margin:0;font-size:26px}
.help-pop h4{margin:16px 0 6px;color:var(--purple);font-size:16px;font-weight:500}
.help-pop ul{margin:0;padding:0;list-style:none;color:var(--mute);font-size:15px;line-height:1.75}
.help-pop li::before{content:"•  "}
.help-pop .row{margin-top:20px}
.gesture-map{width:254px;right:234px;bottom:32px;padding:20px 22px;background:rgba(28,29,37,.92)}
.gesture-map h3{font-size:18px;margin:0 0 6px}
.g-row{display:flex;justify-content:space-between;align-items:center;height:48px;color:var(--mute);font-size:16px}
.g-row img{width:28px;height:28px}
.toast{position:fixed;left:50%;top:96px;transform:translateX(-50%);z-index:70;padding:12px 20px;border-radius:24px;background:var(--cyan);color:#020430;font-weight:500}

/* 06 menu (pad) — 992×612, header 80 */
.modal{position:fixed;inset:0;z-index:15;display:grid;place-items:center}
.pad{width:992px;height:612px;max-width:94vw;max-height:86vh;display:flex;flex-direction:column;overflow:hidden;border-radius:16px;box-shadow:0 20px 60px rgba(0,0,0,.35)}
.pad-head{display:flex;align-items:center;height:80px;flex:none;padding:0 40px 0 32px;background:#1c1d25}
.grow{flex:1}
.pad-icons{display:flex;gap:60px}
.icon-btn{display:grid;place-items:center;color:#fff;opacity:.9}
.icon-btn:hover,.icon-btn.selected{opacity:1;color:var(--cyan)}
.pad-body{flex:1;position:relative;background:rgba(31,31,49,.8);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.grid{position:absolute;left:61px;right:61px;top:50px;bottom:52px;display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:1fr;gap:30px}
.tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;border-radius:8px;background:#1c1d25;font-size:30px;font-weight:500;transition:transform .12s,background .12s}
.tile:hover{background:#2a2b3a;transform:translateY(-2px)}
.tile img{width:72px;height:72px}
.pad-body.soon{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;text-align:center}
.soon h2{margin:0;font-size:28px}.soon p{margin:0;color:var(--mute);font-size:16px}
.badge{padding:4px 12px;border-radius:10px;background:var(--purple);font-size:14px;font-weight:500}

/* 07 whiteboard */
.pad-body.wb{background:#efefef;backdrop-filter:none}
#wb-canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none;cursor:none}
/* the current marker follows the mouse / hand on the board; nib (top of the image) sits on the point */
.wb-pen{position:fixed;left:0;top:0;width:36px;height:56px;pointer-events:none;z-index:41;transform-origin:50% 0;filter:drop-shadow(0 3px 4px rgba(0,0,0,.3))}
.marker{padding:0;margin:0 -16px;box-sizing:content-box;border-left:16px solid transparent;border-right:16px solid transparent}
.wb-ur{position:absolute;left:20px;top:20px;display:flex;gap:16px}
.wb-zoom{position:absolute;right:20px;top:20px;display:flex;flex-direction:column;gap:16px}
.wb-tool{width:40px;height:40px;border-radius:8px;background:#fff;color:#1c1d25;display:grid;place-items:center;box-shadow:0 1px 2px rgba(0,0,0,.12)}
.wb-tool:disabled{color:#c4c4c4;cursor:default}
.wb-bar{position:absolute;left:50%;bottom:22px;transform:translateX(-50%);height:80px;border-radius:100px;background:#e6e6e6;display:flex;align-items:flex-end;padding:0 50px}
.markers{display:flex;gap:36px;height:80px;align-items:flex-end}
.marker{position:relative;width:36px;height:56px;display:block}
.marker img{position:relative;z-index:1;width:36px;height:56px;display:block;transition:transform .12s}
.marker.on::before{content:"";position:absolute;left:-14px;bottom:0;width:64px;height:69px;background:#fff;border-radius:8px 8px 0 0;border:1.5px solid var(--purple);border-bottom:0}
.marker.on img{transform:translateY(-8px)}

/* 06c camera (inside pad) */
.pad-body.cam{display:block}
#cam-preview{position:absolute;left:20px;top:20px;width:850px;height:calc(100% - 40px);border-radius:8px;background:#000}
.shutter{position:absolute;right:30px;top:50%;width:72px;height:72px;margin-top:-36px;border-radius:50%;background:#fff;display:grid;place-items:center}
.shutter b{width:60px;height:60px;border-radius:50%;background:#d9d9d9;border:2px solid #fff;box-sizing:border-box}
.shutter:active{transform:scale(.94)}

/* 06b game */
.game-bar{position:fixed;left:40px;top:100px;z-index:11}
.exit-pill{display:inline-flex;align-items:center;height:63px;padding:0 28px;border-radius:100px;background:rgba(28,29,37,.85);border:1px solid rgba(255,255,255,.2);font-size:32px;font-weight:500}

/* 06d photo result */
.photo-result{position:fixed;inset:0;z-index:16;display:grid;place-items:center;background:rgba(2,3,15,.85)}
.photo-card{position:relative;width:860px;max-width:92vw;display:flex;flex-direction:column;gap:20px}
.photo-card>img{width:100%;aspect-ratio:860/484;object-fit:cover;border-radius:14px;background:#000}
.close-44{position:absolute;right:-44px;top:-44px;width:44px;height:44px;border-radius:22px;background:rgba(28,29,37,.8);display:grid;place-items:center}
.photo-row{display:flex;justify-content:space-between;align-items:center;gap:16px}
.photo-row .btn{width:140px;height:44px;padding:0}
.photo-row .row{gap:16px}
.link-card{display:flex;gap:12px;align-items:center;padding:8px 16px;border-radius:12px;background:rgba(28,29,37,.85);max-width:392px}
.link-card>img{width:61px;height:32px;border-radius:6px;object-fit:cover;background:#000}
.link-card div{display:flex;flex-direction:column;gap:2px;font-size:14px;font-weight:500}
.link-card span{color:var(--mute);font-size:12px;font-weight:400}

/* Mobile lite (component HUD/Mobile lite) */
.hud-m{position:fixed;inset:0;pointer-events:none;z-index:10}
.hud-m>*{pointer-events:auto}
/* Same bar and menu as sph3re.ai: phone = full-width bar and 440px panel; tablet = 437px capsule and 600px panel. */
.m-nav{position:absolute;left:12px;right:12px;top:10px;height:64px;display:flex;align-items:center;justify-content:space-between;padding:0 8px 0 26px;border-radius:999px;background:linear-gradient(rgba(0,0,0,.88),rgba(0,0,0,.77));box-shadow:inset 0 0 0 .5px rgba(134,224,253,.3);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px)}
.m-logo{display:block;flex:none}
.m-logo img{display:block;width:143px;height:22px}
.m-menu{display:flex;align-items:center;gap:10px;height:49px;padding:0 18px;border:1px solid rgba(134,224,253,.2);border-radius:999px;background:rgba(14,14,14,.2);color:#ebf2f2;font:400 16px/22px var(--font);cursor:pointer}
.m-bars{position:relative;display:block;width:16px;height:8px}
.m-bars i{position:absolute;left:0;top:3px;width:16px;height:2px;border-radius:1px;background:currentColor}
.m-bars i:first-child{left:15%;width:70%;top:0}
.m-bars i:last-child{left:15%;width:70%;top:6px}
.m-x{position:relative;display:block;width:16px;height:10px}
.m-x i{position:absolute;left:3px;top:4px;width:10px;height:2px;background:currentColor;transform:rotate(45deg)}
.m-x i:last-child{transform:rotate(-45deg)}
.m-contact{display:none}
.m-panel{position:fixed;inset:max(10px,env(safe-area-inset-top)) auto auto 50%;transform:translateX(-50%);box-sizing:border-box;width:calc(100vw - 24px);max-width:440px;height:620px;max-height:calc(100dvh - 20px);margin:0;padding:12px 12px 16px;border:0;border-radius:28px;overflow:hidden auto;overscroll-behavior:contain;touch-action:pan-y;background:linear-gradient(rgba(0,0,0,.96),rgba(0,0,0,.92));box-shadow:inset 0 0 0 .5px rgba(134,224,253,.3);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);color:#f2f0eb;font-family:var(--font);text-align:left;pointer-events:auto}
.m-panel:not([open]){display:none}
.hud-m:has(.m-panel[open])>.m-nav{visibility:hidden}
.m-panel::backdrop{background:transparent}
.m-panel-head{display:flex;align-items:center;justify-content:space-between;height:49px;margin:-4px -4px 12px 0;padding-left:14px}
.m-panel-body{display:flex;flex-direction:column;gap:12px}
.m-panel-pages{display:flex;flex-direction:column;gap:2px;margin:0;padding:0;list-style:none}
.m-panel-item{display:flex;align-items:center;gap:8px;box-sizing:border-box;width:100%;height:66px;padding:12px 16px 12px 20px;border:0;border-radius:24px;background:transparent;color:#f2f0eb;font:400 38px/42px var(--font);letter-spacing:-2px;text-align:left;text-decoration:none;white-space:nowrap}
.m-panel-item:disabled{color:#f2f0eb;opacity:1}
.m-panel-badge{flex:none;padding:2px 5px;border:.5px solid rgba(255,255,255,.25);border-radius:8px;background:rgba(255,255,255,.15);color:rgba(255,255,255,.85);font-size:12px;line-height:14px;letter-spacing:0;text-align:center}
.m-panel-caption{display:none}
.m-panel-card{position:relative;flex:none;height:141px;border-radius:16px;overflow:hidden;background:linear-gradient(171.4deg,#61e9fa 0%,#4f4cc3 88.14%);box-shadow:inset 0 0 0 1px rgba(242,240,235,.1)}
.m-panel-bust{position:absolute;right:-74px;top:-68px;width:178px;height:267px;max-width:none;object-fit:cover;pointer-events:none}
.m-panel-copy{position:absolute;inset:0 0 auto 0;display:flex;flex-direction:column;gap:12px;padding:14px 12px 20px}
.m-panel-copy p{margin:0;font-size:10px;line-height:12px;color:#fff}
.m-panel-copy h2{margin:0;font-size:20px;font-weight:400;line-height:24px;letter-spacing:-1px;color:#f2f0eb}
.m-panel-copy a{color:#f2f0eb;font-size:17px;line-height:22px;text-decoration:none}
.m-panel-copy a span{color:#86e0fd;font-size:13.6px}
.m-panel-socials{display:flex;align-items:center;justify-content:space-between;margin:4px 0 0;padding:0 8px;list-style:none}
.m-panel-socials a{display:block;color:#f2f0eb;text-decoration:none}
.m-panel-social-icon{display:block;width:24px;height:24px}
.m-panel-social-text{display:none}
.m-panel a:focus-visible,.m-panel button:focus-visible,.m-nav a:focus-visible,.m-nav button:focus-visible{outline:2px solid #86e0fd;outline-offset:3px}
html[data-nav-input="pointer"] :is(.m-panel,.m-nav) :focus-visible{outline:none}
@media(min-width:640px){
  .m-nav{left:50%;right:auto;top:20px;width:437px;transform:translateX(-50%);justify-content:flex-start;padding:0}
  .m-nav .m-logo{margin-left:26px}
  .m-nav .m-menu{margin-left:22px}
  .m-contact{display:flex;align-items:center;gap:8px;margin-left:18px;height:47px;padding:0 20px;border-radius:999px;background:#86e0fd;color:#0e0e0e;font:400 16px/22px var(--font);text-decoration:none;white-space:nowrap}
  .m-panel{inset:20px auto auto 50%;width:600px;max-width:calc(100vw - 40px);height:764px;max-height:calc(100dvh - 40px);padding:12px 12px 11px}
  .m-panel-head{margin:0 0 24px;padding-left:12px}
  .m-panel-body{gap:16px;padding-inline:12px}
  .m-panel-pages{margin-bottom:16px}
  .m-panel-item{gap:16px;height:78px;font-size:48px;line-height:54px}
  .m-panel-badge{display:none}
  .m-panel-caption{display:block;margin-left:auto;color:#b1b7b7;font-size:15px;line-height:21px;letter-spacing:0;text-transform:uppercase}
  .m-panel-card{height:200px;margin-right:0}
  .m-panel-bust{left:330px;right:auto;top:-62px;width:217px;height:325px}
  .m-panel-copy{padding:20px}
  .m-panel-copy p{font-size:12px;line-height:14px}
  .m-panel-copy h2{font-size:28px;line-height:32px}
  .m-panel-socials{justify-content:flex-end;gap:30px;margin:0;padding:0}
  .m-panel-social-icon{display:none}
  .m-panel-social-text{display:block;font-size:15px;line-height:21px}
  .m-panel-social-text span{font-size:12px}
}
.m-banner{position:absolute;left:16px;top:96px;padding:8px 14px;border-radius:16px;background:var(--panel);border:1px solid var(--line);color:var(--mute);font-size:12px;font-weight:500;max-width:calc(100% - 96px)}
.m-right{position:absolute;right:16px;top:96px;display:flex;flex-direction:column;gap:10px}
.m-dock{left:16px;bottom:calc(24px + env(safe-area-inset-bottom))}
body.mobile .emoji-bar{bottom:114px;left:16px;right:16px;transform:none;height:auto;justify-content:space-between;padding:8px 10px;border-radius:30px}
body.mobile .emoji-bar button{width:40px;height:40px}
body.mobile .emoji-bar img{width:34px;height:34px}
body.mobile .prompt.fixed{bottom:auto;top:52%}
body.mobile .photo-card{width:326px;gap:20px;align-items:center}
body.mobile .photo-card>img{aspect-ratio:326/430;border:5px solid #fff}
body.mobile .photo-row{flex-direction:column-reverse;gap:24px}
body.mobile .link-card{max-width:358px}
body.mobile .close-44{right:-6px;top:-60px}
.pad-close{margin-left:48px}
.pad-icons.hidden+.pad-close{margin-left:0}

/* hand look-around zones (left / right edge) */
.edge{position:fixed;top:20%;bottom:20%;width:10%;pointer-events:none;z-index:5;opacity:0;transition:opacity .2s}
.edge.l{left:0;background:linear-gradient(90deg,rgba(62,230,224,.28),transparent)}
.edge.r{right:0;background:linear-gradient(270deg,rgba(62,230,224,.28),transparent)}
.edge.on{opacity:1}

/* self-view window (hand control on) — draggable by its bar */
.pip{position:fixed;right:32px;top:92px;width:240px;z-index:9;border-radius:16px;overflow:hidden;background:var(--panel-96);border:1px solid var(--line);box-shadow:0 10px 30px rgba(0,0,0,.35)}
.pip-view{position:relative;aspect-ratio:4/3;transform:scaleX(-1);background:#000}
.pip-view video,.pip-view canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.pip-bar{display:flex;align-items:center;justify-content:space-between;gap:8px;height:34px;padding:0 6px 0 12px;font-size:13px;color:var(--mute);cursor:grab}
.pip-bar.good #pip-hint{color:var(--cyan)}
#pip-min{width:26px;height:26px;border-radius:8px;font-size:18px;line-height:1;color:#fff}
#pip-min:hover{background:rgba(255,255,255,.1)}
.pip.min .pip-view{display:none}
