.graffiti-post{cursor:default}.graffiti-post.is-owner{touch-action:none;cursor:grab}.graffiti-post.is-highlighted{animation:.35s ease-in-out 8 alternate post-flash}@keyframes post-flash{0%{filter:none;opacity:1}to{filter:drop-shadow(0 0 16px #fffb00)drop-shadow(0 0 32px #fffb00)drop-shadow(0 0 64px #fffb00);opacity:.3}}.graffiti-text{pointer-events:auto;padding:2px 4px}.post-controls{pointer-events:auto;gap:4px;display:flex}.ctrl-btn{cursor:pointer;color:#fff;border:none;border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;font-size:16px;line-height:1;transition:transform .15s;display:flex}.ctrl-btn:hover{transform:scale(1.15)}.edit-btn{background:#3b82f6d9}.delete-btn{background:#ef4444d9}.moveable-line{background:#ffffff80!important}.moveable-control{background:#fff!important;border:1px solid #0006!important;border-radius:50%!important}.moveable-rotation-control{background:#fff!important;border:1px solid #0006!important}.modal-backdrop[data-v-7d040639]{z-index:1000;background:#0009;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal-content[data-v-7d040639]{color:#eee;background:#1a1a2e;border:1px solid #ffffff1a;border-radius:16px;width:100%;max-width:440px;max-height:90vh;padding:24px;font-family:system-ui,-apple-system,sans-serif;overflow-y:auto}.drawer-mode[data-v-7d040639]{border-radius:16px 16px 0 0;max-width:100%;max-height:85vh;position:fixed;bottom:0;left:0;right:0}h2[data-v-7d040639]{color:#fff;margin:0 0 16px;font-family:system-ui,-apple-system,sans-serif;font-size:1.4rem}.form-group[data-v-7d040639]{margin-bottom:14px}.form-group label[data-v-7d040639]{text-transform:uppercase;letter-spacing:.05em;color:#aaa;margin-bottom:6px;font-size:.8rem;display:block}.char-count[data-v-7d040639]{color:#888;font-size:.75rem}.text-input[data-v-7d040639]{color:#fff;background:#ffffff14;border:1px solid #ffffff26;border-radius:8px;outline:none;width:100%;padding:10px 12px;font-size:1rem;transition:border-color .2s}.text-input[data-v-7d040639]:focus{border-color:#fff6}.color-swatches[data-v-7d040639]{flex-wrap:wrap;gap:8px;display:flex}.swatch[data-v-7d040639]{cursor:pointer;border:2px solid #0000;border-radius:50%;width:32px;height:32px;transition:transform .15s,border-color .15s}.swatch.active[data-v-7d040639]{border-color:#fff;transform:scale(1.2)}.font-options[data-v-7d040639]{flex-direction:column;gap:6px;display:flex}.font-btn[data-v-7d040639]{color:#ddd;cursor:pointer;text-align:left;background:#ffffff0f;border:1px solid #ffffff1a;border-radius:8px;padding:8px 12px;font-size:1rem;transition:background .15s,border-color .15s}.font-btn.active[data-v-7d040639]{background:#ffffff26;border-color:#fff6}.size-slider[data-v-7d040639]{accent-color:#f44;width:100%}.preview-box[data-v-7d040639]{background:#ffffff0d;border-radius:8px;justify-content:center;align-items:center;min-height:60px;margin-bottom:16px;padding:16px;display:flex;overflow:hidden}.preview-text[data-v-7d040639]{transition:all .2s}.error-msg[data-v-7d040639]{color:#f66;background:#ff323226;border:1px solid #ff323266;border-radius:8px;margin-bottom:12px;padding:10px 14px;font-size:.9rem}.form-actions[data-v-7d040639]{justify-content:flex-end;gap:10px;display:flex}.btn[data-v-7d040639]{cursor:pointer;border:none;border-radius:8px;padding:10px 20px;font-size:.95rem;font-weight:600;transition:opacity .15s}.btn[data-v-7d040639]:disabled{opacity:.4;cursor:not-allowed}.btn-cancel[data-v-7d040639]{color:#ccc;background:#ffffff1a}.btn-spray[data-v-7d040639]{color:#fff;background:#f44}.btn-spray[data-v-7d040639]:hover:not(:disabled){background:#f22}.spinner[data-v-7d040639]{vertical-align:middle;border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:14px;height:14px;margin-right:6px;animation:.6s linear infinite spin-7d040639;display:inline-block}@keyframes spin-7d040639{to{transform:rotate(360deg)}}.scroll-indicator{z-index:900;cursor:pointer;background:#00000080;height:8px;position:fixed;top:0;left:0;right:0}.scroll-thumb{cursor:grab;background:#f44;border-radius:4px;height:100%;position:absolute}.scroll-thumb:active{cursor:grabbing}.wall-viewport{background:#111;width:100vw;height:100dvh;overflow:auto}.wall-container{aspect-ratio:1920/1080;background-image:url(/assets/wall_texture.webp);background-repeat:repeat-x;background-size:auto 100%;min-width:100vw;height:100dvh;min-height:600px;position:relative}.wall-overlay{mix-blend-mode:multiply;width:100%;height:52%;position:absolute;top:30%;left:0%}.add-btn{color:#fff;cursor:pointer;z-index:500;white-space:nowrap;background:#f44;border:none;border-radius:12px;padding:12px 28px;font-family:system-ui,-apple-system,sans-serif;font-size:1rem;font-weight:600;transition:background .15s;position:fixed;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 4px 16px #0006}.add-btn:hover{background:#f22}@media (width<=600px){.add-btn{padding:10px 22px;font-size:.9rem;bottom:16px}}.info-btn{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);color:#fff;cursor:pointer;z-index:500;background:#00000080;border:none;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;font-family:Georgia,serif;font-size:18px;font-style:italic;font-weight:700;transition:background .15s;display:flex;position:fixed;top:16px;right:16px}.info-btn:hover{background:#000000b3}.info-backdrop{z-index:1000;background:#0009;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.info-modal{color:#eee;background:#1a1a2e;border:1px solid #ffffff1a;border-radius:16px;width:100%;max-width:480px;max-height:85vh;padding:28px;font-family:system-ui,-apple-system,sans-serif;position:relative;overflow-y:auto}.info-modal h2{color:#fff;margin:0 0 14px;font-size:1.4rem}.info-modal p{color:#ccc;margin:0 0 12px;font-size:.95rem;line-height:1.6}.info-modal p:last-child{margin-bottom:0}.info-close{color:#888;cursor:pointer;background:0 0;border:none;font-size:24px;line-height:1;position:absolute;top:12px;right:16px}.info-close:hover{color:#fff}*{box-sizing:border-box;margin:0;padding:0}html,body,#app{width:100%;height:100%;overflow:hidden}
