{"roots":["50:7"],"nodeById":{"50:8":{"type":"FRAME","id":"50:8","name":"Desktop","absoluteBoundingBox":{"x":21132.0,"y":100.0,"width":1920.0,"height":1080.0},"isolatedAbsoluteRenderBounds":{"x":21132.0,"y":100.0,"width":1920.0,"height":1080.0},"relativeTransform":[[1.0,0.0,64.0],[0.0,1.0,100.0]],"size":{"x":1920.0,"y":1080.0},"fills":[{"blendMode":"NORMAL","type":"SOLID","color":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"visible":true,"opacity":1.0}],"strokeAlign":"INSIDE","strokes":[],"accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[],"clipsContent":true,"overflowDirection":"VERTICAL_SCROLLING","isBreakpointFrame":true,"children":["50:10"]},"50:10":{"type":"FRAME","id":"50:10","name":"Frame 28","absoluteBoundingBox":{"x":21132.0,"y":100.0,"width":1920.0,"height":1080.0},"isolatedAbsoluteRenderBounds":{"x":21132.0,"y":100.0,"width":1920.0,"height":1080.0},"relativeTransform":[[1.0,0.0,0.0],[0.0,1.0,0.0]],"size":{"x":1920.0,"y":1080.0},"fills":[],"constraintValues":{"left":{"pixelOffset":0.0,"sizeFraction":0.0},"top":{"pixelOffset":0.0,"sizeFraction":0.0}},"strokeAlign":"INSIDE","strokes":[],"accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[],"clipsContent":true,"overflowDirection":"VERTICAL_SCROLLING","layoutMode":"VERTICAL","primaryAxisSizingMode":"FIXED","strokesIncludedInLayout":true,"stackLayoutVersion":1,"children":["50:11","50:19","50:30","50:31","50:33"]},"50:15":{"type":"TEXT","id":"50:15","name":"Campaign & Event Design","absoluteBoundingBox":{"x":22235.0,"y":116.0,"width":471.0,"height":41.0},"isolatedAbsoluteRenderBounds":{"x":22236.919921875,"y":123.93465423584,"width":465.875,"height":25.4758529663086},"relativeTransform":[[1.0,0.0,1103.0],[0.0,1.0,16.0]],"size":{"x":471.0,"y":41.0},"fills":[{"blendMode":"NORMAL","type":"SOLID","color":{"r":0.0,"g":0.0,"b":0.0,"a":1.0},"visible":true,"opacity":1.0}],"strokeAlign":"OUTSIDE","strokes":[],"accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[],"characterStyleOverrides":[],"characters":"Campaign & Event Design","lineIndentations":[0],"lineTypes":["NONE"],"listStartOffsets":[],"lineStyleOverrides":[0],"lineTextDirections":null,"resolvedParagraphValues":{"0":{"listSpacing":0.0,"paragraphIndent":0.0,"paragraphSpacing":0.0}},"textAutoResize":"WIDTH_AND_HEIGHT","style":{"fontFamily":"Inter","fontPostScriptName":"Inter-Medium","fontStyle":"Medium","textCase":"UPPER","textAutoResize":"WIDTH_AND_HEIGHT","fontVariantPosition":"NORMAL","fontSize":34.0,"textAlignHorizontal":"LEFT","textAlignVertical":"TOP","letterSpacing":0.0,"letterSpacingValue":0.0,"letterSpacingUnit":"PERCENT","lineHeightPx":41.1477279663086,"lineHeightPercent":100.0,"lineHeightUnit":"INTRINSIC_%","paragraphSpacing":0,"paragraphIndent":0,"listSpacing":0,"italic":false,"textDecoration":"NONE","textDecorationSkipInk":false,"textDecorationStyle":"solid","textTruncation":"DISABLED","lineHeightPercentFontSize":100},"styleOverrideTable":{}},"50:32":{"type":"RECTANGLE","id":"50:32","name":"-ch2 1","absoluteBoundingBox":{"x":21132.0,"y":3340.0,"width":1920.0,"height":1080.0},"targetAspectRatio":{"x":1920.0,"y":1080.0},"isolatedAbsoluteRenderBounds":{"x":21132.0,"y":3340.0,"width":1920.0,"height":1080.0},"relativeTransform":[[1.0,0.0,0.0],[0.0,1.0,0.0]],"size":{"x":1920.0,"y":1080.0},"fills":[{"blendMode":"NORMAL","type":"IMAGE","scaleMode":"FILL","imageRef":"55bac7fc7c0f453b5de77a70a9f3741bdb32f66a","filters":{"temperature":-0.200000002980232},"originalImageWidth":1920,"originalImageHeight":1080,"visible":true,"opacity":1.0,"rotation":0.0}],"strokeAlign":"INSIDE","strokes":[],"accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[]},"50:20":{"type":"FRAME","id":"50:20","name":"top-labels","absoluteBoundingBox":{"x":21132.0,"y":2069.0,"width":1920.0,"height":191.0},"isolatedAbsoluteRenderBounds":{"x":21132.0,"y":2069.0,"width":1920.0,"height":191.0},"relativeTransform":[[1.0,0.0,0.0],[0.0,1.0,889.0]],"size":{"x":1920.0,"y":191.0},"fills":[],"strokeAlign":"INSIDE","layoutAlign":"STRETCH","strokes":[],"accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[],"paddingTop":16.0,"paddingRight":22.0,"paddingBottom":20.0,"paddingLeft":22.0,"layoutMode":"HORIZONTAL","counterAxisAlignItems":"MAX","primaryAxisAlignItems":"SPACE_BETWEEN","primaryAxisSizingMode":"FIXED","counterAxisSizingMode":"FIXED","strokesIncludedInLayout":true,"stackLayoutVersion":1,"children":["50:21","50:27"]},"50:29":{"type":"TEXT","id":"50:29","name":"SNS Direction · Planning ·\nGraphic Design · Editing","absoluteBoundingBox":{"x":22700.759765625,"y":2144.0,"width":329.24072265625,"height":72.0},"isolatedAbsoluteRenderBounds":{"x":22701.36328125,"y":2148.234375,"width":289.09765625,"height":63.0},"relativeTransform":[[1.0,0.0,0.0],[0.0,1.0,36.0]],"size":{"x":329.24072265625,"y":72.0},"fills":[{"blendMode":"NORMAL","type":"SOLID","color":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"visible":true,"opacity":1.0}],"strokeAlign":"OUTSIDE","strokes":[],"accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[],"characterStyleOverrides":[],"characters":"Visual System Adaptation · Editorial & Print Design ·\nGraphic Design ","lineIndentations":[0,0],"lineTypes":["NONE","NONE"],"listStartOffsets":[],"lineStyleOverrides":[0,0],"lineTextDirections":null,"resolvedParagraphValues":{"0":{"listSpacing":0.0,"paragraphIndent":0.0,"paragraphSpacing":0.0},"1":{"listSpacing":0.0,"paragraphIndent":0.0,"paragraphSpacing":0.0}},"textAutoResize":"HEIGHT","style":{"fontFamily":"Inter","fontPostScriptName":"Inter-ExtraLight","fontStyle":"Extra Light","textCase":"UPPER","textAutoResize":"HEIGHT","fontVariantPosition":"NORMAL","fontSize":20.0,"textAlignHorizontal":"LEFT","textAlignVertical":"TOP","letterSpacing":0.0,"letterSpacingValue":0.0,"letterSpacingUnit":"PERCENT","lineHeightPx":24.2045440673828,"lineHeightPercent":100.0,"lineHeightUnit":"INTRINSIC_%","paragraphSpacing":0,"paragraphIndent":0,"listSpacing":0,"italic":false,"textDecoration":"NONE","textDecorationSkipInk":false,"textDecorationStyle":"solid","textTruncation":"DISABLED","lineHeightPercentFontSize":100},"styleOverrideTable":{}},"50:23":{"type":"FRAME","id":"50:23","name":"Frame 6","absoluteBoundingBox":{"x":21154.0,"y":2144.0,"width":1356.0,"height":96.0},"isolatedAbsoluteRenderBounds":{"x":21154.0,"y":2144.0,"width":1356.0,"height":96.0},"relativeTransform":[[1.0,0.0,0.0],[0.0,1.0,36.0]],"size":{"x":1356.0,"y":96.0},"fills":[],"strokeAlign":"INSIDE","strokes":[],"accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[],"layoutMode":"HORIZONTAL","itemSpacing":12.0,"strokesIncludedInLayout":true,"stackLayoutVersion":1,"children":["50:24","50:25","50:26"]},"50:14":{"type":"TEXT","id":"50:14","name":"Save the Children — 10th Child Rights Film Festival","absoluteBoundingBox":{"x":21154.0,"y":116.0,"width":932.0,"height":41.0},"isolatedAbsoluteRenderBounds":{"x":21155.73828125,"y":123.93465423584,"width":928.701171875,"height":25.4758529663086},"relativeTransform":[[1.0,0.0,22.0],[0.0,1.0,16.0]],"size":{"x":932.0,"y":41.0},"fills":[{"blendMode":"NORMAL","type":"SOLID","color":{"r":0.0,"g":0.0,"b":0.0,"a":1.0},"visible":true,"opacity":1.0}],"strokeAlign":"OUTSIDE","strokes":[],"accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[],"characterStyleOverrides":[],"characters":"Save the Children — 10th Child Rights Film Festival","lineIndentations":[0],"lineTypes":["NONE"],"listStartOffsets":[],"lineStyleOverrides":[0],"lineTextDirections":null,"resolvedParagraphValues":{"0":{"listSpacing":0.0,"paragraphIndent":0.0,"paragraphSpacing":0.0}},"textAutoResize":"WIDTH_AND_HEIGHT","style":{"fontFamily":"Inter","fontPostScriptName":"Inter-Medium","fontStyle":"Medium","textCase":"UPPER","textAutoResize":"WIDTH_AND_HEIGHT","fontVariantPosition":"NORMAL","fontSize":34.0,"textAlignHorizontal":"LEFT","textAlignVertical":"TOP","letterSpacing":-1.02,"letterSpacingValue":-3.0,"letterSpacingUnit":"PERCENT","lineHeightPx":41.1477279663086,"lineHeightPercent":100.0,"lineHeightUnit":"INTRINSIC_%","paragraphSpacing":0,"paragraphIndent":0,"listSpacing":0,"italic":false,"textDecoration":"NONE","textDecorationSkipInk":false,"textDecorationStyle":"solid","textTruncation":"DISABLED","lineHeightPercentFontSize":100},"styleOverrideTable":{}},"50:26":{"type":"TEXT","id":"50:26","name":"매체별 특성과 콘텐츠의 전달 목적을 고려해 정보 구조와 레이아웃을 정교화하고, 다양한 접점에서 일관된 시각적 경험을 제공하는 데 중점을 두었습니다.","absoluteBoundingBox":{"x":22066.0,"y":2144.0,"width":444.0,"height":72.0},"isolatedAbsoluteRenderBounds":{"x":22066.919921875,"y":2146.6201171875,"width":430.861328125,"height":65.7998046875},"relativeTransform":[[1.0,0.0,912.0],[0.0,1.0,0.0]],"size":{"x":444.0,"y":72.0},"fills":[{"blendMode":"NORMAL","type":"SOLID","color":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"visible":true,"opacity":1.0}],"strokeAlign":"OUTSIDE","strokes":[],"accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[],"characterStyleOverrides":[],"characters":"매체별 특성과 콘텐츠의 전달 목적을 고려해 정보 구조와 레이아웃을 정교화하고, 다양한 접점에서 일관된 시각적 경험을 제공하는 데 중점을 두었습니다.","lineIndentations":[0],"lineTypes":["NONE"],"listStartOffsets":[],"lineStyleOverrides":[0],"lineTextDirections":null,"resolvedParagraphValues":{"0":{"listSpacing":0.0,"paragraphIndent":0.0,"paragraphSpacing":0.0}},"textAutoResize":"HEIGHT","fallbackFonts":[{"fontFamily":"Noto Sans KR","fontStyle":"Light"}],"style":{"fontFamily":"Inter","fontPostScriptName":"Inter-ExtraLight","fontStyle":"Extra Light","fallbackFonts":[{"fontFamily":"Noto Sans KR","fontStyle":"Light"}],"textAutoResize":"HEIGHT","fontVariantPosition":"NORMAL","fontSize":20.0,"textAlignHorizontal":"LEFT","textAlignVertical":"TOP","letterSpacing":-0.4,"letterSpacingValue":-2.0,"letterSpacingUnit":"PERCENT","lineHeightPx":24.2045440673828,"lineHeightPercent":100.0,"lineHeightUnit":"INTRINSIC_%","paragraphSpacing":0,"paragraphIndent":0,"listSpacing":0,"italic":false,"textCase":"ORIGINAL","textDecoration":"NONE","textDecorationSkipInk":false,"textDecorationStyle":"solid","textTruncation":"DISABLED","lineHeightPercentFontSize":100},"styleOverrideTable":{}},"50:7":{"type":"WEBPAGE","id":"50:7","name":"/svc","absoluteBoundingBox":{"x":21068.0,"y":0.0,"width":2048.0,"height":1244.0},"isolatedAbsoluteRenderBounds":{"x":21068.0,"y":0.0,"width":2048.0,"height":1244.0},"relativeTransform":[[1.0,0.0,21068.0],[0.0,1.0,0.0]],"size":{"x":2048.0,"y":1244.0},"fills":[{"opacity":0.298039227724075,"blendMode":"NORMAL","type":"SOLID","color":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"visible":true}],"strokeAlign":"INSIDE","strokes":[],"accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[],"children":["50:8"]},"50:30":{"type":"FRAME","id":"50:30","name":"svc03","absoluteBoundingBox":{"x":21132.0,"y":2260.0,"width":1920.0,"height":1080.0},"isolatedAbsoluteRenderBounds":{"x":21132.0,"y":2260.0,"width":1920.0,"height":1080.0},"relativeTransform":[[1.0,0.0,0.0],[0.0,1.0,2160.0]],"size":{"x":1920.0,"y":1080.0},"fills":[{"blendMode":"NORMAL","type":"IMAGE","scaleMode":"FILL","imageRef":"2e2008530742c2bf3be24a9ecde7e2721ea3d502","originalImageWidth":1920,"originalImageHeight":1080,"visible":true,"opacity":1.0,"rotation":0.0}],"strokeAlign":"INSIDE","strokes":[],"accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[],"clipsContent":true,"layoutMode":"VERTICAL","primaryAxisAlignItems":"MAX","primaryAxisSizingMode":"FIXED","counterAxisSizingMode":"FIXED","strokesIncludedInLayout":true,"stackLayoutVersion":1,"children":[]},"50:12":{"type":"FRAME","id":"50:12","name":"top-labels","absoluteBoundingBox":{"x":21132.0,"y":100.0,"width":1920.0,"height":29.0},"isolatedAbsoluteRenderBounds":{"x":21132.0,"y":100.0,"width":1920.0,"height":29.0},"relativeTransform":[[1.0,0.0,0.0],[0.0,1.0,0.0]],"size":{"x":1920.0,"y":29.0},"fills":[],"visible":false,"strokeAlign":"INSIDE","layoutAlign":"STRETCH","strokes":[],"accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[],"layoutMode":"HORIZONTAL","itemSpacing":1508.0,"counterAxisAlignItems":"CENTER","primaryAxisAlignItems":"SPACE_BETWEEN","primaryAxisSizingMode":"FIXED","strokesIncludedInLayout":true,"stackLayoutVersion":1,"children":[]},"50:24":{"type":"TEXT","id":"50:24","name":"세이브더칠드런 제10회 아동권리영화제의 캠페인 비주얼을 다양한 온·오프라인 매체와 행사 공간으로 확장한 디자인 프로젝트.","absoluteBoundingBox":{"x":21154.0,"y":2144.0,"width":444.0,"height":96.0},"isolatedAbsoluteRenderBounds":{"x":21155.0,"y":2146.4599609375,"width":434.853515625,"height":65.9599609375},"relativeTransform":[[1.0,0.0,0.0],[0.0,1.0,0.0]],"size":{"x":444.0,"y":96.0},"fills":[{"blendMode":"NORMAL","type":"SOLID","color":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"visible":true,"opacity":1.0}],"strokeAlign":"OUTSIDE","strokes":[],"accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[],"characterStyleOverrides":[],"characters":"세이브더칠드런 제10회 아동권리영화제의 캠페인 비주얼을 다양한 온·오프라인 매체와 행사 공간으로 확장한 디자인 프로젝트.\n","lineIndentations":[0,0],"lineTypes":["NONE","NONE"],"listStartOffsets":[],"lineStyleOverrides":[0,0],"lineTextDirections":null,"resolvedParagraphValues":{"0":{"listSpacing":0.0,"paragraphIndent":0.0,"paragraphSpacing":0.0},"1":{"listSpacing":0.0,"paragraphIndent":0.0,"paragraphSpacing":0.0}},"textAutoResize":"HEIGHT","fallbackFonts":[{"fontFamily":"Noto Sans KR","fontStyle":"Light"}],"style":{"fontFamily":"Inter","fontPostScriptName":"Inter-ExtraLight","fontStyle":"Extra Light","fallbackFonts":[{"fontFamily":"Noto Sans KR","fontStyle":"Light"}],"textAutoResize":"HEIGHT","fontVariantPosition":"NORMAL","fontSize":20.0,"textAlignHorizontal":"LEFT","textAlignVertical":"TOP","letterSpacing":-0.4,"letterSpacingValue":-2.0,"letterSpacingUnit":"PERCENT","lineHeightPx":24.2045440673828,"lineHeightPercent":100.0,"lineHeightUnit":"INTRINSIC_%","paragraphSpacing":0,"paragraphIndent":0,"listSpacing":0,"italic":false,"textCase":"ORIGINAL","textDecoration":"NONE","textDecorationSkipInk":false,"textDecorationStyle":"solid","textTruncation":"DISABLED","lineHeightPercentFontSize":100},"styleOverrideTable":{}},"50:19":{"type":"FRAME","id":"50:19","name":"svc02","absoluteBoundingBox":{"x":21132.0,"y":1180.0,"width":1920.0,"height":1080.0},"isolatedAbsoluteRenderBounds":{"x":21132.0,"y":1180.0,"width":1920.0,"height":1080.0},"relativeTransform":[[1.0,0.0,0.0],[0.0,1.0,1080.0]],"size":{"x":1920.0,"y":1080.0},"fills":[{"blendMode":"NORMAL","type":"IMAGE","scaleMode":"FILL","imageRef":"7f8926ad22f938b5c2ee208aca013499cd60c515","originalImageWidth":1672,"originalImageHeight":941,"visible":true,"opacity":1.0,"rotation":0.0},{"blendMode":"NORMAL","type":"GRADIENT_LINEAR","transform":[[3.85060093619632e-13,-4.12392520904541,4.12392520904541],[4.12392520904541,9.13288459958573e-17,-1.56196260452271]],"gradientStops":[{"color":{"r":0.0,"g":0.0,"b":0.0,"a":1.0},"position":0.0},{"color":{"r":0.0,"g":0.0,"b":0.0,"a":0.0},"position":1.0}],"visible":true,"opacity":1.0}],"strokeAlign":"INSIDE","strokes":[],"accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[],"clipsContent":true,"layoutMode":"VERTICAL","primaryAxisAlignItems":"MAX","primaryAxisSizingMode":"FIXED","counterAxisSizingMode":"FIXED","strokesIncludedInLayout":true,"stackLayoutVersion":1,"children":["50:20"]},"50:28":{"type":"TEXT","id":"50:28","name":"SCOPE","absoluteBoundingBox":{"x":22700.759765625,"y":2108.0,"width":329.24072265625,"height":24.0},"isolatedAbsoluteRenderBounds":{"x":22701.783203125,"y":2112.25561523438,"width":65.521484375,"height":14.98583984375},"relativeTransform":[[1.0,0.0,0.0],[0.0,1.0,0.0]],"size":{"x":329.24072265625,"y":24.0},"fills":[{"blendMode":"NORMAL","type":"SOLID","color":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"visible":true,"opacity":1.0}],"strokeAlign":"OUTSIDE","strokes":[],"accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[],"characterStyleOverrides":[],"characters":"SCOPE","lineIndentations":[0],"lineTypes":["NONE"],"listStartOffsets":[],"lineStyleOverrides":[0],"lineTextDirections":null,"resolvedParagraphValues":{"0":{"listSpacing":0.0,"paragraphIndent":0.0,"paragraphSpacing":0.0}},"textAutoResize":"HEIGHT","style":{"fontFamily":"Inter","fontPostScriptName":"Inter-Medium","fontStyle":"Medium","textAutoResize":"HEIGHT","fontVariantPosition":"NORMAL","fontSize":20.0,"textAlignHorizontal":"LEFT","textAlignVertical":"TOP","letterSpacing":0.0,"letterSpacingValue":0.0,"letterSpacingUnit":"PERCENT","lineHeightPx":24.2045440673828,"lineHeightPercent":100.0,"lineHeightUnit":"INTRINSIC_%","paragraphSpacing":0,"paragraphIndent":0,"listSpacing":0,"italic":false,"textCase":"ORIGINAL","textDecoration":"NONE","textDecorationSkipInk":false,"textDecorationStyle":"solid","textTruncation":"DISABLED","lineHeightPercentFontSize":100},"styleOverrideTable":{}},"50:16":{"type":"TEXT","id":"50:16","name":"GRAPHICS","absoluteBoundingBox":{"x":22855.0,"y":116.0,"width":175.0,"height":41.0},"isolatedAbsoluteRenderBounds":{"x":22856.919921875,"y":123.93465423584,"width":170.5546875,"height":25.4758529663086},"relativeTransform":[[1.0,0.0,1723.0],[0.0,1.0,16.0]],"size":{"x":175.0,"y":41.0},"fills":[{"blendMode":"NORMAL","type":"SOLID","color":{"r":0.0,"g":0.0,"b":0.0,"a":1.0},"visible":true,"opacity":1.0}],"strokeAlign":"OUTSIDE","strokes":[],"accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[],"characterStyleOverrides":[],"characters":"GRAPHICS","lineIndentations":[0],"lineTypes":["NONE"],"listStartOffsets":[],"lineStyleOverrides":[0],"lineTextDirections":null,"resolvedParagraphValues":{"0":{"listSpacing":0.0,"paragraphIndent":0.0,"paragraphSpacing":0.0}},"textAutoResize":"WIDTH_AND_HEIGHT","style":{"fontFamily":"Inter","fontPostScriptName":"Inter-Medium","fontStyle":"Medium","textCase":"UPPER","textAutoResize":"WIDTH_AND_HEIGHT","fontVariantPosition":"NORMAL","fontSize":34.0,"textAlignHorizontal":"LEFT","textAlignVertical":"TOP","letterSpacing":0.0,"letterSpacingValue":0.0,"letterSpacingUnit":"PERCENT","lineHeightPx":41.1477279663086,"lineHeightPercent":100.0,"lineHeightUnit":"INTRINSIC_%","paragraphSpacing":0,"paragraphIndent":0,"listSpacing":0,"italic":false,"textDecoration":"NONE","textDecorationSkipInk":false,"textDecorationStyle":"solid","textTruncation":"DISABLED","lineHeightPercentFontSize":100},"styleOverrideTable":{}},"50:21":{"type":"FRAME","id":"50:21","name":"Frame 4","absoluteBoundingBox":{"x":21154.0,"y":2108.0,"width":1356.0,"height":132.0},"isolatedAbsoluteRenderBounds":{"x":21154.0,"y":2108.0,"width":1356.0,"height":132.0},"relativeTransform":[[1.0,0.0,22.0],[0.0,1.0,39.0]],"size":{"x":1356.0,"y":132.0},"fills":[],"strokeAlign":"INSIDE","strokes":[],"accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[],"layoutMode":"VERTICAL","itemSpacing":12.0,"strokesIncludedInLayout":true,"stackLayoutVersion":1,"children":["50:22","50:23"]},"50:17":{"type":"RECTANGLE","id":"50:17","name":"image 1","absoluteBoundingBox":{"x":21132.0,"y":177.0,"width":1565.0,"height":1005.0},"targetAspectRatio":{"x":1565.0,"y":1005.0},"isolatedAbsoluteRenderBounds":{"x":21132.0,"y":177.0,"width":1565.0,"height":1005.0},"relativeTransform":[[1.0,0.0,0.0],[0.0,1.0,77.0]],"size":{"x":1565.0,"y":1005.0},"fills":[],"visible":false,"strokeAlign":"INSIDE","strokes":[],"accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[]},"50:18":{"type":"RECTANGLE","id":"50:18","name":"spank 1","absoluteBoundingBox":{"x":21132.0,"y":177.0,"width":2928.0,"height":1648.0},"targetAspectRatio":{"x":2928.0,"y":1648.0},"isolatedAbsoluteRenderBounds":{"x":21132.0,"y":177.0,"width":2928.0,"height":1648.0},"relativeTransform":[[1.0,0.0,0.0],[0.0,1.0,77.0]],"size":{"x":2928.0,"y":1648.0},"fills":[],"visible":false,"strokeAlign":"INSIDE","strokes":[],"accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[]},"50:11":{"type":"FRAME","id":"50:11","name":"svc01","absoluteBoundingBox":{"x":21132.0,"y":100.0,"width":1920.0,"height":1080.0},"isolatedAbsoluteRenderBounds":{"x":21132.0,"y":100.0,"width":1920.0,"height":1080.0},"relativeTransform":[[1.0,0.0,0.0],[0.0,1.0,0.0]],"size":{"x":1920.0,"y":1080.0},"fills":[{"blendMode":"NORMAL","type":"SOLID","color":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"visible":true,"opacity":1.0},{"blendMode":"NORMAL","type":"IMAGE","scaleMode":"STRETCH","imageRef":"9479203c9f96ce4893da306b9db4e0c75da2d011","imageTransform":[[1.0,0.0,0.0],[0.0,1.0,-0.0589225590229034]],"originalImageWidth":4000,"originalImageHeight":2250,"visible":true,"opacity":1.0,"rotation":0.0}],"strokeAlign":"INSIDE","strokes":[],"accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[],"clipsContent":true,"layoutMode":"VERTICAL","primaryAxisAlignItems":"SPACE_BETWEEN","primaryAxisSizingMode":"FIXED","counterAxisSizingMode":"FIXED","strokesIncludedInLayout":true,"stackLayoutVersion":1,"children":["50:12","50:13","50:17","50:18"]},"50:33":{"type":"FRAME","id":"50:33","name":"svc05","absoluteBoundingBox":{"x":21132.0,"y":4420.0,"width":1920.0,"height":1080.0},"isolatedAbsoluteRenderBounds":{"x":21132.0,"y":4420.0,"width":1920.0,"height":1080.0},"relativeTransform":[[1.0,0.0,0.0],[0.0,1.0,4320.0]],"size":{"x":1920.0,"y":1080.0},"fills":[{"blendMode":"NORMAL","type":"SOLID","color":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"visible":true,"opacity":1.0},{"blendMode":"NORMAL","type":"IMAGE","scaleMode":"FILL","imageRef":"f2ad36f80a00155c79c01fe01fdb2d5dcf62fefe","originalImageWidth":1920,"originalImageHeight":1080,"visible":true,"opacity":1.0,"rotation":0.0},{"blendMode":"NORMAL","type":"IMAGE","scaleMode":"FILL","imageRef":"b91266530263c9a56226d6c01c7ca70127cacd46","originalImageWidth":1920,"originalImageHeight":1080,"visible":true,"opacity":1.0,"rotation":0.0},{"blendMode":"NORMAL","type":"IMAGE","scaleMode":"FILL","imageRef":"71aaab2ebd5190db45c72da6ecdad15476a23bd6","originalImageWidth":1536,"originalImageHeight":1024,"visible":true,"opacity":1.0,"rotation":0.0}],"strokeAlign":"INSIDE","strokes":[],"accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[],"clipsContent":true,"layoutMode":"HORIZONTAL","itemSpacing":22.0,"primaryAxisAlignItems":"SPACE_BETWEEN","primaryAxisSizingMode":"FIXED","counterAxisSizingMode":"FIXED","strokesIncludedInLayout":true,"stackLayoutVersion":1,"children":["61:18"]},"50:13":{"type":"FRAME","id":"50:13","name":"top-labels","absoluteBoundingBox":{"x":21132.0,"y":100.0,"width":1920.0,"height":77.0},"isolatedAbsoluteRenderBounds":{"x":21132.0,"y":100.0,"width":1920.0,"height":77.0},"relativeTransform":[[1.0,0.0,0.0],[0.0,1.0,0.0]],"size":{"x":1920.0,"y":77.0},"fills":[],"strokeAlign":"INSIDE","layoutAlign":"STRETCH","strokes":[],"individualStrokeWeights":{"top":2.0,"right":0.0,"bottom":0.0,"left":0.0},"accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[],"paddingTop":16.0,"paddingRight":22.0,"paddingBottom":20.0,"paddingLeft":22.0,"layoutMode":"HORIZONTAL","itemSpacing":1508.0,"counterAxisAlignItems":"CENTER","primaryAxisAlignItems":"SPACE_BETWEEN","primaryAxisSizingMode":"FIXED","strokesIncludedInLayout":true,"stackLayoutVersion":1,"children":["50:14","50:15","50:16"]},"50:25":{"type":"TEXT","id":"50:25","name":"포스터, 카드뉴스, 웹 배너, 워크북, 스티커부터 행사장 배너와 전시 그래픽까지 폭넓은 디자인 결과물을 제작했습니다.","absoluteBoundingBox":{"x":21610.0,"y":2144.0,"width":444.0,"height":72.0},"isolatedAbsoluteRenderBounds":{"x":21611.0390625,"y":2146.6201171875,"width":427.451171875,"height":65.7998046875},"relativeTransform":[[1.0,0.0,456.0],[0.0,1.0,0.0]],"size":{"x":444.0,"y":72.0},"fills":[{"blendMode":"NORMAL","type":"SOLID","color":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"visible":true,"opacity":1.0}],"strokeAlign":"OUTSIDE","strokes":[],"accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[],"characterStyleOverrides":[],"characters":"포스터, 카드뉴스, 웹 배너, 워크북, 스티커부터 행사장 배너와 전시 그래픽까지 폭넓은 디자인 결과물을 제작했습니다. ","lineIndentations":[0],"lineTypes":["NONE"],"listStartOffsets":[],"lineStyleOverrides":[0],"lineTextDirections":null,"resolvedParagraphValues":{"0":{"listSpacing":0.0,"paragraphIndent":0.0,"paragraphSpacing":0.0}},"textAutoResize":"HEIGHT","fallbackFonts":[{"fontFamily":"Noto Sans KR","fontStyle":"Light"}],"style":{"fontFamily":"Inter","fontPostScriptName":"Inter-ExtraLight","fontStyle":"Extra Light","fallbackFonts":[{"fontFamily":"Noto Sans KR","fontStyle":"Light"}],"textAutoResize":"HEIGHT","fontVariantPosition":"NORMAL","fontSize":20.0,"textAlignHorizontal":"LEFT","textAlignVertical":"TOP","letterSpacing":-0.4,"letterSpacingValue":-2.0,"letterSpacingUnit":"PERCENT","lineHeightPx":24.2045440673828,"lineHeightPercent":100.0,"lineHeightUnit":"INTRINSIC_%","paragraphSpacing":0,"paragraphIndent":0,"listSpacing":0,"italic":false,"textCase":"ORIGINAL","textDecoration":"NONE","textDecorationSkipInk":false,"textDecorationStyle":"solid","textTruncation":"DISABLED","lineHeightPercentFontSize":100},"styleOverrideTable":{}},"61:18":{"type":"SVG","id":"61:18","name":"project-next","absoluteBoundingBox":{"x":22033.0010354008,"y":5320.00011767656,"width":117.951054198442,"height":117.951054198442},"isolatedAbsoluteRenderBounds":{"x":22031.939453125,"y":5377.9150390625,"width":120.07421875,"height":62.1572265625},"relativeTransform":[[-0.70710676908493,0.70710676908493,959.9765625],[-0.70710676908493,-0.70710676908493,1017.951171875]],"size":{"x":83.4039916992188,"y":83.4039916992188},"fills":[],"constraintValues":{"left":{"pixelOffset":901.001035400779,"sizeFraction":0.0},"top":{"pixelOffset":900.000117676558,"sizeFraction":0.0}},"strokeAlign":"INSIDE","layoutPositioning":"ABSOLUTE","strokes":[{"blendMode":"NORMAL","type":"SOLID","color":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"visible":true,"opacity":1.0}],"strokeWeight":3.0,"accessibleHTMLTag":"AUTO","isDecorativeImage":false,"accessibleLabel":"  Next project","ariaAttributes":{},"interactions":[{"id":{"sessionID":61,"localID":20},"event":{"interactionType":"ON_CLICK"},"actions":[{"transitionNodeID":{"sessionID":2,"localID":611},"connectionType":"INTERNAL_NODE","navigationType":"NAVIGATE","connectionURL":"/kty"}],"isDeleted":false,"stateManagementVersion":1}],"hash":"92b1563fb6fe0bcfe0ed849970ffd651eb4442ba"},"50:31":{"type":"FRAME","id":"50:31","name":"svc04","absoluteBoundingBox":{"x":21132.0,"y":3340.0,"width":1920.0,"height":1080.0},"isolatedAbsoluteRenderBounds":{"x":21132.0,"y":3340.0,"width":1920.0,"height":1080.0},"relativeTransform":[[1.0,0.0,0.0],[0.0,1.0,3240.0]],"size":{"x":1920.0,"y":1080.0},"fills":[{"blendMode":"NORMAL","type":"SOLID","color":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"visible":true,"opacity":1.0},{"blendMode":"NORMAL","type":"IMAGE","scaleMode":"FILL","imageRef":"f2ad36f80a00155c79c01fe01fdb2d5dcf62fefe","originalImageWidth":1920,"originalImageHeight":1080,"visible":true,"opacity":1.0,"rotation":0.0},{"blendMode":"NORMAL","type":"IMAGE","scaleMode":"FILL","imageRef":"b91266530263c9a56226d6c01c7ca70127cacd46","originalImageWidth":1920,"originalImageHeight":1080,"visible":true,"opacity":1.0,"rotation":0.0},{"blendMode":"NORMAL","type":"IMAGE","scaleMode":"FILL","imageRef":"71aaab2ebd5190db45c72da6ecdad15476a23bd6","originalImageWidth":1536,"originalImageHeight":1024,"visible":true,"opacity":1.0,"rotation":0.0}],"strokeAlign":"INSIDE","strokes":[],"accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[],"clipsContent":true,"layoutMode":"HORIZONTAL","itemSpacing":22.0,"primaryAxisAlignItems":"SPACE_BETWEEN","primaryAxisSizingMode":"FIXED","counterAxisSizingMode":"FIXED","strokesIncludedInLayout":true,"stackLayoutVersion":1,"children":["50:32"]},"50:22":{"type":"TEXT","id":"50:22","name":"Overview","absoluteBoundingBox":{"x":21154.0,"y":2108.0,"width":107.0,"height":24.0},"isolatedAbsoluteRenderBounds":{"x":21155.064453125,"y":2112.25561523438,"width":104.75390625,"height":14.943359375},"relativeTransform":[[1.0,0.0,0.0],[0.0,1.0,0.0]],"size":{"x":107.0,"y":24.0},"fills":[{"blendMode":"NORMAL","type":"SOLID","color":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"visible":true,"opacity":1.0}],"strokeAlign":"OUTSIDE","strokes":[],"accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[],"characterStyleOverrides":[],"characters":"Overview","lineIndentations":[0],"lineTypes":["NONE"],"listStartOffsets":[],"lineStyleOverrides":[0],"lineTextDirections":null,"resolvedParagraphValues":{"0":{"listSpacing":0.0,"paragraphIndent":0.0,"paragraphSpacing":0.0}},"textAutoResize":"HEIGHT","style":{"fontFamily":"Inter","fontPostScriptName":"Inter-SemiBold","fontStyle":"Semi Bold","textCase":"UPPER","textAutoResize":"HEIGHT","fontVariantPosition":"NORMAL","fontSize":20.0,"textAlignHorizontal":"LEFT","textAlignVertical":"TOP","letterSpacing":0.0,"letterSpacingValue":0.0,"letterSpacingUnit":"PERCENT","lineHeightPx":24.2045440673828,"lineHeightPercent":100.0,"lineHeightUnit":"INTRINSIC_%","paragraphSpacing":0,"paragraphIndent":0,"listSpacing":0,"italic":false,"textDecoration":"NONE","textDecorationSkipInk":false,"textDecorationStyle":"solid","textTruncation":"DISABLED","lineHeightPercentFontSize":100},"styleOverrideTable":{}},"50:27":{"type":"FRAME","id":"50:27","name":"Frame 5","absoluteBoundingBox":{"x":22700.759765625,"y":2108.0,"width":329.24072265625,"height":132.0},"isolatedAbsoluteRenderBounds":{"x":22700.759765625,"y":2108.0,"width":329.24072265625,"height":132.0},"relativeTransform":[[1.0,0.0,1568.75927734375],[0.0,1.0,39.0]],"size":{"x":329.24072265625,"y":132.0},"fills":[],"strokeAlign":"INSIDE","strokes":[],"accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[],"layoutMode":"VERTICAL","itemSpacing":12.0,"primaryAxisSizingMode":"FIXED","strokesIncludedInLayout":true,"stackLayoutVersion":1,"children":["50:28","50:29"]}},"assetIdToGuid":{},"guidToUrl":{"0:3":"/","25:1305":"/cj","2:181":"/as","2:611":"/kty","50:7":"/svc","28:1355":"/cv","9:5":"/vid","25:156":"/an","49:163":"/graphics","2:233":"/east","49:2455":"/contents","2:127":"/net","2:61":"/yt","2:335":"/kit"},"fonts":{"Inter:Semi Bold":{"id":"Inter_1","url":"/_woff/v2/Inter_1/Inter_1.woff2","source":1,"italic":false,"weight":600,"variationAxes":[{"tag":"wght","value":600.0,"name":"Weight"},{"tag":"slnt","value":0.0,"name":"Slant"}],"subsets":{"baseUrl":"/_woff/v2/Inter_1/","subsetMappings":[{"unicodeRange":"U+0000-00A0,U+00A2-00A9,U+00AC-00AE,U+00B0-00B7,U+00B9-00BA,U+00BC-00BE,U+00D7,U+00F7,U+2000-206F,U+2074,U+20AC,U+2122,U+2190-21BB,U+2212,U+2215,U+F8FF,U+FEFF,U+FFFD","file":"Inter_1-english.woff2"},{"unicodeRange":"U+00A1,U+00AA-00AB,U+00AF,U+00B8,U+00BB,U+00BF-00D6,U+00D8-00F6,U+00F8-00FF,U+0131,U+0152-0153,U+02B0-02FF","file":"Inter_1-rest-latin.woff2"},{"unicodeRange":"U+0100-0130,U+0132-0151,U+0154-017F","file":"Inter_1-latin-extended-a.woff2"},{"unicodeRange":"U+0180-024F","file":"Inter_1-latin-extended-b.woff2"},{"unicodeRange":"U+1E00-1EFF","file":"Inter_1-latin-extended-additional.woff2"},{"unicodeRange":"U+0250-02AF,U+0300-1DFF,U+1F00-1FFF,U+2070-2073,U+2075-20AB,U+20AD-2121,U+2123-218F,U+21BC-2211,U+2213-2214,U+2216-F8FE,U+F900-FEFE,U+FF00-FFFC,U+FFFE-FFFF","file":"Inter_1-rest.woff2"}]}},"Inter:Extra Light":{"id":"Inter_1","url":"/_woff/v2/Inter_1/Inter_1.woff2","source":1,"italic":false,"weight":200,"variationAxes":[{"tag":"wght","value":200.0,"name":"Weight"},{"tag":"slnt","value":0.0,"name":"Slant"}],"subsets":{"baseUrl":"/_woff/v2/Inter_1/","subsetMappings":[{"unicodeRange":"U+0000-00A0,U+00A2-00A9,U+00AC-00AE,U+00B0-00B7,U+00B9-00BA,U+00BC-00BE,U+00D7,U+00F7,U+2000-206F,U+2074,U+20AC,U+2122,U+2190-21BB,U+2212,U+2215,U+F8FF,U+FEFF,U+FFFD","file":"Inter_1-english.woff2"},{"unicodeRange":"U+00A1,U+00AA-00AB,U+00AF,U+00B8,U+00BB,U+00BF-00D6,U+00D8-00F6,U+00F8-00FF,U+0131,U+0152-0153,U+02B0-02FF","file":"Inter_1-rest-latin.woff2"},{"unicodeRange":"U+0100-0130,U+0132-0151,U+0154-017F","file":"Inter_1-latin-extended-a.woff2"},{"unicodeRange":"U+0180-024F","file":"Inter_1-latin-extended-b.woff2"},{"unicodeRange":"U+1E00-1EFF","file":"Inter_1-latin-extended-additional.woff2"},{"unicodeRange":"U+0250-02AF,U+0300-1DFF,U+1F00-1FFF,U+2070-2073,U+2075-20AB,U+20AD-2121,U+2123-218F,U+21BC-2211,U+2213-2214,U+2216-F8FE,U+F900-FEFE,U+FF00-FFFC,U+FFFE-FFFF","file":"Inter_1-rest.woff2"}]}},"Inter:Medium":{"id":"Inter_1","url":"/_woff/v2/Inter_1/Inter_1.woff2","source":1,"italic":false,"weight":500,"variationAxes":[{"tag":"wght","value":500.0,"name":"Weight"},{"tag":"slnt","value":0.0,"name":"Slant"}],"subsets":{"baseUrl":"/_woff/v2/Inter_1/","subsetMappings":[{"unicodeRange":"U+0000-00A0,U+00A2-00A9,U+00AC-00AE,U+00B0-00B7,U+00B9-00BA,U+00BC-00BE,U+00D7,U+00F7,U+2000-206F,U+2074,U+20AC,U+2122,U+2190-21BB,U+2212,U+2215,U+F8FF,U+FEFF,U+FFFD","file":"Inter_1-english.woff2"},{"unicodeRange":"U+00A1,U+00AA-00AB,U+00AF,U+00B8,U+00BB,U+00BF-00D6,U+00D8-00F6,U+00F8-00FF,U+0131,U+0152-0153,U+02B0-02FF","file":"Inter_1-rest-latin.woff2"},{"unicodeRange":"U+0100-0130,U+0132-0151,U+0154-017F","file":"Inter_1-latin-extended-a.woff2"},{"unicodeRange":"U+0180-024F","file":"Inter_1-latin-extended-b.woff2"},{"unicodeRange":"U+1E00-1EFF","file":"Inter_1-latin-extended-additional.woff2"},{"unicodeRange":"U+0250-02AF,U+0300-1DFF,U+1F00-1FFF,U+2070-2073,U+2075-20AB,U+20AD-2121,U+2123-218F,U+21BC-2211,U+2213-2214,U+2216-F8FE,U+F900-FEFE,U+FF00-FFFC,U+FFFE-FFFF","file":"Inter_1-rest.woff2"}]}}},"assets":{"92b1563fb6fe0bcfe0ed849970ffd651eb4442ba":{"type":"GENERATED_ASSET","url":"92b1563fb6fe0bcfe0ed849970ffd651eb4442ba.svg","size":{"x":84.9039916992188,"y":84.9039916992188},"offsets":{"left":{"value":-1.79847507228368,"unit":"PERCENT"},"right":{"value":0.0,"unit":"PERCENT"},"top":{"value":-1.79847507228368,"unit":"PERCENT"},"bottom":{"value":0.0,"unit":"PERCENT"}},"format":"SVG"},"55bac7fc7c0f453b5de77a70a9f3741bdb32f66a":{"type":"PAINT_ASSET","url":"55bac7fc7c0f453b5de77a70a9f3741bdb32f66a.png","size":{"x":1920.0,"y":1080.0}},"b91266530263c9a56226d6c01c7ca70127cacd46":{"type":"PAINT_ASSET","url":"b91266530263c9a56226d6c01c7ca70127cacd46.png","size":{"x":1920.0,"y":1080.0}},"2e2008530742c2bf3be24a9ecde7e2721ea3d502":{"type":"PAINT_ASSET","url":"2e2008530742c2bf3be24a9ecde7e2721ea3d502.png","size":{"x":1920.0,"y":1080.0}},"71aaab2ebd5190db45c72da6ecdad15476a23bd6":{"type":"PAINT_ASSET","url":"71aaab2ebd5190db45c72da6ecdad15476a23bd6.png","size":{"x":1536.0,"y":1024.0}},"7f8926ad22f938b5c2ee208aca013499cd60c515":{"type":"PAINT_ASSET","url":"7f8926ad22f938b5c2ee208aca013499cd60c515.png","size":{"x":1672.0,"y":941.0}},"f2ad36f80a00155c79c01fe01fdb2d5dcf62fefe":{"type":"PAINT_ASSET","url":"f2ad36f80a00155c79c01fe01fdb2d5dcf62fefe.png","size":{"x":1920.0,"y":1080.0}},"9479203c9f96ce4893da306b9db4e0c75da2d011":{"type":"PAINT_ASSET","url":"9479203c9f96ce4893da306b9db4e0c75da2d011.png","size":{"x":4000.0,"y":2250.0}}},"stablePathToAssetInfo":{"61:18":{"hash":"92b1563fb6fe0bcfe0ed849970ffd651eb4442ba"}},"animateRootIds":[],"siteSettings":{"scalingMode":"REFLOW","blockSearchIndexing":true,"customCodeHeadEnd":"<style id=\"portfolio-vertical-frame-snap\">\n/* Native project-frame scroll areas; design layers remain editable. */\n#container > div > div {\n  scroll-snap-type: y mandatory;\n  scroll-padding-block: 0;\n}\n#container > div > div > * {\n  scroll-snap-align: start;\n  scroll-snap-stop: always;\n}\n</style>\n\n\n<style id=\"portfolio-responsive-fit\">\nhtml, body { width: 100%; height: 100%; margin: 0; overflow: hidden !important; }\n#container { position: relative; width: 100vw; height: 100dvh; overflow: hidden; }\n#container > [data-breakpoint] {\n  position: absolute !important;\n  width: var(--portfolio-width, 1920px) !important;\n  min-width: var(--portfolio-width, 1920px) !important;\n  max-width: var(--portfolio-width, 1920px) !important;\n  height: var(--portfolio-height, 1080px) !important;\n  min-height: var(--portfolio-height, 1080px) !important;\n  max-height: var(--portfolio-height, 1080px) !important;\n  left: 50% !important; top: 50% !important;\n  transform-origin: center center;\n  transform: translate(-50%, -50%) scale(var(--portfolio-scale, 1));\n}\n[data-portfolio-next] { cursor: pointer; touch-action: manipulation; }\n[data-portfolio-next]:focus-visible { outline: 2px solid currentColor; outline-offset: 4px; }\n@media (max-aspect-ratio: 1/1) {\n  #container > [data-portfolio-home] {\n    width: 100vw !important; min-width: 100vw !important; max-width: 100vw !important;\n    height: 100dvh !important; min-height: 100dvh !important; max-height: 100dvh !important;\n    left: 0 !important; top: 0 !important; transform: none;\n  }\n  [data-portfolio-main] {\n    position: relative !important; inset: auto !important;\n    width: 100% !important; height: 100% !important; min-width: 0 !important;\n    box-sizing: border-box; display: flex !important; flex-direction: column !important;\n    align-items: stretch !important; justify-content: flex-start !important;\n    padding: 16px 12px !important; gap: 16px !important;\n  }\n  [data-portfolio-header] {\n    position: relative !important; width: 100% !important; height: 24px !important;\n    min-height: 24px !important; flex: 0 0 24px !important;\n    display: flex !important; justify-content: space-between !important;\n    align-items: center !important; gap: 8px !important;\n  }\n  [data-portfolio-header] > * {\n    width: auto !important; min-width: 0 !important; flex-shrink: 0 !important;\n    font-size: clamp(10px, 2.8vw, 16px) !important; line-height: 1.2 !important;\n  }\n  [data-portfolio-gallery] {\n    position: relative !important; width: 100% !important; min-width: 0 !important;\n    height: var(--portfolio-gallery-height) !important;\n    flex: 0 0 auto !important; align-items: flex-start !important;\n    overflow-x: auto !important; overflow-y: hidden !important;\n    overscroll-behavior-x: contain; touch-action: pan-x; scroll-snap-type: x proximity;\n  }\n  [data-portfolio-gallery] > * { zoom: var(--portfolio-tile-scale); flex-shrink: 0 !important; scroll-snap-align: start; }\n  [data-portfolio-next] {\n    position: absolute !important; left: auto !important; right: 16px !important;\n    top: 50% !important; bottom: auto !important;\n    transform: translateY(-50%) scale(.45) !important; transform-origin: right center !important;\n  }\n  #container > [data-portfolio-cv] {\n    width: 100vw !important; min-width: 100vw !important; max-width: 100vw !important;\n    height: 100dvh !important; min-height: 100dvh !important; max-height: 100dvh !important;\n    left: 0 !important; top: 0 !important; transform: none;\n  }\n  [data-portfolio-cv] > div {\n    position: relative !important; inset: auto !important; box-sizing: border-box;\n    width: 100% !important; height: 100% !important; padding: 24px 12px !important;\n    display: block !important; overflow-y: auto !important; overflow-x: hidden !important;\n    scroll-snap-type: none !important; touch-action: pan-y;\n  }\n  [data-portfolio-cv] > div > div {\n    width: 100% !important; height: auto !important; min-height: 0 !important;\n    display: flex !important; flex-direction: column !important; gap: 32px !important;\n    align-items: flex-start !important; justify-content: flex-start !important;\n  }\n  [data-portfolio-cv] > div > div > * { zoom: var(--portfolio-column-scale); flex-shrink: 0 !important; }\n}\n</style>\n<script id=\"portfolio-responsive-controls\">\n(() => {\n  const boundButtons = new WeakSet();\n  const boundGalleries = new WeakSet();\n  const pending = new WeakMap();\n  const buttonResize = new ResizeObserver(() => schedule());\n  let scheduled = false;\n  const set = (el, name, value) => el.style.setProperty(name, String(value));\n  function advance(page, direction = 1) {\n    const gallery = page.querySelector('[data-portfolio-gallery]');\n    if (!gallery) return;\n    const old = pending.get(gallery);\n    const current = old ? old.target : gallery.scrollLeft;\n    const limit = Math.max(0, gallery.scrollWidth - gallery.clientWidth);\n    const pageScale = page.getBoundingClientRect().width / page.clientWidth || 1;\n    const left = gallery.getBoundingClientRect().left;\n    const stops = [...gallery.children].map(card =>\n      (card.getBoundingClientRect().left - left) / pageScale + gallery.scrollLeft\n    );\n    let target;\n    if (direction > 0) target = current >= limit - 2 ? 0 : Math.min(limit, stops.find(x => x > current + 2) ?? limit);\n    else target = current <= 2 ? 0 : Math.max(0, [...stops].reverse().find(x => x < current - 2) ?? 0);\n    if (old) clearTimeout(old.timer);\n    const timer = setTimeout(() => pending.delete(gallery), 700);\n    pending.set(gallery, {target, timer});\n    gallery.scrollTo({left: target, behavior: matchMedia('(prefers-reduced-motion: reduce)').matches ? 'instant' : 'smooth'});\n  }\n  function fit() {\n    scheduled = false;\n    const page = document.querySelector('#container > [data-breakpoint]');\n    if (!page) return;\n    const width = Number(page.dataset.width) || 1920;\n    const height = Number(page.dataset.height) || 1080;\n    set(page, '--portfolio-width', width + 'px');\n    set(page, '--portfolio-height', height + 'px');\n    set(page, '--portfolio-scale', Math.min(1, innerWidth / width, innerHeight / height));\n    if (page.dataset.breakpointId === 'node-28_1356') {\n      page.dataset.portfolioCv = '';\n      for (const column of page.firstElementChild?.firstElementChild?.children || []) {\n        set(column, '--portfolio-column-scale', Math.min(1, (innerWidth - 24) / column.offsetWidth));\n      }\n    } else delete page.dataset.portfolioCv;\n    const arrow = page.querySelector('img[alt=\"다음 프로젝트 보기\"]');\n    if (!arrow) {\n      delete page.dataset.portfolioHome;\n      for (const el of page.querySelectorAll('[data-portfolio-main],[data-portfolio-header],[data-portfolio-gallery]')) {\n        delete el.dataset.portfolioMain;\n        delete el.dataset.portfolioHeader;\n        delete el.dataset.portfolioGallery;\n      }\n      return;\n    }\n    const main = page.firstElementChild;\n    const header = main?.firstElementChild;\n    const gallery = main?.lastElementChild;\n    if (!header || !gallery || gallery.children.length < 2) return;\n    page.dataset.portfolioHome = '';\n    main.dataset.portfolioMain = '';\n    header.dataset.portfolioHeader = '';\n    gallery.dataset.portfolioGallery = '';\n    const cards = [...gallery.children];\n    const cardWidth = Math.max(...cards.map(card => card.offsetWidth));\n    const cardHeight = Math.max(...cards.map(card => card.offsetHeight));\n    const tileScale = Math.max(.05, Math.min(1, (innerWidth - 24) / cardWidth, (innerHeight - 72) / cardHeight));\n    set(page, '--portfolio-tile-scale', tileScale);\n    set(page, '--portfolio-gallery-height', cardHeight * tileScale + 'px');\n    let button = arrow;\n    while (button.parentElement && button.parentElement !== page) button = button.parentElement;\n    button.dataset.portfolioNext = '';\n    button.setAttribute('role', 'button');\n    button.setAttribute('aria-label', '다음 프로젝트 보기');\n    button.setAttribute('tabindex', '0');\n    if (!boundButtons.has(button)) {\n      boundButtons.add(button);\n      buttonResize.observe(button);\n      button.addEventListener('click', event => { event.preventDefault(); advance(page); });\n      button.addEventListener('keydown', event => {\n        if (['Enter', ' ', 'ArrowRight', 'ArrowLeft'].includes(event.key)) {\n          event.preventDefault(); advance(page, event.key === 'ArrowLeft' ? -1 : 1);\n        }\n      });\n    }\n    let previous = page.querySelector('[data-portfolio-previous]');\n    if (!previous) {\n      previous = button.cloneNode(true);\n      delete previous.dataset.portfolioNext;\n      previous.dataset.portfolioPrevious = '';\n      previous.removeAttribute('id');\n      for (const child of previous.querySelectorAll('[id]')) child.removeAttribute('id');\n      previous.setAttribute('aria-label', '이전 프로젝트 보기');\n      for (const image of previous.querySelectorAll('img')) image.alt = '이전 프로젝트 보기';\n      page.appendChild(previous);\n      previous.addEventListener('click', event => { event.preventDefault(); advance(page, -1); });\n      previous.addEventListener('keydown', event => {\n        if (['Enter', ' ', 'ArrowLeft', 'ArrowRight'].includes(event.key)) {\n          event.preventDefault(); advance(page, event.key === 'ArrowRight' ? 1 : -1);\n        }\n      });\n      const updatePrevious = () => {\n        const visible = gallery.scrollLeft > 2;\n        previous.style.visibility = visible ? 'visible' : 'hidden';\n        previous.style.pointerEvents = visible ? 'auto' : 'none';\n        previous.setAttribute('aria-hidden', String(!visible));\n        previous.setAttribute('tabindex', visible ? '0' : '-1');\n      };\n      gallery.addEventListener('scroll', updatePrevious, {passive: true});\n      updatePrevious();\n    }\n    for (const name of ['--transform-inner-width', '--transform-inner-height']) {\n      const value = getComputedStyle(button).getPropertyValue(name);\n      if (value) previous.style.setProperty(name, value);\n    }\n    const sourceImages = button.querySelectorAll('img');\n    previous.querySelectorAll('img').forEach((image, index) => {\n      const source = sourceImages[index];\n      if (!source) return;\n      for (const name of ['src', 'srcset']) {\n        const value = source.getAttribute(name);\n        if (value && image.getAttribute(name) !== value) image.setAttribute(name, value);\n      }\n    });\n    previous.style.left = Math.max(0, page.clientWidth - button.offsetLeft - button.offsetWidth) + 'px';\n    previous.style.right = 'auto';\n    if (!boundGalleries.has(gallery)) {\n      boundGalleries.add(gallery);\n      for (const event of ['wheel', 'pointerdown', 'touchstart']) gallery.addEventListener(event, () => {\n        const old = pending.get(gallery);\n        if (old) clearTimeout(old.timer);\n        pending.delete(gallery);\n      }, {passive: true});\n    }\n  }\n  function schedule() { if (!scheduled) { scheduled = true; requestAnimationFrame(fit); } }\n  function start() {\n    fit();\n    addEventListener('resize', schedule, {passive: true});\n    new MutationObserver(schedule).observe(document.getElementById('container') || document.body, {childList: true, subtree: true, attributes: true, attributeFilter: ['src', 'srcset']});\n  }\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', start, {once: true});\n  else start();\n})();\n</script>\n\n<style id=\"portfolio-viewport-background\">\nhtml, body, #container { background: #000 !important; }\n</style>\n<style id=\"portfolio-edge-backing\">\n#container > [data-portfolio-home], #container > [data-portfolio-cv], #container > [data-breakpoint-id=\"node-0_4\"], #container > [data-breakpoint-id=\"node-28_1356\"] { background-color: #000 !important; }\n</style>\n\n\n\n\n\n<style id=\"portfolio-y2k-cursor-style\">\nhtml[data-y2k-cursor=\"on\"], html[data-y2k-cursor=\"on\"] * { cursor: none !important; }\n#portfolio-y2k-cursor, #portfolio-y2k-dust { position: fixed; left: 0; top: 0; pointer-events: none !important; opacity: 0; }\n#portfolio-y2k-cursor { z-index: 2147483647; width: 0; height: 0; color: #fff; }\n#portfolio-y2k-cursor svg { position: absolute; left: -6px; top: -6px; width: 12px; height: 12px; overflow: visible; filter: drop-shadow(0 0 1px rgba(0,0,0,.65)); }\n#portfolio-y2k-cursor .cursor-circle { display: none; position: absolute; left: -6px; top: -6px; width: 12px; height: 12px; box-sizing: border-box; border: 1px solid #fff; border-radius: 50%; filter: drop-shadow(0 0 1px rgba(0,0,0,.65)); }\n#portfolio-y2k-cursor[data-interactive=\"true\"] svg { display: block; }\n#portfolio-y2k-cursor[data-interactive=\"true\"] .cursor-circle { display: none; }\n#portfolio-y2k-dust { z-index: 2147483646; }\n@media (hover: none), (pointer: coarse), (prefers-reduced-motion: reduce), (max-aspect-ratio: 1/1) {\n  #portfolio-y2k-cursor, #portfolio-y2k-dust { display: none !important; }\n  html[data-y2k-cursor=\"on\"], html[data-y2k-cursor=\"on\"] * { cursor: revert !important; }\n}\n</style>\n<script id=\"portfolio-y2k-cursor-script\">\n(() => {\n  function start() {\n    if (document.getElementById('portfolio-y2k-cursor')) return;\n    const cursor = document.createElement('div');\n    cursor.id = 'portfolio-y2k-cursor'; cursor.setAttribute('aria-hidden', 'true');\n    const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n    svg.setAttribute('viewBox', '0 0 22 26');\n    const path = document.createElementNS(svg.namespaceURI, 'path');\n    path.setAttribute('d', 'M2 1 L2 21 L7 16 L11 24 L14 22 L10 14 L19 14 Z');\n    path.setAttribute('fill', 'none'); path.setAttribute('stroke', '#fff');\n    path.setAttribute('stroke-width', '1'); path.setAttribute('vector-effect', 'non-scaling-stroke'); path.setAttribute('stroke-linejoin', 'round');\n    svg.appendChild(path); cursor.appendChild(svg);\n    const circle = document.createElement('span'); circle.className = 'cursor-circle'; cursor.appendChild(circle);\n    const canvas = document.createElement('canvas'); canvas.id = 'portfolio-y2k-dust'; canvas.setAttribute('aria-hidden', 'true');\n    document.body.append(canvas, cursor);\n    const ctx = canvas.getContext('2d');\n    if (!ctx) { canvas.remove(); cursor.remove(); return; }\n    const media = matchMedia('(hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference)');\n    const interactive = 'a,button,[role=\"button\"],[role=\"link\"],input,select,textarea,summary';\n    let particles = [], raf = 0, previousTime = 0, lastX = 0, lastY = 0, lastEmit = 0, visible = false;\n    function enabled() { return media.matches && innerWidth > innerHeight; }\n    function clear() {\n      delete document.documentElement.dataset.y2kCursor;\n      cursor.style.opacity = '0'; canvas.style.opacity = '0'; visible = false;\n      particles = []; if (raf) cancelAnimationFrame(raf); raf = 0; previousTime = 0;\n      ctx.clearRect(0, 0, innerWidth, innerHeight);\n    }\n    function resize() {\n      clear(); const dpr = Math.min(devicePixelRatio || 1, 2);\n      canvas.width = Math.round(innerWidth * dpr); canvas.height = Math.round(innerHeight * dpr);\n      canvas.style.width = innerWidth + 'px'; canvas.style.height = innerHeight + 'px';\n      ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n    }\n    function draw(time) {\n      const dt = Math.min((time - (previousTime || time)) / 1000, .04); previousTime = time;\n      ctx.clearRect(0, 0, innerWidth, innerHeight);\n      particles = particles.filter(p => (p.life -= dt) > 0);\n      for (const p of particles) {\n        p.x += p.vx * dt; p.y += p.vy * dt; p.vy += 28 * dt;\n        p.vx *= Math.exp(-1.5 * dt); p.vy *= Math.exp(-.7 * dt);\n        ctx.globalAlpha = 1;\n        ctx.fillStyle = '#fff';\n        ctx.fillRect(Math.round(p.x), Math.round(p.y), 1, 1);\n      }\n      ctx.globalAlpha = 1;\n      if (particles.length) raf = requestAnimationFrame(draw);\n      else { raf = 0; previousTime = 0; }\n    }\n    function emit(x, y, burst) {\n      const count = burst ? 100 : 6;\n      for (let i = 0; i < count; i++) {\n        const angle = Math.random() * Math.PI * 2;\n        const speed = burst ? 85 + Math.random() * 210 : 8 + Math.random() * 25;\n        const life = burst ? .55 + Math.random() * .45 : .3 + Math.random() * .4;\n        particles.push({x: x + (Math.random() - .5) * 4, y: y + (Math.random() - .5) * 4,\n          vx: Math.cos(angle) * speed, vy: Math.sin(angle) * speed, life, max: life,\n          size: Math.random() < .8 ? 3 : 4});\n      }\n      if (particles.length > 320) particles.splice(0, particles.length - 320);\n      if (!raf) raf = requestAnimationFrame(draw);\n    }\n    function place(event) {\n      cursor.style.transform = `translate3d(${event.clientX}px, ${event.clientY}px, 0)`;\n      cursor.dataset.interactive = String(Boolean(event.target instanceof Element && event.target.closest(interactive)));\n    }\n    document.addEventListener('pointermove', event => {\n      if (!enabled() || event.pointerType !== 'mouse') { clear(); return; }\n      place(event); const now = performance.now();\n      if (visible && Math.hypot(event.clientX - lastX, event.clientY - lastY) > 2 && now - lastEmit > 16) {\n        emit(event.clientX, event.clientY, false); lastEmit = now;\n      }\n      lastX = event.clientX; lastY = event.clientY; visible = true;\n      cursor.style.opacity = '1'; canvas.style.opacity = '1'; document.documentElement.dataset.y2kCursor = 'on';\n    }, {passive: true});\n    document.addEventListener('pointerover', event => { if (visible) place(event); }, {passive: true});\n    document.addEventListener('pointerdown', event => {\n      if (enabled() && event.pointerType === 'mouse' && event.button === 0) {\n        place(event); canvas.style.opacity = '1'; emit(event.clientX, event.clientY, true);\n      }\n    }, {passive: true});\n    document.documentElement.addEventListener('pointerleave', clear, {passive: true});\n    addEventListener('blur', clear); addEventListener('resize', resize, {passive: true});\n    media.addEventListener('change', clear);\n    document.addEventListener('visibilitychange', () => { if (document.hidden) clear(); });\n    resize();\n  }\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', start, {once: true});\n  else start();\n})();\n</script>\n\n<style id=\"portfolio-previous-button-style\">\n[data-portfolio-previous] {\n  cursor: pointer; touch-action: manipulation; z-index: 2;\n  transform: scaleX(-1) !important; transform-origin: center center !important;\n}\n[data-portfolio-previous]:focus-visible { outline: 2px solid currentColor; outline-offset: 4px; }\n@media (max-aspect-ratio: 1/1) {\n  [data-portfolio-previous] {\n    position: absolute !important; left: 16px !important; right: auto !important;\n    top: 50% !important; bottom: auto !important;\n    transform: translateY(-50%) scale(.45) translateX(100%) scaleX(-1) !important;\n    transform-origin: left center !important;\n  }\n}\n</style>\n\n<style id=\"portfolio-category-filter-style\">\n[data-category-tab]{cursor:pointer;}\n[data-category-tab][aria-pressed=\"true\"]{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.22em;}\n[data-category-tab]:focus-visible{outline:1px solid currentColor;outline-offset:4px;}\n[data-category-hidden]{display:none!important;}\n</style>\n<script id=\"portfolio-category-filter\">\n(()=>{\n let installed=new WeakSet();\n function install(){\n  const gallery=document.querySelector('[data-portfolio-gallery]');const header=document.querySelector('[data-portfolio-header]');\n  if(!gallery||!header||installed.has(gallery))return;\n  const cards=[...gallery.children]; const headings=[...header.children];\n  const graphic=headings.find(e=>e.textContent.trim().replace(/^\\+/,'').toUpperCase()==='GRAPHIC');\n  const contents=headings.find(e=>e.textContent.trim().toUpperCase()==='CONTENTS');\n  if(!graphic||!contents||cards.length!==10)return;\n  const match=(text)=>cards.find(c=>(c.getAttribute('aria-label')||'').includes(text));\n  const groups={graphic:[match('드림플러스'),match('아시아나'),match('이스타항공'),match('킷캣'),match('KT Y'),cards[7]],contents:[cards[8],cards[9]]};\n  if(Object.values(groups).some(g=>g.some(x=>!x)))return;\n  installed.add(gallery);\n  for(const [key,tab] of [['graphic',graphic],['contents',contents]]){\n   tab.dataset.categoryTab=key;tab.setAttribute('role','button');tab.setAttribute('tabindex','0');tab.setAttribute('aria-pressed','false');\n   const select=()=>{for(const c of cards){const i=groups[key].indexOf(c);c.toggleAttribute('data-category-hidden',i<0);c.style.order=i<0?'':String(i);}for(const h of [graphic,contents])h.setAttribute('aria-pressed',String(h===tab));gallery.scrollTo({left:0,behavior:'instant'});gallery.dispatchEvent(new Event('scroll'));};\n   tab.addEventListener('click',e=>{e.preventDefault();e.stopPropagation();select()});\n   tab.addEventListener('keydown',e=>{if(e.key==='Enter'||e.key===' '){e.preventDefault();select();}});\n  }\n }\n const start=()=>{install();new MutationObserver(install).observe(document.getElementById('container')||document.body,{subtree:true,childList:true});};\n if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',start,{once:true});else start();\n})();\n</script>\n\n<style id=\"portfolio-pixel-scatter-style\">\n[data-pixel-particles] { position: fixed; inset: 0; z-index: 2147483000; pointer-events: none; overflow: hidden; }\n[data-pixel-layer] { position:absolute; overflow:hidden; pointer-events:none; transform-origin:center; will-change:transform,opacity; }\n[data-pixel-layer] * { pointer-events:none !important; }\n</style>\n<script id=\"portfolio-pixel-scatter\">\n(() => {\n  let busy = false, replay = false;\n  const reduced = matchMedia('(prefers-reduced-motion: reduce)');\n  document.addEventListener('click', event => {\n    const gallery = document.querySelector('[data-portfolio-gallery]');\n    const target = event.target instanceof Element ? event.target.closest('a,[role=\"link\"]') : null;\n    const header = document.querySelector('[data-portfolio-header]');\n    const isCard = gallery && target && target.parentElement === gallery;\n    const isMenu = header && target && header.contains(target) && /^(GRAPHICS|CONTENTS|WHATEVER)$/.test(target.textContent.trim());\n    if ((!isCard && !isMenu) || replay || event.defaultPrevented || event.button !== 0 || event.metaKey || event.ctrlKey || event.altKey || event.shiftKey || reduced.matches) return;\n    if (busy) { event.preventDefault(); event.stopImmediatePropagation(); return; }\n    const isCV = target.getAttribute('aria-label') === 'CV 및 연락처 보기';\n    const visual = isCV ? target.querySelector('.textContents') : target;\n    if (!visual) return;\n    const rect = visual.getBoundingClientRect();\n    if (!isMenu && (rect.width < 50 || rect.height < 50)) return;\n    let overlay;\n    try {\n      const width = Math.ceil(rect.width), height = Math.ceil(rect.height), count = 5;\n      if (width * height > 1600000) return;\n      const canvas = document.createElement('canvas'); canvas.width=width; canvas.height=height;\n      const ctx=canvas.getContext('2d'); if(!ctx) return;\n      const layers = [], masks = [];\n      let glyph = null;\n      if (isCV) { ctx.fillStyle='#fff'; ctx.textBaseline='middle'; for (const line of visual.querySelectorAll('p')) { const r=line.getBoundingClientRect(), st=getComputedStyle(line), scale=r.height/Math.max(1,line.offsetHeight); ctx.font=(parseFloat(st.fontSize)*scale)+'px '+st.fontFamily; ctx.fillText(line.textContent.trim(),r.left-rect.left,(r.top+r.bottom)/2-rect.top); } glyph=ctx.getImageData(0,0,width,height).data; ctx.clearRect(0,0,width,height); }\n      if (isMenu) { const style=getComputedStyle(target); ctx.fillStyle='#fff'; ctx.font=style.font; ctx.textBaseline='middle'; ctx.fillText(target.textContent.trim(),0,height/2); glyph=ctx.getImageData(0,0,width,height).data; ctx.clearRect(0,0,width,height); }\n      for (let j=0;j<count;j++) { const img=ctx.createImageData(width,height); masks.push(img); }\n      for (let i=0;i<width*height;i++) { const j=Math.floor(Math.random()*count), k=i*4; masks[j].data[k]=masks[j].data[k+1]=masks[j].data[k+2]=255;masks[j].data[k+3]=glyph ? glyph[k+3] : (Math.random() < .42 ? 255 : 0); }\n      overlay=document.createElement('div'); overlay.dataset.pixelParticles=''; overlay.setAttribute('aria-hidden','true');\n      for (let j=0;j<count;j++) {\n        ctx.putImageData(masks[j],0,0); const layer=document.createElement('div');layer.dataset.pixelLayer='';\n        Object.assign(layer.style,{left:rect.left+'px',top:rect.top+'px',width:rect.width+'px',height:rect.height+'px',maskImage:'url('+canvas.toDataURL()+')',webkitMaskImage:'url('+canvas.toDataURL()+')',maskSize:'100% 100%',webkitMaskSize:'100% 100%'});\n        layer.style.backgroundColor='#fff'; overlay.appendChild(layer); layers.push(layer);\n      }\n      document.body.appendChild(overlay);\n      event.preventDefault(); event.stopImmediatePropagation();busy=true;\n      const href=target.getAttribute('href'); if(href && href.startsWith('/')) { const link=document.createElement('link');link.rel='prefetch';link.href=href;document.head.appendChild(link);setTimeout(()=>link.remove(),5000); }\n      visual.style.visibility='hidden'; document.documentElement.dataset.portfolioLoading='on';\n      const duration=1400;let start;\n      function finish(){overlay.remove();visual.style.visibility='';busy=false;replay=true;try{target.click()}finally{replay=false} const oldPage=target.closest('[data-breakpoint]'); const until=Date.now()+8000; const check=()=>{const current=document.querySelector('#container > [data-breakpoint]'); if((current && current!==oldPage)||Date.now()>until){delete document.documentElement.dataset.portfolioLoading;return}setTimeout(check,120)};setTimeout(check,120)}\n      function frame(time){if(!start)start=time;const t=Math.min(1,(time-start)/duration), ease=t*t;layers.forEach((layer,j)=>{const angle=(j/count)*Math.PI*2, distance=80*ease;layer.style.transform=`translate(${Math.cos(angle)*distance}px,${Math.sin(angle)*distance}px)`;layer.style.opacity=String(1-t);});if(t<1&&document.contains(target)) requestAnimationFrame(frame);else finish()}\n      requestAnimationFrame(frame);\n    } catch(err) { if(overlay)overlay.remove();visual.style.visibility='';busy=false; }\n  },true);\n})();\n</script>\n\n<style id=\"portfolio-reference-cursor\">\n#portfolio-y2k-cursor svg { left:-1px;top:-1px;width:13px;height:18px; }\n#portfolio-y2k-cursor[data-interactive=\"true\"] svg { display:block; }\n#portfolio-y2k-cursor[data-interactive=\"true\"] .cursor-circle {display:none;}\nhtml[data-portfolio-loading=\"on\"] #portfolio-y2k-cursor svg {display:none!important;}\nhtml[data-portfolio-loading=\"on\"] #portfolio-y2k-cursor::after {content:\"\";position:absolute;left:3px;top:3px;width:16px;height:21px;image-rendering:pixelated;background: center/contain no-repeat url('data:image/svg+xml,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 20\" shape-rendering=\"crispEdges\"%3E%3Cpath fill=\"%23fff\" d=\"M1 0h14v3h-2v3h-2v2H9v2h2v2h2v5h2v3H1v-3h2v-5h2v-2h2V8H5V6H3V3H1zm3 3v3h2v2h2v2H7v2H5v5h6v-5H9v-2H8V8h2V6h2V3z\"/%3E%3C/svg%3E');}\n</style>\n\n\n\n\n<style id=\"portfolio-hover-star-fix\">\nhtml:not([data-portfolio-loading=\"on\"]) #portfolio-y2k-cursor[data-interactive=\"true\"] svg { display:none!important; }\nhtml:not([data-portfolio-loading=\"on\"]) #portfolio-y2k-cursor[data-interactive=\"true\"] .cursor-circle { display:block!important;left:-6px;top:-6px;width:12px;height:12px;border:0;border-radius:0;background:center/contain no-repeat url('data:image/svg+xml,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"%3E%3Cpath d=\"M12 2L14.3 9H22L15.8 13.4L18.2 21L12 16.3L5.8 21L8.2 13.4L2 9H9.7Z\" fill=\"none\" stroke=\"%23fff\" stroke-width=\"2\" stroke-linejoin=\"round\"/%3E%3C/svg%3E'); }\nhtml[data-portfolio-loading=\"on\"] #portfolio-y2k-cursor .cursor-circle {display:none!important;}\n</style>\n\n<style id=\"portfolio-scrollbar-menu-visibility\">\n#container > [data-breakpoint]:not([data-portfolio-home]):not([data-portfolio-cv]) > div { scrollbar-width:none; }\n#container > [data-breakpoint]:not([data-portfolio-home]):not([data-portfolio-cv]) > div::-webkit-scrollbar { display:none; }\n[data-portfolio-header] > *:hover { text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:.22em; }\n</style>\n<style id=\"portfolio-cv-line-reveal-style\">\n@media (prefers-reduced-motion: no-preference) {\n [data-portfolio-cv] p[data-cv-reveal=\"waiting\"] { opacity:0; transform:translateY(12px); }\n [data-portfolio-cv] p[data-cv-reveal=\"shown\"] { animation:portfolio-cv-rise .65s ease-out both; animation-delay:var(--cv-delay,0ms); }\n @keyframes portfolio-cv-rise { from { opacity:0; transform:translateY(12px); } to { opacity:1; transform:translateY(0); } }\n}\n</style>\n<script id=\"portfolio-cv-line-reveal\">\n(() => {\n if (matchMedia('(prefers-reduced-motion: reduce)').matches) return;\n const seen=new WeakSet();\n const observer=new IntersectionObserver(entries=>{ for(const entry of entries) if(entry.isIntersecting){ entry.target.dataset.cvReveal='shown'; observer.unobserve(entry.target); } },{threshold:0.05});\n function scan(){const page=document.querySelector('#container > [data-portfolio-cv], #container > [data-breakpoint-id=\"node-28_1356\"]'); if(!page)return;\n const lines=[...page.querySelectorAll('p')].filter(p=>!seen.has(p)&&p.textContent.replace(/[\\s\\u200b]/g,''));\n lines.sort((a,b)=>a.getBoundingClientRect().top-b.getBoundingClientRect().top);\n let prev=-1e9, rank=-1; for(const p of lines){const y=p.getBoundingClientRect().top;if(y-prev>5){rank++;prev=y;} seen.add(p);p.style.setProperty('--cv-delay',Math.min(rank*55,1100)+'ms');p.dataset.cvReveal='waiting';observer.observe(p);}\n }\n const start=()=>{scan();new MutationObserver(scan).observe(document.querySelector('#container')||document.body,{childList:true,subtree:true});};\n if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',start,{once:true});else start();\n})();\n</script>\n\n\n<script id=\"portfolio-cv-exit-dust\">\n(()=>{\n let running=false, replay=false;\n document.addEventListener('click',e=>{\n  const page=document.querySelector('#container > [data-portfolio-cv], #container > [data-breakpoint-id=\"node-28_1356\"]');\n  if(replay||!page||running||e.button!==0||e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;\n  e.preventDefault(); e.stopImmediatePropagation();running=true;\n  const link=page.querySelector('a[role=link]') || page.closest('a[role=link]');\n  if(!link){running=false; return;}\n  const go=()=>{ canvas?.remove(); delete document.documentElement.dataset.portfolioLoading; lines?.forEach(p=>p.style.visibility=''); running=false; replay=true; try{link.click()}finally{replay=false;} };\n  let canvas,lines;\n  if(matchMedia('(prefers-reduced-motion: reduce)').matches){go();return;}\n  canvas=document.createElement('canvas');canvas.width=innerWidth;canvas.height=innerHeight;Object.assign(canvas.style,{position:'fixed',inset:'0',width:'100%',height:'100%',pointerEvents:'none',zIndex:'2147483000'});canvas.setAttribute('aria-hidden','true');document.body.append(canvas);\n  const c=canvas.getContext('2d');if(!c){canvas.remove();go();return;}\n  lines=[...page.querySelectorAll('p')].filter(p=>p.getClientRects().length&&p.getBoundingClientRect().width>0&&p.textContent.replace(/[\\s\\u200b]/g,''));\n  c.fillStyle='#fff';c.textBaseline='middle';\n  for(const p of lines){const r=p.getBoundingClientRect(),s=getComputedStyle(p);if(r.bottom<0||r.top>innerHeight)continue;const scale=r.height/Math.max(1,p.offsetHeight);c.font=(parseFloat(s.fontSize)*scale)+'px '+s.fontFamily;c.fillText(p.textContent.trim(),r.left,(r.top+r.bottom)/2);}\n  let pix;try{pix=c.getImageData(0,0,canvas.width,canvas.height).data}catch(_){canvas.remove();go();return;}\n  const points=[];for(let y=0;y<canvas.height;y+=2)for(let x=0;x<canvas.width;x+=2){if(pix[(y*canvas.width+x)*4+3]>120&&Math.random()<.7){const a=Math.random()*Math.PI*2,s=25+Math.random()*120;points.push({x,y,vx:Math.cos(a)*s,vy:Math.sin(a)*s-15});}}\n  lines.forEach(p=>p.style.visibility='hidden');document.documentElement.dataset.portfolioLoading='on';let start;\n  function draw(t){if(!start)start=t;const n=Math.min((t-start)/1100,1);c.clearRect(0,0,canvas.width,canvas.height);c.fillStyle='rgba(255,255,255,'+(1-n)+')';for(const p of points)c.fillRect(Math.round(p.x+p.vx*n),Math.round(p.y+p.vy*n+35*n*n),1,1);if(n<1)requestAnimationFrame(draw);else go();}requestAnimationFrame(draw);\n },true);\n})();\n</script>\n\n<script id=\"portfolio-cv-lines-dust\">\n(()=>{window.addEventListener('click',e=>{const page=document.querySelector('#container > [data-portfolio-cv],#container > [data-breakpoint-id=\"node-28_1356\"]');if(!page||e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||matchMedia('(prefers-reduced-motion: reduce)').matches)return;\nconst segments=[],restore=[];for(const el of page.querySelectorAll('*')){const r=el.getBoundingClientRect();if(!r.width||!r.height||r.bottom<0||r.top>innerHeight)continue;const s=getComputedStyle(el);for(const edge of ['top','bottom','left','right']){const w=parseFloat(s.getPropertyValue('border-'+edge+'-width'));const color=s.getPropertyValue('border-'+edge+'-color');if(w>0&&s.getPropertyValue('border-'+edge+'-style')!=='none'&&!/rgba\\([^)]*,\\s*0\\s*\\)/.test(color)){const horizontal=edge==='top'||edge==='bottom';const length=horizontal?r.width:r.height;if(length<30)continue;const startX=horizontal?r.left:(edge==='left'?r.left:r.right),startY=horizontal?(edge==='top'?r.top:r.bottom):r.top;segments.push({x:startX,y:startY,len:length,h:horizontal});const prop='border-'+edge+'-color';restore.push([el,prop,el.style.getPropertyValue(prop),el.style.getPropertyPriority(prop)]);el.style.setProperty(prop,'transparent','important');}}\nif((r.width>30&&r.height<=3||r.height>30&&r.width<=3)&&!el.children.length&&s.backgroundColor!=='rgba(0, 0, 0, 0)'&&s.backgroundColor!=='transparent'){segments.push({x:r.left,y:r.top,len:Math.max(r.width,r.height),h:r.width>r.height});restore.push([el,'visibility',el.style.getPropertyValue('visibility'),el.style.getPropertyPriority('visibility')]);el.style.setProperty('visibility','hidden','important');}}\nif(!segments.length)return;const canvas=document.createElement('canvas');canvas.width=innerWidth;canvas.height=innerHeight;Object.assign(canvas.style,{position:'fixed',inset:'0',width:'100%',height:'100%',pointerEvents:'none',zIndex:'2147483001'});document.body.append(canvas);const c=canvas.getContext('2d');if(!c){canvas.remove();return;}const dots=[];for(const s of segments)for(let i=0;i<s.len;i+=2)if(Math.random()<.8){const a=Math.random()*Math.PI*2,v=25+Math.random()*100;dots.push({x:s.x+(s.h?i:0),y:s.y+(s.h?0:i),vx:Math.cos(a)*v,vy:Math.sin(a)*v});}let start;function draw(t){if(!start)start=t;let k=Math.min((t-start)/1100,1);c.clearRect(0,0,canvas.width,canvas.height);c.fillStyle='rgba(255,255,255,'+(1-k)+')';for(const p of dots)c.fillRect(Math.round(p.x+p.vx*k),Math.round(p.y+p.vy*k+35*k*k),1,1);if(k<1)requestAnimationFrame(draw);else{canvas.remove();for(const [el,prop,val,priority] of restore){if(val)el.style.setProperty(prop,val,priority);else el.style.removeProperty(prop);}}}requestAnimationFrame(draw);\n},true);})();\n</script>\n\n<style id=\"portfolio-outline-scrollbar\">\n[data-portfolio-gallery]{scrollbar-color:auto!important;scrollbar-width:auto!important;}\n[data-portfolio-gallery]::-webkit-scrollbar{height:8px!important;background:transparent!important;}\n[data-portfolio-gallery]::-webkit-scrollbar-track,[data-portfolio-gallery]::-webkit-scrollbar-corner{background:transparent!important;border:0!important;box-shadow:none!important;}\n[data-portfolio-gallery]::-webkit-scrollbar-thumb{background:transparent!important;background-color:transparent!important;border:1px solid #fff!important;border-radius:0!important;box-shadow:none!important;}\n[data-portfolio-gallery]::-webkit-scrollbar-button{display:none!important;}\n#container>[data-breakpoint]:not([data-portfolio-home]):not([data-portfolio-cv]) *{scrollbar-width:none!important;}\n#container>[data-breakpoint]:not([data-portfolio-home]):not([data-portfolio-cv]) *::-webkit-scrollbar{display:none!important;}\n</style>\n","labs":{"E5FBBA911B2B7A09E649D4BE6CDF8591EAEFC881":false},"title":"SEO PARK · Portfolio Sites - Svc"},"sourceCodeHash":""}