.vision-board-container{position:fixed;inset:0;background:transparent;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:grab}.vision-board-container.dragging{cursor:grabbing}.dot-grid{position:absolute;inset:0;pointer-events:none;opacity:.15;background-image:radial-gradient(#10b981 1px,transparent 1px);background-size:60px 60px}.canvas-wrapper{position:absolute;inset:0;will-change:transform;transition:transform .85s cubic-bezier(.19,1,.22,1)}.canvas-wrapper.teleporting{transition:transform .85s cubic-bezier(.19,1,.22,1)}.review-card{position:absolute;width:340px;padding:28px;border-radius:2rem;border:2px solid rgba(255,255,255,.8);box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;transition:all .7s cubic-bezier(.34,1.56,.64,1);cursor:default;transform-origin:center center}.review-card.clickable{cursor:pointer}.review-card:hover{box-shadow:0 25px 50px -12px #00000040;transform:scale(1.03)}.review-card.targeted{border-color:#10b981;box-shadow:0 0 60px #10b98166;transform:scale(1.15);z-index:100}.review-header{display:flex;align-items:center;gap:16px;margin-bottom:20px}.review-avatar{width:48px;height:48px;border-radius:1rem;background:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;color:#1f2937;font-size:18px;box-shadow:0 1px 2px #0000000d;border:1px solid rgba(0,0,0,.05);flex-shrink:0}.review-author-info{flex:1}.review-author-name{font-weight:800;color:#111827;font-size:16px;line-height:1.2;margin-bottom:4px}.review-handle{font-size:10px;color:#10b981;font-weight:900;text-transform:uppercase;letter-spacing:.15em}.review-text{color:#1f2937;line-height:1.6;font-size:14px;font-weight:500;margin-bottom:24px}.review-footer{display:flex;align-items:center;justify-content:space-between}.review-stars{display:flex;gap:2px}.review-stars svg{width:14px;height:14px;fill:#fbbf24;color:#fbbf24}.review-badge{display:flex;align-items:center;gap:6px;padding:4px 12px;background:#ffffff80;border-radius:9999px;border:1px solid rgba(0,0,0,.05);font-size:9px;font-weight:900;text-transform:uppercase;color:#6b7280}.review-badge svg{width:12px;height:12px}.review-card.bg-blue-50{background:#eff6ff}.review-card.bg-rose-50{background:#fff1f2}.review-card.bg-purple-50{background:#faf5ff}.review-card.bg-amber-50{background:#fffbeb}.review-card.bg-emerald-50{background:#ecfdf5}.review-card.bg-indigo-50{background:#eef2ff}.review-card.bg-orange-50{background:#fff7ed}.review-card.bg-pink-50{background:#fdf2f8}.page-header{position:absolute;top:32px;left:32px;pointer-events:none;z-index:50}.header-card{background:#fff;padding:20px;border-radius:1.5rem;box-shadow:0 25px 50px -12px #00000040;border:1px solid #e2e8f0;pointer-events:auto;display:flex;align-items:center;gap:16px}.header-icon{background:linear-gradient(135deg,#10b981,#06b6d4);padding:10px;border-radius:.75rem;color:#fff;box-shadow:0 10px 15px -3px #10b9814d}.header-icon svg{width:20px;height:20px}.header-text h1{font-weight:900;color:#0f172a;font-size:18px;letter-spacing:-.02em;margin:0}.header-text p{font-size:10px;color:#94a3b8;font-weight:800;text-transform:uppercase;letter-spacing:.2em;margin:0}.leave-review-btn{background:#fff;color:#10b981;padding:12px 20px;border-radius:9999px;font-size:14px;font-weight:800;border:2px solid #10b981;box-shadow:0 10px 15px -3px #10b98133;pointer-events:auto;cursor:pointer;transition:all .2s ease;text-decoration:none;display:inline-flex;align-items:center;gap:8px;margin-top:12px}.leave-review-btn .heart{display:inline-block;position:relative;width:1em;text-align:center}.leave-review-btn .heart-unfilled{opacity:1;transition:opacity .2s ease}.leave-review-btn .heart-filled{opacity:0;position:absolute;left:0;top:0;transition:opacity .2s ease}.leave-review-btn:hover{background:#10b981;color:#fff;transform:translateY(-2px);box-shadow:0 15px 20px -5px #10b9814d}.leave-review-btn:hover .heart-unfilled{opacity:0}.leave-review-btn:hover .heart-filled{opacity:1}.leave-review-btn:active{transform:scale(.95)}.coordinates{position:absolute;bottom:32px;left:32px;pointer-events:none;z-index:50}.coordinates-box{background:#fffc;backdrop-filter:blur(8px);padding:8px 16px;border-radius:9999px;border:1px solid #e2e8f0;font-size:10px;font-family:monospace;color:#64748b;box-shadow:0 1px 2px #0000000d}.random-btn{position:absolute;bottom:40px;right:40px;z-index:50;pointer-events:auto}.random-btn button{display:flex;align-items:center;gap:16px;padding:24px 40px 24px 32px;border-radius:2rem;font-weight:900;color:#fff;border:none;box-shadow:0 30px 60px -12px #10b98166;transition:all .3s ease;cursor:pointer;font-size:18px;letter-spacing:-.02em}.random-btn button:not(.teleporting){background:#10b981}.random-btn button:not(.teleporting):hover{background:#059669;transform:translateY(-8px)}.random-btn button:active{transform:scale(.9)}.random-btn button.teleporting{background:#64748b;cursor:wait}.random-btn-icon{position:relative}.random-btn-icon svg{width:24px;height:24px;transition:transform .7s ease}.random-btn:hover .random-btn-icon svg:not(.spinning){transform:rotate(180deg)}.random-btn-icon svg.spinning{animation:spin 1s linear infinite}.random-btn-ping{position:absolute;top:-4px;right:-4px;width:10px;height:10px;background:#fb7185;border-radius:50%;border:2px solid #10b981;animation:ping 2s cubic-bezier(0,0,.2,1) infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes ping{75%,to{transform:scale(2);opacity:0}}.instructions{position:absolute;bottom:160px;left:50%;transform:translate(-50%);pointer-events:none;display:flex;flex-direction:column;align-items:center;gap:16px;opacity:0;transition:opacity .5s ease;z-index:100}.instructions.visible{opacity:1;animation:pulseInstructions 2s ease-in-out infinite}.instructions-box{background:#fffffff2;backdrop-filter:blur(12px);border:2px solid #10b981;border-radius:1.5rem;padding:20px 32px;box-shadow:0 20px 40px -12px #10b9814d,0 0 0 1px #10b9811a;display:flex;align-items:center;gap:12px}.instructions-icon{width:24px;height:24px;color:#10b981;flex-shrink:0}.instructions-line{width:2px;height:60px;background:linear-gradient(to bottom,transparent,#10b981)}.instructions-text{font-size:14px;font-weight:900;color:#10b981;text-transform:uppercase;letter-spacing:.15em;white-space:nowrap}@keyframes pulseInstructions{0%,to{transform:translate(-50%) scale(1)}50%{transform:translate(-50%) scale(1.05)}}@media(max-width:768px){.review-card{width:300px;padding:24px}.page-header{top:16px;left:16px;right:16px}.header-card{padding:16px}.random-btn{bottom:16px;right:16px}.random-btn button{padding:20px 32px 20px 24px;font-size:16px}.coordinates{bottom:16px;left:16px}.leave-review-btn{font-size:12px;padding:10px 16px;margin-top:8px}}
