*{margin:0;padding:0;box-sizing:border-box}:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;line-height:1.5;font-weight:400;color:#213547;background-color:#fff;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-width:320px;min-height:100vh;overflow:hidden;background-color:#fff}#root{width:100vw;height:100vh}.context-menu{position:fixed;background-color:#fff;border:1px solid #ddd;border-radius:4px;box-shadow:0 2px 8px #00000026;z-index:1000;min-width:150px;padding:4px 0}.context-menu-item{padding:8px 16px;cursor:pointer;font-size:14px;color:#333;transition:background-color .15s;-webkit-user-select:none;user-select:none}.context-menu-item:hover{background-color:#f5f5f5}.context-menu-item:active{background-color:#e0e0e0}.context-menu-header{padding:8px 16px;font-size:13px;font-weight:600;color:#666;border-bottom:1px solid #e0e0e0;-webkit-user-select:none;user-select:none}.context-menu-item-danger{color:#f44336}.context-menu-item-danger:hover{background-color:#ffebee}.point-tooltip{position:absolute;background:#000000d9;color:#fff;padding:6px 10px;border-radius:4px;font-size:14px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;white-space:nowrap;pointer-events:none;box-shadow:0 2px 8px #0000004d;z-index:1000;animation:fadeIn .15s ease-out}.point-tooltip--above{transform:translate(-50%,calc(-100% - 12px))}.point-tooltip--below{transform:translate(-50%,12px)}@keyframes fadeIn{0%{opacity:0;transform:translate(-50%,calc(-100% - 8px))}to{opacity:1;transform:translate(-50%,calc(-100% - 12px))}}.point-tooltip--below{animation:fadeInBelow .15s ease-out}@keyframes fadeInBelow{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%,12px)}}.image-canvas-container{width:100%;height:100%;display:flex;align-items:flex-start;padding:20px}.image-canvas{position:relative;width:100%;height:100%;overflow:hidden;box-shadow:0 2px 8px #0000001a}.image-loading-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#ffffffbf;color:#555;font-size:16px;z-index:5;pointer-events:all}.image-wrapper{position:relative;display:inline-block;width:fit-content;height:fit-content}.image-canvas img{display:block;max-width:100%;max-height:calc(100vh - 40px);-webkit-user-select:none;user-select:none;pointer-events:none}.points-overlay{position:absolute;top:0;left:0;pointer-events:none}.point{fill:#4caf5099;stroke:#4caf50;stroke-width:2;transition:all .2s}.point.hovered{fill:#4caf50e6;stroke:#2e7d32;stroke-width:3}.point-center{fill:#fff;pointer-events:none}.no-image{display:flex;align-items:center;justify-content:center;height:100%;color:#999;font-size:18px;text-align:center;padding:40px}.point-panel{width:300px;height:100vh;background-color:#fff;border-left:1px solid #ddd;display:flex;flex-direction:column;overflow:hidden}.panel-section{padding:16px;border-bottom:1px solid #e0e0e0}.panel-section h3{margin:0 0 12px;font-size:16px;color:#333;font-weight:600}.file-input{width:100%;padding:8px;border:1px solid #ddd;border-radius:4px;font-size:14px;cursor:pointer}.coordinates{display:flex;gap:16px;font-family:monospace;font-size:14px;color:#666}.no-coords{color:#999;font-size:14px}.points-list-section{flex:1;display:flex;flex-direction:column;overflow:hidden;border-bottom:none}.points-list{flex:1;overflow-y:auto;margin-top:8px}.point-item{padding:12px;border:1px solid #e0e0e0;border-radius:4px;margin-bottom:8px;transition:all .2s}.point-item.hovered{background-color:#e8f5e9;border-color:#4caf50}.point-info{margin-bottom:8px}.point-label{font-weight:500;color:#333;margin-bottom:2px;word-wrap:break-word}.point-type{font-size:11px;color:#666;font-style:italic;margin-bottom:4px}.point-coords{font-family:monospace;font-size:12px;color:#666}.point-actions{display:flex;gap:8px}.point-actions button{flex:1;padding:6px 12px;border:none;border-radius:4px;font-size:12px;cursor:pointer;transition:background-color .2s}.edit-btn{background-color:#2196f3;color:#fff}.edit-btn:hover{background-color:#1976d2}.delete-btn{background-color:#f44336;color:#fff}.delete-btn:hover{background-color:#d32f2f}.no-points{color:#999;font-size:14px;text-align:center;padding:20px}.dialog-overlay{position:fixed;inset:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.dialog{background:#fff;border-radius:8px;padding:24px;min-width:400px;box-shadow:0 4px 6px #0000001a}.dialog h2{margin:0 0 16px;font-size:20px;color:#333}.dialog p{margin:0 0 24px;color:#666}.form-field{margin-bottom:16px}.form-field label{display:block;margin-bottom:6px;font-size:14px;font-weight:500;color:#333}.dialog input[type=text],.dialog select{width:100%;padding:10px;border:1px solid #ddd;border-radius:4px;font-size:14px;box-sizing:border-box;font-family:inherit}.dialog input[type=text]:focus,.dialog select:focus{outline:none;border-color:#4caf50}.dialog select{cursor:pointer;background-color:#fff}.dialog-buttons{display:flex;gap:8px;justify-content:flex-end}.dialog-buttons button{padding:8px 16px;border:none;border-radius:4px;font-size:14px;cursor:pointer;transition:background-color .2s}.dialog-buttons button[type=button]{background-color:#f5f5f5;color:#333}.dialog-buttons button[type=button]:hover{background-color:#e0e0e0}.dialog-buttons button[type=submit],.dialog-buttons button:not([type]){background-color:#4caf50;color:#fff}.dialog-buttons button[type=submit]:hover,.dialog-buttons button:not([type]):hover{background-color:#45a049}.dialog-buttons button[type=submit]:disabled{background-color:#ccc;cursor:not-allowed}.dialog-buttons button.danger{background-color:#f44336;color:#fff}.dialog-buttons button.danger:hover{background-color:#d32f2f}.form-helper{margin-top:6px;font-size:12px;color:#777}.app{display:flex;height:100vh;width:100vw;overflow:hidden}.main-content{flex:1;display:flex;align-items:center;justify-content:center;background-color:#f5f5f5;overflow:hidden}.splash-screen{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:24px;text-align:center;background:radial-gradient(circle at top,#f4f0de,#e8f0fa 55%,#dae7f3)}.splash-screen h1{margin:0;font-size:2rem;letter-spacing:.03em;color:#1f2a3d}.splash-screen p{margin:0;color:#334155;max-width:680px}.enter-button{margin-top:8px;padding:10px 16px;border:none;border-radius:8px;background:#1b4dff;color:#fff;font-size:1rem;cursor:pointer}.enter-button:hover{background:#163fce}.login-overlay{position:fixed;inset:0;background:#0a0a0a99;display:flex;align-items:center;justify-content:center;z-index:999}.login-dialog{width:min(420px,90vw);background:#fff;border-radius:10px;padding:24px;box-shadow:0 20px 60px #00000040;display:flex;flex-direction:column;gap:12px}.login-dialog h2{margin:0;font-size:1.4rem}.login-dialog p{margin:0;color:#444}.login-dialog form{display:flex;flex-direction:column;gap:10px}.login-dialog input{padding:10px 12px;border:1px solid #ccc;border-radius:6px;font-size:1rem}.login-dialog button{padding:10px 12px;background:#1b4dff;color:#fff;border:none;border-radius:6px;font-size:1rem;cursor:pointer}.login-dialog button:disabled{opacity:.6;cursor:not-allowed}.login-status{font-size:.95rem;padding:8px 10px;border-radius:6px}.login-status.success{background:#e8f5e9;color:#1b5e20}.login-status.error{background:#ffebee;color:#b71c1c}
