:root{color:#172033;font-synthesis:none;text-rendering:optimizelegibility;--blue:#255ee8;--blue-hover:#194fcf;--ink:#172033;--line:#e3e7ed;background:#f2f4f7;font-family:Pretendard,Inter,Noto Sans KR,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#root{min-width:320px;min-height:100%;margin:0}body{min-height:100vh}button,input,textarea{font:inherit}button,a,[role=button]{-webkit-tap-highlight-color:transparent}.sr-only{clip:rect(0, 0, 0, 0);clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.app-shell{background:#fff;border:1px solid #dfe3e8;border-radius:22px;grid-template-columns:minmax(350px,410px) minmax(540px,1fr);width:min(1480px,100vw - 40px);min-height:min(820px,100vh - 40px);margin:20px auto;display:grid;overflow:hidden;box-shadow:0 22px 70px #1018281a}.upload-pane{border-right:1px solid var(--line);background:#fff;min-width:0;padding:28px 30px 34px;overflow-y:auto}.upload-content{width:100%;max-width:350px;margin:0 auto}.upload-header{margin-bottom:22px}.header-utility{justify-content:space-between;align-items:center;gap:16px;min-height:30px;margin-bottom:29px;display:flex}.wordmark{color:#101828;letter-spacing:.14em;font-size:15px;font-weight:850}.language-switch{background:#f5f6f8;border:1px solid #e1e5ea;border-radius:999px;grid-template-columns:1fr 1fr;gap:2px;padding:3px;display:inline-grid}.language-switch button{color:#8a94a3;cursor:pointer;letter-spacing:.035em;background:0 0;border:0;border-radius:999px;min-width:43px;min-height:25px;padding:3px 8px;font-size:10px;font-weight:800;transition:color .14s,background .14s,box-shadow .14s}.language-switch button:hover{color:#344054}.language-switch button.is-selected{color:#172033;background:#fff;box-shadow:0 1px 4px #1018281f}.language-switch button:focus-visible,.drop-zone:focus-visible,.clarification-submit:focus-visible,.secondary-upload:focus-within,.download-button:focus-visible{outline-offset:2px;outline:3px solid #255ee838}.upload-header h1{color:#101828;letter-spacing:-.035em;margin:0;font-size:clamp(22px,1.8vw,27px);font-weight:760;line-height:1.26}.format-tip{background:#f5f8ff;border:1px solid #dbe6ff;border-radius:12px;align-items:flex-start;gap:11px;margin-bottom:14px;padding:13px 14px;display:flex}.format-tip-badge{color:#fff;background:var(--blue);letter-spacing:.05em;border-radius:5px;flex:none;margin-top:1px;padding:4px 6px;font-size:9px;font-weight:850;line-height:1}.format-tip strong{color:#1d2939;font-size:13px;font-weight:760;line-height:1.35;display:block}.format-tip p{color:#667085;margin:3px 0 0;font-size:11px;line-height:1.45}.drop-zone{text-align:center;cursor:pointer;background:#fcfcfd;border:1.5px dashed #b6bfca;border-radius:15px;flex-direction:column;justify-content:center;align-items:center;gap:7px;min-height:194px;padding:28px 20px;transition:border-color .14s,background .14s,transform .14s;display:flex;position:relative;overflow:hidden}.drop-zone:hover,.drop-zone:focus-visible{border-color:var(--blue);background:#f8faff}.drop-zone:hover{transform:translateY(-1px)}.drop-zone.is-busy{cursor:wait;opacity:.66;transform:none}.upload-icon{width:42px;height:42px;color:var(--blue);background:#edf3ff;border-radius:12px;place-items:center;margin-bottom:7px;display:grid}.upload-icon svg{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:23px;height:23px}.drop-zone>p{color:#1d2939;margin:0;font-size:14px;font-weight:720}.supported-formats{color:#8a94a3;letter-spacing:.045em;font-size:10px;font-weight:650}.drop-zone small{color:#475467;text-overflow:ellipsis;white-space:nowrap;background:#f0f2f5;border-radius:999px;max-width:100%;margin-top:8px;padding:5px 9px;font-size:10px;overflow:hidden}.error-message{color:#b42318;margin:13px 2px 0;font-size:12px;line-height:1.5}.clarification-card{background:#fff;border:1px solid #dfe4ea;border-radius:14px;gap:10px;margin-top:16px;padding:17px;display:grid;box-shadow:0 7px 22px #1018280e}.clarification-question{color:#172033;margin:0;font-size:14px;font-weight:720;line-height:1.52}.clarification-reason{color:#667085;margin:-3px 0 2px;font-size:11px;line-height:1.5}.clarification-card>label{color:#475467;margin-top:2px;font-size:11px;font-weight:720}.clarification-card textarea{resize:vertical;color:#172033;background:#fff;border:1px solid #ccd3dc;border-radius:9px;width:100%;min-height:78px;padding:10px 11px;font-size:12px;line-height:1.5;transition:border-color .14s,box-shadow .14s}.clarification-card textarea::placeholder{color:#98a2b3}.clarification-card textarea:focus{border-color:var(--blue);outline:none;box-shadow:0 0 0 3px #255ee81f}.additional-drawing{color:#98a2b3;flex-wrap:wrap;align-items:center;gap:7px;font-size:10px;display:flex}.secondary-upload{color:#344054;cursor:pointer;background:#f9fafb;border:1px solid #d0d5dd;border-radius:8px;align-items:center;min-height:31px;padding:6px 9px;font-size:11px;font-weight:720;display:inline-flex}.secondary-upload:hover{border-color:var(--blue);color:#194fcf}.secondary-upload input{clip:rect(0, 0, 0, 0);width:1px;height:1px;position:absolute;overflow:hidden}.additional-drawing small{color:#475467;text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:10px;overflow:hidden}.clarification-submit{color:#fff;background:var(--blue);cursor:pointer;border:0;border-radius:8px;justify-self:start;min-height:36px;margin-top:1px;padding:8px 13px;font-size:11px;font-weight:780;transition:background .14s,transform .14s}.clarification-submit:hover{background:var(--blue-hover);transform:translateY(-1px)}.clarification-submit:disabled{cursor:wait;opacity:.6;transform:none}.viewer-pane{background:#f4f6f8;min-width:0;min-height:700px;position:relative;overflow:hidden}.viewer-canvas{position:absolute;inset:0;overflow:hidden}.viewer-canvas canvas{display:block;width:100%!important;height:100%!important}.viewer-empty{color:#98a2b3;text-align:center;flex-direction:column;align-items:center;width:min(360px,100% - 48px);display:flex;position:absolute;inset:50% auto auto 50%;transform:translate(-50%,-50%)}.viewer-empty strong{color:#667085;margin-top:23px;font-size:14px;font-weight:680}.viewer-empty>span:last-child{margin-top:6px;font-size:11px}.empty-geometry{border:1px solid #cfd5dd;width:58px;height:58px;position:relative;transform:rotate(30deg)skew(-8deg,-8deg)}.empty-geometry:before,.empty-geometry:after{content:"";border:1px solid #d9dee5;position:absolute}.empty-geometry:before{inset:10px -12px -12px 10px}.empty-geometry:after{opacity:.55;inset:20px -22px -22px 20px}.viewer-error{z-index:4;color:#b42318;text-align:center;background:#fffffff5;border:1px solid #fecdca;border-radius:10px;width:min(360px,100% - 48px);margin:0;padding:12px 16px;position:absolute;inset:50% auto auto 50%;transform:translate(-50%,-50%)}.processing-overlay{z-index:3;-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);background:#f4f6f8d1;place-items:center;padding:28px;display:grid;position:absolute;inset:0}.processing-card{background:#fffffff0;border:1px solid #ffffffe6;border-radius:18px;width:min(560px,100%);padding:26px;box-shadow:0 18px 55px #1018281f}.processing-heading{grid-template-columns:42px minmax(0,1fr);align-items:center;gap:14px;display:grid}.processing-heading h2{color:#101828;letter-spacing:-.025em;margin:0;font-size:17px;font-weight:760;line-height:1.4}.processing-spinner{background:#edf3ff;border-radius:50%;place-items:center;width:42px;height:42px;display:grid;position:relative}.processing-spinner:before,.processing-spinner i{content:"";border-radius:50%;position:absolute}.processing-spinner:before{border:2px solid #ccdbff;border-top-color:var(--blue);animation:1.15s linear infinite spin;inset:7px}.processing-spinner i{background:var(--blue);width:6px;height:6px}.stage-route{margin-top:30px}.stage-route>span{color:#98a2b3;letter-spacing:.07em;text-transform:uppercase;margin-bottom:11px;font-size:9px;font-weight:780;display:block}.stage-route ol{grid-template-columns:repeat(3,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.stage-route li{color:#98a2b3;text-align:center;min-width:0;padding:29px 5px 0;font-size:10px;font-weight:650;transition:color .16s;position:relative}.stage-route li>span{z-index:1;color:#98a2b3;background:#fff;border:1.5px solid #d0d5dd;border-radius:50%;place-items:center;width:20px;height:20px;font-size:9px;font-weight:800;transition:color .16s,border-color .16s,background .16s;display:grid;position:absolute;top:0;left:50%;transform:translate(-50%)}.stage-route li:not(:last-child):after{content:"";background:#e4e7ec;width:calc(100% - 20px);height:1px;transition:background .16s;position:absolute;top:9px;left:calc(50% + 10px)}.stage-route li.is-active{color:#1d2939;font-weight:760}.stage-route li.is-active>span{border-color:var(--blue);color:var(--blue);background:#edf3ff;box-shadow:0 0 0 4px #255ee817}.stage-route li.is-completed{color:#475467}.stage-route li.is-completed>span{border-color:var(--blue);color:#fff;background:var(--blue)}.stage-route li.is-completed:after{background:var(--blue)}.result-badge{z-index:2;-webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px);background:#ffffffeb;border:1px solid #ffffffd6;border-radius:10px;align-items:center;gap:9px;padding:8px 11px;display:flex;position:absolute;top:24px;left:24px;box-shadow:0 6px 20px #10182817}.result-badge strong{font-size:12px;font-weight:780}.result-badge.is-verified strong{color:#087443}.result-badge.is-draft strong{color:#9a5b12}.result-badge .result-note{color:#8a4b08;border-left:1px solid #e2e6eb;padding-left:9px;font-size:9px;font-weight:720}.download-button{z-index:2;color:#fff;background:var(--blue);border-radius:10px;align-items:center;gap:8px;min-height:43px;padding:10px 15px;font-size:12px;font-weight:760;text-decoration:none;transition:background .14s,transform .14s;display:inline-flex;position:absolute;bottom:24px;right:24px;box-shadow:0 9px 24px #255ee83d}.download-button svg{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;width:16px;height:16px}.download-button:hover{background:var(--blue-hover);transform:translateY(-1px)}@keyframes spin{to{transform:rotate(360deg)}}@media (width<=900px){.app-shell{border-radius:18px;grid-template-columns:1fr;width:min(100% - 24px,700px);min-height:auto;margin:12px auto}.upload-pane{border-right:0;border-bottom:1px solid var(--line);padding:24px;overflow:visible}.upload-content{max-width:520px}.header-utility{margin-bottom:22px}.drop-zone{min-height:180px}.viewer-pane{min-height:500px}}@media (width<=520px){.app-shell{border:0;border-radius:0;width:100%;margin:0}.upload-pane{padding:21px 18px 24px}.viewer-pane{min-height:430px}.processing-overlay{padding:16px}.processing-card{padding:20px 17px}.processing-heading h2{font-size:15px}.stage-route li{font-size:9px}.result-badge{top:16px;left:16px}.download-button{bottom:16px;right:16px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important}.processing-spinner:before{animation-duration:2.5s}}.examples{margin-top:10px}.examples-label{color:#667085;margin-bottom:6px;font-size:12px;display:block}.examples-row{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.example-button{border:1px solid var(--line);color:#475467;font:inherit;cursor:pointer;background:#fff;border-radius:8px;flex-direction:column;align-items:center;gap:3px;padding:7px 4px;font-size:11px;transition:border-color .12s,color .12s,transform .12s;display:flex}.example-button:hover:not(:disabled),.example-button:focus-visible{border-color:var(--blue);color:var(--blue);transform:translateY(-1px)}.example-button:disabled{opacity:.5;cursor:not-allowed;transform:none}.example-button.is-loading{border-color:var(--blue);color:var(--blue);opacity:1}.example-thumb svg,.example-flight svg{fill:none;stroke:currentColor;stroke-width:1.4px;width:34px;height:22px}.example-flight{color:var(--blue);pointer-events:none;animation:.62s cubic-bezier(.22,.75,.3,1) both example-flight;position:absolute}@keyframes example-flight{0%{opacity:0;transform:translateY(104px)scale(.55)}60%{opacity:1}to{opacity:1;transform:translateY(0)scale(1.35)}}@media (prefers-reduced-motion:reduce){.example-button:hover:not(:disabled),.example-button:focus-visible{transform:none}.example-flight{animation:none}}
