@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2)format("woff2"),url(/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-mono-cyrillic-ext-700-normal-BDQ-w_bc.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-700-normal-CtgKGIh5.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-mono-cyrillic-700-normal-Bp80XfeI.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-700-normal-O_YjL27c.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-mono-vietnamese-700-normal-apsD3J7v.woff2)format("woff2"),url(/assets/ibm-plex-mono-vietnamese-700-normal-Bs14ezHR.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-mono-latin-ext-700-normal-Dhimjc7-.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-ext-700-normal-Cwsjk1Jb.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-mono-latin-700-normal-7sUh57Bg.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-700-normal-CNHXzs6v.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Pretendard;font-weight:900;font-display:swap;src:local(Pretendard Black),url(/assets/Pretendard-Black.subset-DBVlHUpa.woff2)format("woff2"),url(/assets/Pretendard-Black.subset-BHKzTnjN.woff)format("woff")}@font-face{font-family:Pretendard;font-weight:800;font-display:swap;src:local(Pretendard ExtraBold),url(/assets/Pretendard-ExtraBold.subset-C8ahUYWx.woff2)format("woff2"),url(/assets/Pretendard-ExtraBold.subset-A1cPG3di.woff)format("woff")}@font-face{font-family:Pretendard;font-weight:700;font-display:swap;src:local(Pretendard Bold),url(/assets/Pretendard-Bold.subset-NvQkMce4.woff2)format("woff2"),url(/assets/Pretendard-Bold.subset-ByYJKlCl.woff)format("woff")}@font-face{font-family:Pretendard;font-weight:600;font-display:swap;src:local(Pretendard SemiBold),url(/assets/Pretendard-SemiBold.subset-DdMYyxPR.woff2)format("woff2"),url(/assets/Pretendard-SemiBold.subset-Doheemvi.woff)format("woff")}@font-face{font-family:Pretendard;font-weight:500;font-display:swap;src:local(Pretendard Medium),url(/assets/Pretendard-Medium.subset-D07TkZcI.woff2)format("woff2"),url(/assets/Pretendard-Medium.subset-D-vxZJjN.woff)format("woff")}@font-face{font-family:Pretendard;font-weight:400;font-display:swap;src:local(Pretendard Regular),url(/assets/Pretendard-Regular.subset-BZqc2FCe.woff2)format("woff2"),url(/assets/Pretendard-Regular.subset-Dpq6qleg.woff)format("woff")}@font-face{font-family:Pretendard;font-weight:300;font-display:swap;src:local(Pretendard Light),url(/assets/Pretendard-Light.subset--7YfZPHv.woff2)format("woff2"),url(/assets/Pretendard-Light.subset-BH9bwXKk.woff)format("woff")}@font-face{font-family:Pretendard;font-weight:200;font-display:swap;src:local(Pretendard ExtraLight),url(/assets/Pretendard-ExtraLight.subset-Dne8vBUr.woff2)format("woff2"),url(/assets/Pretendard-ExtraLight.subset-D-kBGiz2.woff)format("woff")}@font-face{font-family:Pretendard;font-weight:100;font-display:swap;src:local(Pretendard Thin),url(/assets/Pretendard-Thin.subset-CIJfwvSz.woff2)format("woff2"),url(/assets/Pretendard-Thin.subset-DjxeqmoS.woff)format("woff")}*{box-sizing:border-box;-webkit-user-select:none;user-select:none}img{-webkit-user-drag:none}body{margin:0}:root{--board-border:#000}.dark{--board-border:#666}.dialog-content{background:#fff}.dark .dialog-content{background:#2d2d2d}button,input,textarea{font:inherit}button{cursor:pointer}.inputs-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.field{gap:4px;font-size:14px;display:grid}.field span{color:var(--chakra-colors-fg-muted,#888);font-weight:600}input,.preset-select{border:1px solid var(--chakra-colors-border,#aaa);background:var(--chakra-colors-bg,#fff);width:100%;color:var(--chakra-colors-fg,#000);padding:6px 8px;font-family:monospace;font-size:13px}input:focus{outline:1px solid var(--chakra-colors-colorPalette-500,#4a9e9a);border-color:var(--chakra-colors-colorPalette-500,#4a9e9a)}.button-row{gap:8px;display:flex}.button-row button{flex:1}.primary-button{color:#fff;background:#60a9a6;border:0;border-radius:6px;padding:8px 12px;font-size:14px;font-weight:700}.primary-button:disabled{opacity:.6;cursor:not-allowed}.danger-button{color:#fff;background:#dc3c3c;border:0;border-radius:6px;padding:8px 12px;font-size:14px;font-weight:700}.danger-button:disabled{opacity:.6;cursor:not-allowed}.run-sim-btn{width:100%;margin-top:10px;padding:10px 12px;font-size:15px}.secondary-button{color:#60a9a6;background:0 0;border:1px solid #60a9a6;border-radius:6px;padding:8px 12px;font-size:14px;font-weight:700}.secondary-button:hover{background:#60a9a61a}.error-text{color:red;font-size:14px}.toggle-group{border:1px solid var(--chakra-colors-border,#aaa);background:var(--chakra-colors-bg,#fff);border-radius:6px;overflow:hidden}.toggle-group>.labeled-toggle+.labeled-toggle{border-top:1px solid var(--chakra-colors-border,#aaa)}.labeled-toggle{align-items:center;display:flex}.labeled-toggle-label{width:80px;color:var(--chakra-colors-fg,#fff);white-space:nowrap;text-align:center;box-sizing:border-box;padding:8px 10px;font-size:14px;font-weight:600}.mode-toggle{border:1px solid var(--chakra-colors-border,#aaa);border-radius:6px;display:flex;overflow:hidden}.labeled-toggle>.mode-toggle{border:none;border-left:1px solid var(--chakra-colors-border,#aaa);border-radius:0;flex:1}.mode-toggle-btn{background:var(--chakra-colors-bg,#fff);min-width:48px;color:var(--chakra-colors-fg-muted,#888);cursor:pointer;white-space:nowrap;border:0;flex:1;padding:8px 12px;font-size:14px;font-weight:600}.mode-toggle-btn.active{color:#fff;background:#60a9a6}.mode-toggle-btn:disabled{opacity:.6;cursor:not-allowed}.score-breakdown-row{grid-template-columns:5.5em auto;align-items:baseline;gap:6px;padding:4px 0;font-size:16px;display:grid}.score-breakdown-row .row-name{color:var(--chakra-colors-fg-muted,#888);white-space:nowrap;font-size:16px}.score-row-board .row-name:before,.score-row-error .row-name:before,.score-row-loss .row-name:before{content:"";vertical-align:middle;border-radius:50%;width:10px;height:10px;margin-right:5px;display:inline-block}.score-row-board .row-name:before{background:#60a5fa}.score-row-error .row-name:before{background:#facc15}.score-row-loss .row-name:before{background:#f87171}.score-bar{border-radius:3px;height:5px;margin:5px 0 2px;display:flex;overflow:hidden}.score-bar-seg{height:100%;transition:width .4s}.score-bar-board{background:#60a5fa}.score-bar-error{background:#facc15}.score-bar-loss{background:#f87171}.score-breakdown-row .value{text-align:right;white-space:nowrap;font-weight:700}.score-breakdown-total{border-top:1px solid var(--chakra-colors-border,#aaa);margin-top:4px;padding-top:6px}.score-breakdown-total .row-name{color:var(--chakra-colors-fg,#000);font-size:16px;font-weight:700}.score-breakdown-total .value{font-size:20px}.score-detail{color:var(--chakra-colors-fg-muted,#888);padding:0 0 4px 20px;font-family:IBM Plex Mono,monospace;font-size:12px}.score-detail-formula{color:var(--chakra-colors-fg,#000);font-weight:600}.score-detail-vars{grid-template-columns:auto auto 1fr;gap:1px 6px;margin:3px 0 0;font-family:Pretendard Variable,sans-serif;font-size:11px;line-height:1.5;display:grid}.score-detail-vars dt{font-family:IBM Plex Mono,monospace;font-weight:600}.score-detail-vars dd{margin:0}.score-detail-val{text-align:right;white-space:nowrap;border-right:1px solid var(--chakra-colors-border,#ccc);margin-right:2px;padding-right:8px;font-family:IBM Plex Mono,monospace}.score-detail-toggle{text-align:center;width:100%;color:var(--chakra-colors-fg-muted,#888);cursor:pointer;background:0 0;border:none;border-radius:4px;margin-bottom:6px;padding:5px 0;font-size:13px;display:block}.score-detail-toggle:hover{background:var(--chakra-colors-bg-subtle,#0000000a)}.pipe-mode-btn{border:1px solid var(--chakra-colors-border,#aaa);background:var(--chakra-colors-bg,#fff);color:var(--chakra-colors-fg,#000);padding:7px 18px;font-size:14px;font-weight:600}.pipe-mode-btn.active{color:#fff;background:#60a9a6;border-color:#60a9a6}.board-help{z-index:10;position:absolute;top:12px;left:12px}.board-help-btn{border:1px solid var(--chakra-colors-border,#aaa);background:var(--chakra-colors-bg,#fff);color:var(--chakra-colors-fg-muted,#888);white-space:nowrap;cursor:pointer;border-radius:6px;padding:8px 12px;font-size:14px;font-weight:600}.board-help-btn:hover{color:var(--chakra-colors-fg,#333)}.board-help-btn.active{color:#fff;background:#60a9a6;border-color:#60a9a6}.board-help-panel{background:var(--chakra-colors-bg,#fff);border:1px solid var(--chakra-colors-border,#aaa);white-space:nowrap;opacity:0;pointer-events:none;border-radius:8px;flex-direction:column;gap:8px;padding:10px 12px;transition:opacity .15s,transform .15s;display:flex;position:absolute;top:36px;left:0;transform:translateY(-6px);box-shadow:0 2px 8px #0000001f}.board-help.open .board-help-panel{opacity:1;pointer-events:auto;transform:translateY(0)}.board-help-panel:before{content:"";width:100%;height:8px;position:absolute;top:-8px;left:0}.board-help-header{justify-content:space-between;align-items:center;gap:16px;margin-bottom:2px;display:flex}.board-help-title{color:var(--chakra-colors-fg-muted,#888);text-transform:uppercase;letter-spacing:.05em;font-size:13px;font-weight:600}.board-help-pin{width:22px;height:22px;color:var(--chakra-colors-fg-muted,#888);cursor:pointer;background:0 0;border:none;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.board-help-pin:hover{background:var(--chakra-colors-bg-subtle,#f0f0f0)}.board-help-pin.active{color:#60a9a6}.board-help-item{color:var(--chakra-colors-fg,#333);align-items:center;gap:8px;font-size:12px;display:flex}.board-help-icon{color:var(--chakra-colors-fg-muted,#888);flex-shrink:0}.board-help-animal{object-fit:contain;flex-shrink:0;width:20px;height:20px}.board-help-plus{opacity:.6;border:1px solid;border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;display:inline-flex}.board-help-grid{grid-template-columns:minmax(48px,auto) auto auto;align-items:center;column-gap:10px;font-size:12px;display:grid}.board-help-cell{white-space:nowrap;border-bottom:1px solid var(--chakra-colors-border,#0000001a);align-items:center;gap:4px;padding:6px 0;display:flex}.board-help-grid>.board-help-cell:nth-last-child(-n+3){border-bottom:none}.board-help-grid>.board-help-cell:nth-child(3n+2){border-right:1px solid var(--chakra-colors-border,#0000001a);padding-right:10px}.board-help-arrow-badge{flex-shrink:0;align-items:center;width:32px;height:20px;display:inline-flex;position:relative}.board-help-arrow-badge svg{position:absolute;top:50%;right:0;transform:translateY(-50%)}.board-help-arrow-badge .board-help-animal{z-index:1;position:absolute;top:50%;left:0;transform:translateY(-50%)}.board-help-plus--placed{background:#60a9a633;border-color:#60a9a6}.board-help-kbd{min-width:20px;height:20px;color:var(--chakra-colors-fg,#000);background:var(--chakra-colors-bg-subtle,#f5f5f5);border:1px solid var(--chakra-colors-border,#ccc);box-shadow:0 1px 0 var(--chakra-colors-border,#ccc);border-radius:4px;justify-content:center;align-items:center;padding:0 5px;font-family:IBM Plex Mono,monospace;font-size:11px;font-weight:700;display:inline-flex}.help-btn{border:1px solid var(--chakra-colors-border,#aaa);background:var(--chakra-colors-bg,#fff);width:20px;height:20px;color:var(--chakra-colors-fg-muted,#888);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-size:11px;font-weight:700;line-height:1;display:flex}.help-btn:hover{background:var(--chakra-colors-bg-subtle,#f5f5f5)}.theme-switch{cursor:pointer;background:#d0d0d0;border:none;border-radius:14px;flex-shrink:0;align-items:center;width:52px;height:28px;padding:3px;transition:background .2s;display:inline-flex;position:relative}.theme-switch.theme-switch-dark{background:#444}.theme-switch-thumb{color:#333;background:#fff;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;font-size:12px;line-height:1;transition:transform .25s;display:flex;position:absolute;left:3px;box-shadow:0 1px 3px #00000040}.theme-switch.theme-switch-dark .theme-switch-thumb{transform:translate(24px)}.board-wrap{position:relative}.board-grid{border-style:solid;border-width:1px 0 0 1px;border-color:var(--board-border,#000);background:var(--chakra-colors-bg-subtle,#f5f5f5);display:grid;position:absolute;inset:0}.dark .board-grid{background:#2a2a2a}.pipe-layer{pointer-events:none;z-index:1;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.pipe-line{color:gray;stroke:currentColor;stroke-width:3px;stroke-linecap:round}.pipe-line.active{color:#66bb6a}.pipe-line.returned{color:#f44336}.pipe-line.hover{color:#e53935}.pipe-line.preview{color:#e91e63;stroke-width:3px}.pipe-line.jump{stroke-width:4px;color:#ff9800}.pipe-line.jump.active{color:#66bb6a}.pipe-line.jump.returned{color:#f44336}.pipe-line.jump.hover{color:#e53935}.pipe-line.jump.preview{color:#ff980080}.pipe-port,.board-cell{border-style:solid;border-width:0 1px 1px 0;border-color:var(--board-border,#000);-webkit-user-select:none;user-select:none;flex-direction:column;justify-content:center;align-items:center;width:72px;height:72px;display:flex;position:relative}.pipe-port{color:#fff;background:#6b4c35;gap:2px;font-size:11px}.pipe-port strong{font-size:13px}.pipe-port.inactive{background:#555}.pipe-port.inactive strong{visibility:hidden}.pipe-port.inactive .port-img{opacity:.35}.pipe-port.output-port{color:var(--chakra-colors-fg,#333);background:0 0}.dot-layer{pointer-events:none;z-index:2;position:absolute;inset:0;overflow:visible}.acorn-dot,.acorn-dot-fade,.acorn-dot-returned{offset-rotate:0deg;will-change:offset-distance;position:absolute;transform:translate(calc(20px - 50%),-50%)}.acorn-dot{animation:.22s linear forwards acorn-move}.acorn-dot-fade{animation:.22s linear forwards acorn-move-fade}.acorn-dot-returned{animation:.22s linear forwards acorn-return}@keyframes acorn-move-fade{0%{offset-distance:0%;opacity:1}99%{opacity:1}to{offset-distance:100%;opacity:0}}.acorn-img{object-fit:contain;width:18px;height:18px;display:block}@keyframes acorn-move{0%{offset-distance:0%;opacity:1}99%{opacity:1}to{offset-distance:100%;opacity:0}}@keyframes acorn-return{0%{offset-distance:0%;opacity:1}50%{offset-distance:50%;opacity:1}99%{opacity:1}to{offset-distance:0%;opacity:0}}.squirrel-diamond{pointer-events:none;z-index:1;width:72px;height:72px;position:absolute;top:0;left:0;overflow:visible}.board-cell.arrow-hover{outline-offset:-2px;outline:2px solid #4caf5080}.squirrel-img{z-index:2;pointer-events:none;width:auto;height:34px;position:absolute;top:16px;left:50%;transform:translate(-50%)}.squirrel-img.hamster-deletable{transition:opacity .15s}.squirrel-img.hamster-deletable.is-hovered{opacity:.5}.squirrel-hit{cursor:pointer;z-index:3;width:20px;height:20px;position:absolute;top:22px;left:50%;transform:translate(-50%)}.long-press-ring{pointer-events:none;z-index:4;width:28px;height:28px;position:absolute;top:18px;left:50%;transform:translate(-50%)}.long-press-ring circle{transform-origin:50%;animation:.5s linear forwards long-press-fill;transform:rotate(-90deg)}@keyframes long-press-fill{0%{stroke-dashoffset:94.25px}to{stroke-dashoffset:0}}.cave-img{top:11px;transform:translate(calc(5px - 50%),-5px)}.port-img{object-fit:contain;width:52px;height:40px}.output-port .port-img{width:36px;height:28px}.pipe-port.output-port{justify-content:center;gap:1px}.port-remain{color:#ffffffe6;text-align:center;font-size:9px;line-height:1.2}.output-port .port-remain{color:var(--chakra-colors-fg-muted,#666)}.port-status{text-align:center;z-index:1;background:#222;border-radius:3px;padding:1px 3px;font-size:9px;font-weight:700;position:relative}.pipe-port span{color:#ffffffbf;font-size:10px}.pipe-port.output-port span{color:var(--chakra-colors-fg-muted,#666)}.pipe-port .port-status.perfect{color:#66bb6a}.pipe-port .port-status.lack{color:#f59e0b}.pipe-port .port-status.excess{color:#ff7043}.pipe-port.output-port .port-status.perfect{color:#66bb6a}.pipe-port.output-port .port-status.lack{color:#f59e0b}.pipe-port.output-port .port-status.excess{color:#ff7043}.board-cell{color:#60a9a6;touch-action:none}.cell-empty-hint{color:var(--chakra-colors-fg-muted,#888);opacity:.2;pointer-events:none;font-size:22px;font-weight:200;line-height:1}.board-cell:hover .cell-empty-hint{opacity:.5}.cell-count{color:var(--chakra-colors-fg,#333);text-overflow:ellipsis;white-space:nowrap;z-index:3;font-size:13px;font-weight:500;position:absolute;bottom:4px;right:4px;overflow:hidden}.dark .cell-count{color:#e8e8e8}.board-cell.drag-vertex{background:#60a9a680}.board-cell.drag-target,.pipe-port.drag-target{background:#60a9a626}.board-cell.drag-target-jump,.pipe-port.drag-target-jump{background:#ff98001a}.board-cell.jump-start{background:#60a9a680}.board-cell.jump-available{background:#60a9a61a}.board-cell.overloaded{background:#ec48992e}.slider-markers-row{height:12px;margin-bottom:2px;position:relative}.slider-marker-btn{cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;width:10px;height:12px;padding:0;display:flex;position:absolute;top:0;transform:translate(-50%)}.slider-marker-btn:before{content:"";background:#60a9a6b3;border-radius:1px;width:2px;height:100%}.slider-marker-btn:hover:before{background:#60a9a6;width:3px}.slider-break{pointer-events:none;z-index:1;opacity:.6;background:repeating-linear-gradient(-55deg,#0000,#0000 1.5px,#969696 1.5px 2.5px);width:10px;height:calc(100% + 8px);position:absolute;top:-4px;transform:translate(-50%)}.dark .slider-break{opacity:.5;background:repeating-linear-gradient(-55deg,#0000,#0000 1.5px,#c8c8c8 1.5px 2.5px)}
