*{margin:0;padding:0;box-sizing:border-box}:root{--bg-primary:#0a0f1a;--bg-secondary:#111827;--bg-tertiary:#1e293b;--surface:#1f2937;--border:hsla(0,0%,100%,.1);--text-primary:#f8fafc;--text-secondary:#94a3b8;--text-muted:#64748b;--accent:#3b82f6;--accent-hover:#2563eb;--success:#22c55e;--warning:#f59e0b;--danger:#ef4444;--purple:#8b5cf6;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--shadow-sm:0 2px 8px rgba(0,0,0,.2);--shadow-md:0 8px 24px rgba(0,0,0,.3);--shadow-lg:0 16px 48px rgba(0,0,0,.4)}body,html{height:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Inter,sans-serif;background:var(--bg-primary);color:var(--text-primary);line-height:1.5;-webkit-font-smoothing:antialiased}button{cursor:pointer}button,input,textarea{font-family:inherit}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 18px;border-radius:var(--radius-sm);font-size:14px;font-weight:600;border:none;transition:all .2s ease}.btn-primary{background:linear-gradient(135deg,var(--accent),var(--accent-hover));color:#fff;box-shadow:0 4px 12px rgba(59,130,246,.3)}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 6px 20px rgba(59,130,246,.4)}.btn-secondary{background:var(--surface);color:var(--text-secondary);border:1px solid var(--border)}.btn-secondary:hover{background:var(--bg-tertiary);color:var(--text-primary)}.btn-success{background:linear-gradient(135deg,var(--success),#16a34a);color:#fff}.btn-danger{background:var(--danger);color:#fff}.btn-lg{padding:14px 28px;font-size:16px}.btn:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.btn-primary:disabled{background:var(--bg-tertiary);color:var(--text-muted);box-shadow:none}.btn-primary:disabled:hover{transform:none;box-shadow:none}.btn-secondary:disabled{border-color:var(--border)}.btn-danger:disabled,.btn-secondary:disabled,.btn-secondary:disabled:hover{background:var(--bg-tertiary);color:var(--text-muted)}.input{padding:10px 14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);font-size:14px;transition:border-color .2s}.input:focus{outline:none;border-color:var(--accent)}.input::placeholder{color:var(--text-muted)}.app{display:flex;flex-direction:column;height:100vh;overflow:hidden}.app__header{justify-content:space-between;padding:12px 20px;background:var(--bg-secondary);border-bottom:1px solid var(--border);gap:20px}.app__header,.app__logo{display:flex;align-items:center}.app__logo{gap:10px;text-decoration:none}.app__logo-icon{font-size:24px}.app__logo-text{font-size:18px;font-weight:700;background:linear-gradient(135deg,var(--accent),var(--purple));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.app__header-center{flex:1 1;max-width:400px}.app__title-input{width:100%;padding:10px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);font-size:15px;font-weight:600;text-align:center}.app__title-input:focus{outline:none;border-color:var(--accent)}.app__header-actions{display:flex;align-items:center;gap:12px}.app__view-toggle{display:flex;background:var(--surface);border-radius:var(--radius-sm);overflow:hidden;border:1px solid var(--border)}.app__view-btn{padding:8px 16px;background:transparent;border:none;color:var(--text-secondary);font-size:13px;font-weight:600;transition:all .15s}.app__view-btn:hover{color:var(--text-primary)}.app__view-btn--active{background:var(--accent);color:#fff}.app__body{flex:1 1;display:flex;overflow:hidden}.app__sidebar{width:280px;display:flex;flex-direction:column;background:var(--bg-secondary);border-right:1px solid var(--border)}.app__sidebar--right{border-right:none;border-left:1px solid var(--border)}.app__sidebar-header{padding:16px;border-bottom:1px solid var(--border)}.app__sidebar-header h3{margin:0;font-size:14px;font-weight:700;color:var(--text-primary);text-transform:uppercase;letter-spacing:.05em}.app__sidebar-content{flex:1 1;overflow-y:auto;padding:12px}.app__sidebar-footer{padding:12px;border-top:1px solid var(--border)}.app__sidebar-empty{padding:24px 16px;text-align:center}.app__sidebar-empty p{font-size:13px;color:var(--text-muted)}.app__main{background:var(--bg-primary)}.app__canvas-container,.app__main{flex:1 1;display:flex;flex-direction:column;overflow:hidden}.app__canvas-toolbar{display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--bg-secondary);border-bottom:1px solid var(--border)}.app__canvas-toolbar .input{flex:1 1;max-width:300px}.app__canvas{flex:1 1;position:relative;display:flex;align-items:center;justify-content:center;padding:24px;overflow:auto}.app__canvas--placing,.app__canvas--placing .app__canvas-image-wrapper{cursor:crosshair}.app__canvas--dragging{cursor:-webkit-grabbing;cursor:grabbing}.app__canvas-image-wrapper{position:relative;display:inline-block;line-height:0}.app__canvas-image{display:block;max-width:100%;max-height:70vh;border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none}.app__canvas-hotspot{position:absolute;background:radial-gradient(circle,rgba(59,130,246,.5) 0,rgba(59,130,246,.2) 70%);border:3px solid var(--accent);border-radius:50%;cursor:-webkit-grab;cursor:grab;transition:background .15s,border-color .15s,box-shadow .15s;box-shadow:0 0 15px rgba(59,130,246,.4)}.app__canvas-hotspot:hover{background:rgba(59,130,246,.4)}.app__canvas-hotspot--selected{border-color:var(--purple);box-shadow:0 0 0 3px rgba(139,92,246,.3)}.app__canvas-hotspot--dragging{cursor:-webkit-grabbing;cursor:grabbing;opacity:.8;z-index:100}.app__canvas-hotspot-badge{position:absolute;top:-8px;right:-8px;width:18px;height:18px;display:flex;align-items:center;justify-content:center;background:var(--purple);border-radius:50%;font-size:10px;color:#fff}.app__canvas-hotspot--circle{border-radius:50%}.app__canvas-hotspot--rectangle{border-radius:4px}.app__canvas-hotspot--arrow{background:transparent;border:none;box-shadow:none}.app__canvas-hotspot--arrow:hover{background:transparent}.app__canvas-hotspot-arrow-svg{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.app__canvas-hotspot-arrow-path{fill:rgba(59,130,246,.5);stroke:var(--accent);stroke-width:3;transition:all .15s ease;filter:drop-shadow(0 0 8px rgba(59,130,246,.4))}.app__canvas-hotspot--arrow:hover .app__canvas-hotspot-arrow-path{fill:rgba(59,130,246,.6)}.app__canvas-hotspot--arrow.app__canvas-hotspot--selected .app__canvas-hotspot-arrow-path{stroke:var(--purple);filter:drop-shadow(0 0 6px rgba(139,92,246,.5))}.app__canvas-hotspot--arrow-up{transform:rotate(0deg)}.app__canvas-hotspot--arrow-right{transform:rotate(90deg)}.app__canvas-hotspot--arrow-down{transform:rotate(180deg)}.app__canvas-hotspot--arrow-left{transform:rotate(270deg)}.app__canvas-hotspot--arrow-up-right{transform:rotate(45deg)}.app__canvas-hotspot--arrow-up-left{transform:rotate(315deg)}.app__canvas-hotspot--arrow-down-right{transform:rotate(135deg)}.app__canvas-hotspot--arrow-down-left{transform:rotate(225deg)}.app__canvas-dropzone{position:absolute;inset:0;background:rgba(59,130,246,.95);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:50;animation:fade-in .2s ease}.app__canvas-dropzone-content{text-align:center;color:#fff}.app__canvas-dropzone-icon{font-size:64px;margin-bottom:16px;animation:bounce .6s ease infinite}.app__canvas-dropzone-text{font-size:18px;font-weight:600;text-shadow:0 2px 4px rgba(0,0,0,.2)}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.app__canvas-loading{position:absolute;inset:0;background:rgba(0,0,0,.6);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:60}.app__canvas-spinner{width:48px;height:48px;border:4px solid hsla(0,0%,100%,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.app__preview{flex:1 1;display:flex;align-items:center;justify-content:center;padding:32px;background:var(--bg-primary)}.app__preview>*{max-width:900px;width:100%}.app__empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;text-align:center;padding:48px}.app__empty-icon{font-size:64px;margin-bottom:16px;opacity:.5}.app__empty-state h3{margin:0 0 8px;font-size:20px;color:var(--text-primary)}.app__empty-state p{margin:0;font-size:14px;color:var(--text-muted)}.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.7);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;animation:fade-in .2s ease}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.modal{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-lg);width:90%;max-width:520px;box-shadow:var(--shadow-lg);animation:modal-slide-in .3s ease}@keyframes modal-slide-in{0%{opacity:0;transform:translateY(-20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.modal__header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--border)}.modal__header h2{margin:0;font-size:20px;font-weight:700}.modal__close{background:none;border:none;color:var(--text-muted);font-size:28px;cursor:pointer;line-height:1;padding:0;transition:color .15s}.modal__close:hover{color:var(--text-primary)}.modal__content{padding:24px}.modal__success{margin:0 0 24px;font-size:15px;color:var(--text-secondary)}.modal__field{margin-bottom:20px}.modal__field label{display:block;margin-bottom:8px;font-size:13px;font-weight:600;color:var(--text-secondary)}.modal__input-group{display:flex;gap:8px}.modal__input-group .input{flex:1 1}.modal__textarea{resize:none;font-family:monospace;font-size:12px}.modal__actions{display:flex;justify-content:flex-end;margin-top:24px;padding-top:20px;border-top:1px solid var(--border)}.section{padding:80px 24px;max-width:1200px;margin:0 auto}.section-narrow{max-width:900px}.section-title{font-size:40px;font-weight:700;text-align:center;margin-bottom:16px;background:linear-gradient(135deg,var(--accent),var(--purple));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.section-subtitle{font-size:18px;text-align:center;color:var(--text-secondary);margin-bottom:48px;line-height:1.6}@media (max-width:768px){.section{padding:60px 20px}.section-title{font-size:32px}.section-subtitle{font-size:16px}}@media (max-width:480px){.section{padding:40px 16px}.section-title{font-size:28px}.section-subtitle{font-size:14px}}