html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:"";content:none}table{border-collapse:collapse;border-spacing:0}*{box-sizing:border-box}body{font-family:Pretendard Variable,Pretendard,-apple-system,BlinkMacSystemFont,system-ui,Roboto,Helvetica Neue,Segoe UI,Apple SD Gothic Neo,Noto Sans KR,Malgun Gothic,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,sans-serif}.annotation{background-color:#e6eff5;border-radius:50%;width:4px;height:4px;position:relative}.annotation.active{background-color:#d95c3b}.hidden-annotation{display:none}.annotationMarker{position:absolute;top:12px;left:50%;display:flex;text-align:center;align-items:center;justify-content:center;border-radius:8px;color:#000c;background:#e6eff5;width:93px;height:36px;gap:4px;z-index:100;line-height:12px;padding:8px 4px;font-family:Pretendard;font-size:14px;font-style:normal;font-weight:600;line-height:16px;transform:translate(-50%)}.annotationMarker.active{background-color:#d95c3b;color:#fff}.annotationMarkerAnchor{position:absolute;top:-7px;left:50%;transform:translate(-50%);width:0;height:0;border-left:8px solid transparent;border-right:8px solid transparent;border-bottom:8px solid #e6eff5}.annotationMarkerAnchor.active{border-bottom:8px solid #d95c3b}.annotationDescription{position:absolute;top:12px;left:50%;transform:translate(-50%);font-size:12px;width:265px;height:205px;background:#fafafa;border-radius:19px;padding:0 10.5px;display:block;z-index:90}.annotationDescription_title{padding:13px 0 8px;text-transform:uppercase;color:var(--secondary);border-bottom:1px solid #d9d9d9;font-size:12px;font-style:normal;font-weight:600;line-height:12px;text-align:right}.annotationDescription_content{padding-top:10px;padding-left:6px;font-size:14px;font-style:normal;font-weight:400;line-height:114.286%;word-break:break-all}.annotationDescription_content>div:nth-child(1){font-weight:700}.annotationDescription_content>div:nth-child(2){height:107px;overflow:scroll;text-overflow:ellipsis;font-size:12px}.annotationDescription_bottom{position:absolute;bottom:20px;width:calc(100% - 29px);display:flex;justify-content:space-between;font-size:12px;font-style:normal;font-weight:600;line-height:12px;color:var(--secondary);padding-left:6px}.annotationDescription_bottom__left{color:var(--secondary)}.distance-label.active{background-color:#d95c3b!important;color:#fff!important}.arrow-dot{width:10px;height:10px;border-radius:9999px;box-shadow:0 0 0 2px #00000040}.arrow-dot.green{background:#16a34a}.arrow-dot.blue{background:#2563eb}.arrow-line,.arrow-line-only .arrow-line{position:absolute;left:6px;top:50%;height:2px;translate:0 -50%;background:#fff;outline:1px solid rgba(0,0,0,.25);pointer-events:none}.arrow-annotation,.arrow-line-only{position:relative;white-space:nowrap;pointer-events:auto}.polygon-overlay-container{position:relative;width:100%;height:100%;overflow:visible;display:flex;flex-direction:column}.base-image{width:100%;height:100%;object-fit:contain;display:block;margin:0;padding:0}.polygon-svg{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:2}.loading-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:#000000b3;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff;z-index:3}.loading-spinner{width:40px;height:40px;border:4px solid rgba(255,255,255,.3);border-top:4px solid white;border-radius:50%;animation:spin 1s linear infinite;margin-bottom:1rem}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.error-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:#f00c;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;z-index:3}.no-polygons-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:#00000080;display:flex;align-items:center;justify-content:center;color:#fff;font-style:italic;z-index:3}.polygon-svg rect:hover{stroke-width:2px;stroke:red;transform:scale(1.2)}.react-image-viewer-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background:transparent;z-index:1000;animation:fadeIn .3s ease-out;pointer-events:none}.react-image-viewer-container{position:absolute;top:0;left:0;width:95vw;height:95vh;max-width:1400px;max-height:900px;background:#1a1a1a;border-radius:12px;display:flex;flex-direction:column;overflow:visible;box-shadow:0 20px 60px #0000004d;pointer-events:auto}.image-container{flex:1;background:#1a1a1a;position:relative;overflow:auto;display:flex;align-items:flex-start;justify-content:flex-start;border-radius:0 0 12px 12px}.fixed-vertex-overlay-container,.fixed-vertex-svg{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:200}.resize-handle{position:absolute;background:transparent;z-index:10;pointer-events:auto;transition:background .2s ease;border:none}.resize-handle:hover{background:#667eea4d}.resize-handle-nw{top:0;left:0;width:8px;height:8px;cursor:nw-resize}.resize-handle-ne{top:0;right:0;width:8px;height:8px;cursor:ne-resize}.resize-handle-sw{bottom:0;left:0;width:8px;height:8px;cursor:sw-resize}.resize-handle-se{bottom:0;right:0;width:8px;height:8px;cursor:se-resize}.resize-handle-n{top:0;left:8px;right:8px;height:4px;cursor:n-resize}.resize-handle-s{bottom:0;left:8px;right:8px;height:4px;cursor:s-resize}.resize-handle-w{top:8px;bottom:8px;left:0;width:4px;cursor:w-resize}.resize-handle-e{top:8px;bottom:8px;right:0;width:4px;cursor:e-resize}.transform-wrapper{width:100%!important;height:100%!important;background:#1a1a1a!important}.transform-content{width:100%!important;height:100%!important;display:flex!important;align-items:flex-start!important;justify-content:flex-start!important}.caption-bar{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;background:#2a2a2a;border-bottom:1px solid #3a3a3a;border-radius:12px 12px 0 0;cursor:move;-webkit-user-select:none;user-select:none;transition:background .2s ease;overflow:visible}.caption-bar:hover{background:#333}.caption-bar:active{background:#3a3a3a}.caption-title{flex:1;display:flex;align-items:center}.image-name{color:#fff;font-size:.875rem;font-weight:500;margin-left:.5rem}.caption-controls{display:flex;gap:.5rem;align-items:center;overflow:visible}.caption-button{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:transparent;color:#ccc;border:none;border-radius:4px;cursor:pointer;transition:all .2s ease}.caption-button:hover{background:#444;color:#fff}.caption-button svg{width:16px;height:16px}.color-picker-container{position:relative}.color-palette{position:absolute;top:calc(100% + .5rem);right:0;display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem;padding:.75rem;background:#2a2a2a;border:1px solid #3a3a3a;border-radius:8px;box-shadow:0 4px 12px #00000080;z-index:1000;animation:fadeIn .2s ease-out}.color-option{width:32px;height:32px;border:2px solid #3a3a3a;border-radius:6px;cursor:pointer;transition:all .2s ease;position:relative}.color-option:hover{transform:scale(1.1);border-color:#667eea;box-shadow:0 2px 8px #667eea4d}.color-option.selected{border-color:#667eea;border-width:3px;box-shadow:0 0 0 2px #667eea33}.color-option.selected:after{content:"✓";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#fff;font-size:16px;font-weight:700;text-shadow:0 0 3px rgba(0,0,0,.8)}.thickness-palette{position:absolute;top:calc(100% + .5rem);right:0;display:flex;flex-direction:column;gap:.375rem;padding:.75rem;background:#2a2a2a;border:1px solid #3a3a3a;border-radius:8px;box-shadow:0 4px 12px #00000080;z-index:1000;animation:fadeIn .2s ease-out;min-width:120px}.thickness-option{width:100%;height:24px;background:transparent;border:2px solid transparent;border-radius:4px;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center;padding:0 .5rem}.thickness-option:hover{background:#667eea1a;border-color:#667eea}.thickness-option.selected{background:#667eea33;border-color:#667eea}.thickness-line{width:100%;border-radius:2px;transition:all .2s ease}.size-palette{position:absolute;top:calc(100% + .5rem);right:0;display:flex;flex-direction:column;gap:.375rem;padding:.75rem;background:#2a2a2a;border:1px solid #3a3a3a;border-radius:8px;box-shadow:0 4px 12px #00000080;z-index:1000;animation:fadeIn .2s ease-out;min-width:80px}.size-option{width:100%;height:28px;background:#3a3a3a;border:2px solid #4a4a4a;border-radius:6px;cursor:pointer;transition:all .2s ease;color:#fff;font-size:.875rem;font-weight:600;display:flex;align-items:center;justify-content:center}.size-option:hover{transform:scale(1.05);border-color:#667eea;background:#4a4a4a;box-shadow:0 2px 8px #667eea4d}.size-option.selected{border-color:#667eea;border-width:3px;background:#667eea;box-shadow:0 0 0 2px #667eea33}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideIn{0%{opacity:0;transform:scale(.9) translateY(20px)}to{opacity:1;transform:scale(1) translateY(0)}}@media (max-width: 768px){.react-image-viewer-container{width:98vw;height:98vh;max-height:none}.caption-bar{padding:.5rem .75rem}.image-name{font-size:.8rem}.caption-button{width:28px;height:28px}.caption-button svg{width:14px;height:14px}.color-palette{grid-template-columns:repeat(3,1fr)}.color-option{width:28px;height:28px}}@media (max-width: 480px){.caption-bar{padding:.5rem}.caption-controls{gap:.25rem}.caption-button{width:24px;height:24px}.caption-button svg{width:12px;height:12px}.color-palette{grid-template-columns:repeat(3,1fr);padding:.5rem;gap:.375rem}.color-option{width:24px;height:24px}.color-option.selected:after{font-size:12px}}
