@font-face{font-family:Barlow Semi Condensed;font-weight:500;font-display:swap;src:url(/fonts/barlow-sc-500.woff2)format("woff2");unicode-range:U+??,U+D7,U+2013-2014}@font-face{font-family:Barlow Semi Condensed;font-weight:600;font-display:swap;src:url(/fonts/barlow-sc-600.woff2)format("woff2");unicode-range:U+??,U+D7,U+2013-2014}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--night:#151a22;--panel:#1c222c;--raised:#252c37;--raised-2:#303845;--ink:#e9edf2;--graphite:#8c95a3;--dim:#5c6573;--hairline:#2b323d;--danger:#f07178;--ok:#a7d474;--note:#6fa39e;--pick:#ff5a62;--t5:#d4af4a;--t4:#a98be0;--t3:#4f9fd8;--t2:#b2bc45;--sans:"IBM Plex Sans KR", -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Malgun Gothic", "Noto Sans KR", system-ui, sans-serif;--num:"Barlow Semi Condensed", var(--sans);--page-w:560px;--header-h:72px;--tabbar-h:60px}.t5{--tier:var(--t5)}.t4{--tier:var(--t4)}.t3{--tier:var(--t3)}.t2{--tier:var(--t2)}*{box-sizing:border-box}[hidden]{display:none!important}html{-webkit-text-size-adjust:100%}body{padding-bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom));background:var(--night);color:var(--ink);font:14px/1.5 var(--sans);letter-spacing:-.005em;-webkit-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased;margin:0}button,input{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.num{font-family:var(--num);font-variant-numeric:tabular-nums lining-nums;letter-spacing:0}.empty,.hint{color:var(--graphite);margin:12px 0 0;font-size:13px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important}}body:not([data-tab=calc]) [data-view=calc],body:not([data-tab=graph]) [data-view=graph],body:not([data-tab=inventory]) [data-view=inventory]{display:none}.page{max-width:var(--page-w);margin:0 auto;padding:20px 16px;display:block}footer.page{color:var(--dim);padding-top:0;padding-bottom:28px;font-size:11px}section{margin-bottom:24px}.section-head{align-items:baseline;gap:8px;margin-bottom:14px;display:flex}.section-head h2{letter-spacing:-.02em;margin:0;font-size:18px;font-weight:600}.section-meta{color:var(--graphite);font-size:13px}.section-head>:last-child:not(h2):not(.section-meta),.section-head .fold-toggle,.section-head>.push{margin-left:auto}.section-head>.push~.text-btn:last-child{margin-left:12px}.section-head>.push[hidden]~.text-btn:last-child{margin-left:auto}.slot{--cut:7px;background:var(--raised);clip-path:polygon(var(--cut) 0, 100% 0, 100% 100%, 0 100%, 0 var(--cut));flex:none;place-items:center;display:grid;position:relative}.slot:after{content:"";width:calc(var(--cut) + 3px);height:calc(var(--cut) + 3px);background:var(--tier);clip-path:polygon(100% 0,100% 100%,0 100%);position:absolute;bottom:0;right:0}.slot img{width:88%;height:88%}.slot-lg{--cut:11px;width:64px;height:64px}.slot-md{--cut:7px;width:40px;height:40px}.slot-sm{--cut:6px;width:32px;height:32px}.top{z-index:10;padding-top:env(safe-area-inset-top);background:color-mix(in srgb, var(--night) 88%, transparent);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--hairline);position:sticky;top:0}.top-inner{max-width:var(--page-w);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:2px 12px;margin:0 auto;padding:10px 16px;display:grid}.top h1{letter-spacing:-.02em;margin:0;font-size:17px;font-weight:600}.sync-status{color:var(--graphite);flex-wrap:wrap;grid-column:1/-1;align-items:center;gap:2px 8px;font-size:12px;display:flex}.sync-actions{gap:6px;display:flex}.dot{background:var(--dim);border-radius:50%;width:6px;height:6px}.dot.ready{background:var(--graphite)}.dot.offline{background:var(--danger)}.badge{box-shadow:inset 0 0 0 1px var(--graphite);color:var(--ink);border-radius:4px;padding:0 7px;font-size:11.5px;line-height:18px}.btn{background:var(--raised);border:0;border-radius:8px;min-height:36px;padding:0 14px;font-size:13.5px;font-weight:600}.btn.primary{background:var(--ink);color:var(--night)}.btn:disabled{box-shadow:inset 0 0 0 1px var(--hairline);color:var(--dim);cursor:default;background:0 0}.btn.danger{color:var(--danger);background:0 0}.text-btn{min-height:32px;color:var(--ink);background:0 0;border:0;padding:0 2px;font-size:13.5px;font-weight:600}.icon-btn{width:40px;height:40px;color:var(--graphite);background:0 0;border:0;border-radius:8px;flex:none;place-items:center;font-size:17px;display:grid}.tags{flex-wrap:wrap;gap:8px;display:flex}.graph-roots{margin-bottom:16px}.tag{min-height:36px;box-shadow:inset 0 0 0 1px var(--hairline);color:var(--graphite);white-space:nowrap;background:0 0;border:0;border-radius:8px;flex:none;align-items:center;gap:6px;padding:0 13px;font-size:14px;display:inline-flex}.tag[aria-pressed=true]{background:var(--raised);box-shadow:none;color:var(--ink);font-weight:600}.tag-icon{padding-left:6px}.tag-icon img{width:24px;height:24px}.list{background:var(--panel);border-radius:14px;margin:0;padding:4px 0;list-style:none}.list>*{position:relative}.list>:not([hidden])~:not([hidden]):before{content:"";background:var(--hairline);height:1px;position:absolute;top:0;left:68px;right:16px}.use-row{text-align:left;background:0 0;border:0;flex-direction:column;width:100%;padding:12px 44px 12px 16px;display:flex;position:relative}.use-row:after{content:"";border-top:1.5px solid var(--dim);border-right:1.5px solid var(--dim);width:7px;height:7px;position:absolute;top:50%;right:18px;transform:translateY(-50%)rotate(45deg)}.use-row-name{font-size:16px;font-weight:600}.use-row-sub{color:var(--graphite);font-size:12.5px}.use-row.add{padding-block:16px;font-weight:600}.use-row.add:after{display:none}.use-list.list>:not([hidden])~:not([hidden]):before{left:16px}.goals{grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:20px 6px;display:grid;position:relative}.goal{text-align:center;background:0 0;border:0;flex-direction:column;align-items:center;gap:6px;min-width:0;padding:0;display:flex;position:relative}.goal[aria-expanded=true]:before{content:"";--cut:14px;background:var(--pick);width:70px;height:70px;clip-path:polygon(var(--cut) 0, 100% 0, 100% 100%, 0 100%, 0 var(--cut));position:absolute;top:-3px;left:50%;translate:-50%}.goal[aria-expanded=true] .goal-name,.goal[aria-expanded=true] .goal-count b{color:var(--ink);font-weight:600}.goal-count{color:var(--graphite);font-size:18px;line-height:1}.goal-count b{color:var(--ink);font-weight:600}.goal-name{color:var(--graphite);word-break:keep-all;font-size:12px;line-height:16px}.goal-split{color:var(--note);word-break:keep-all;margin-top:-2px;font-size:11px;line-height:15px}.goal.enough .goal-count b{color:var(--graphite);font-weight:500}.goal.enough .slot{opacity:.5}.goal-tip{left:var(--x,50%);top:var(--y,0);z-index:8;background:var(--raised-2);border-radius:10px;width:max-content;max-width:min(240px,100%);padding:6px 0;position:absolute;translate:-50% -100%}.goal-tip.below{translate:-50%}.goal-tip:after{content:"";top:100%;left:calc(50% + var(--tail,0px));background:var(--raised-2);clip-path:polygon(50% 100%,100% 0,0 0);width:12px;height:6px;position:absolute;translate:-50%}.goal-tip.below:after{clip-path:polygon(50% 0,100% 100%,0 100%);top:auto;bottom:100%}.tip-row{justify-content:space-between;align-items:baseline;gap:14px;padding:3px 11px;display:flex}.tip-name{white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:12.5px;overflow:hidden}.tip-row.material .tip-name{color:var(--graphite)}.tip-num{font-size:15px;font-weight:600}.ledger-row{grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:12px;min-height:58px;padding:0 16px;display:grid}.ledger-name{word-break:keep-all;font-size:16px}.ledger-num{font-size:24px;font-weight:600}.fold>summary{cursor:pointer;list-style:none}.fold>summary::-webkit-details-marker{display:none}.fold-toggle{color:var(--graphite);font-size:13px}.fold .when-open,.fold[open] .when-closed{display:none}.fold[open] .when-open{display:inline}.focus-bar{top:var(--header-h);z-index:5;background:var(--panel);grid-template-columns:32px minmax(0,1fr) auto;align-items:center;gap:10px;margin:0 -16px 16px;padding:10px 16px;display:grid;position:sticky}.focus-main{flex-direction:column;min-width:0;display:flex}.focus-name{font-size:15px;font-weight:600}.focus-sub{color:var(--graphite);font-size:12.5px}.focus-sub b{color:var(--ink);font-size:14px;font-weight:600}.status-tag{white-space:nowrap;font-size:13px;font-weight:600}.status-tag .num{font-size:14px}.enough .status-tag{color:var(--ok)}.idle .status-tag{color:var(--graphite);font-weight:400}.graph{position:relative}.graph svg{pointer-events:none;position:absolute;inset:0;overflow:visible}.edge path{fill:none;stroke:var(--tier);stroke-width:1.6px;transition:opacity .15s}.edge.idle{opacity:.3}.edge text{fill:var(--graphite);font-family:var(--num);text-anchor:middle;paint-order:stroke;stroke:var(--night);stroke-width:4px;font-size:11px;font-weight:600;display:none}.graph.single .edge text,.graph.focus .edge.hl text{display:block}.graph.focus .edge:not(.hl){opacity:.06}.graph.focus .edge.hl{opacity:1}.graph.focus .edge.hl path{stroke-width:2.5px}.gnode{background:var(--raised);clip-path:polygon(9px 0,100% 0,100% 100%,0 100%,0 9px);text-align:center;border:0;flex-direction:column;align-items:center;padding:7px 4px 0;transition:opacity .15s,background-color .15s;display:flex;position:absolute}.gnode:after{content:"";background:var(--tier);clip-path:polygon(100% 0,100% 100%,0 100%);width:11px;height:11px;position:absolute;bottom:0;right:0}.gnode img{flex:none;width:32px;height:32px}.gnode-name{height:26px;color:var(--graphite);word-break:keep-all;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:4px;font-size:11px;line-height:13px;display:-webkit-box;overflow:hidden}.gnode-num{color:var(--graphite);margin-top:3px;font-size:17px;font-weight:600;line-height:18px}.gnode-num b{color:var(--ink);font-weight:600}.gnode.enough .gnode-num b{color:var(--ok)}.gnode-state{color:var(--dim);margin-top:4px;font-size:11.5px;line-height:16px}.gnode.idle{opacity:.45}.gnode.focused{background:var(--raised-2)}.gnode.focused .gnode-name{color:var(--ink)}.graph.focus .gnode:not(.hl){opacity:.2}.graph.focus .gnode.hl{opacity:1}.search{top:var(--header-h);z-index:5;background:var(--night);margin:0 -16px;padding:4px 16px 12px;position:sticky}.search:before{content:"";background:var(--graphite);pointer-events:none;width:17px;height:17px;position:absolute;top:calc(50% - 4px);left:29px;transform:translateY(-50%);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='10.5' cy='10.5' r='6.5' fill='none' stroke='black' stroke-width='2'/%3E%3Cpath d='M15.5 15.5L20 20' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E") 50%/100% no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='10.5' cy='10.5' r='6.5' fill='none' stroke='black' stroke-width='2'/%3E%3Cpath d='M15.5 15.5L20 20' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E") 50%/100% no-repeat}.search input{background:var(--raised);appearance:none;border:0;border-radius:10px;width:100%;height:44px;padding:0 44px 0 40px;font-size:16px}.search input::placeholder{color:var(--dim)}.search input::-webkit-search-cancel-button{display:none}.search input:focus{box-shadow:inset 0 0 0 1.5px var(--graphite);outline:none}.search-clear{background:0 0;border:0;width:36px;height:36px;position:absolute;top:calc(50% - 4px);right:20px;transform:translateY(-50%)}.search-clear:before{content:"";background:var(--dim) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M5.5 5.5l5 5M10.5 5.5l-5 5' stroke='%23151a22' stroke-width='1.8' stroke-linecap='round'/%3E%3C/svg%3E") center / 100%;border-radius:50%;position:absolute;inset:10px}#inventory>.hint{margin:0 0 4px}.inv-group .list>:not([hidden])~:not([hidden]):before{display:none}.inv-group h3{color:var(--graphite);margin:22px 0 8px;font-size:13px;font-weight:600}.inv-row{grid-template-columns:40px minmax(0,1fr) 92px;align-items:center;gap:12px;min-height:62px;padding:0 16px;display:grid}.inv-main{flex-direction:column;min-width:0;display:flex}.inv-name{word-break:keep-all;font-size:15.5px;transition:color .3s}.inv-need{color:var(--graphite);flex-wrap:wrap;gap:0 10px;font-size:12.5px;display:flex}.inv-need .num{font-size:13.5px}.inv-row .slot{transition:opacity .3s}.inv-row[data-state=enough] .inv-name,.inv-row[data-state=idle] .inv-name{color:var(--graphite)}.inv-row[data-state=enough] .status-tag{color:var(--ok)}.inv-row[data-state=enough] .slot,.inv-row[data-state=idle] .slot{opacity:.5}.num-input{border:0;border-bottom:1.5px solid var(--hairline);text-align:right;appearance:textfield;background:0 0;border-radius:0;width:100%;height:42px;padding:0 2px;font-size:22px;font-weight:600}.num-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.num-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.num-input::placeholder{color:var(--dim);font-weight:500}.num-input:focus{border-bottom-color:var(--ink);outline:none}.tabbar{z-index:10;padding-bottom:env(safe-area-inset-bottom);background:var(--panel);border-top:1px solid var(--hairline);position:fixed;bottom:0;left:0;right:0}.tabbar-inner{max-width:var(--page-w);height:var(--tabbar-h);grid-template-columns:repeat(3,1fr);margin:0 auto;display:grid}.tabbar button{color:var(--dim);background:0 0;border:0;flex-direction:column;justify-content:center;align-items:center;gap:3px;font-size:11.5px;display:flex;position:relative}.tabbar svg{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linejoin:round;stroke-linecap:round;width:22px;height:22px}.tabbar [aria-current=page]{color:var(--ink);font-weight:600}.tabbar [aria-current=page]:before{content:"";background:var(--ink);height:2px;position:absolute;top:-1px;left:34%;right:34%}.tabbar .dirty:after{content:"";background:var(--ink);border-radius:50%;width:6px;height:6px;position:absolute;top:10px;left:calc(50% + 10px)}dialog.sheet{width:100%;max-width:var(--page-w);background:var(--panel);max-height:92dvh;color:var(--ink);border:0;border-radius:18px 18px 0 0;margin:auto auto 0;padding:0}dialog.sheet[open]{flex-direction:column;display:flex}dialog.sheet::backdrop{background:#080a0eb3}.sheet-head{justify-content:space-between;align-items:center;gap:8px;padding:10px 8px 10px 20px;display:flex}.sheet-head h2{letter-spacing:-.02em;outline:none;flex:1;margin:0;font-size:18px;font-weight:600}.sheet-head .icon-btn:first-child{margin-left:-12px}.sheet-head .icon-btn:first-child+h2{text-align:center}.sheet-body{overscroll-behavior:contain;flex:1;padding:0 20px 20px;overflow-y:auto}.sheet-foot{padding:12px 20px calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--hairline);align-items:center;gap:8px;display:flex}.sheet-foot .spacer{flex:1}.field-label{color:var(--graphite);margin:20px 0 8px;font-size:13px;display:block}.segmented{background:var(--night);border-radius:10px;grid-template-columns:repeat(3,1fr);gap:4px;padding:4px;display:grid}.segmented button{height:36px;color:var(--graphite);background:0 0;border:0;border-radius:7px;font-size:13.5px}.segmented [aria-pressed=true]{background:var(--raised-2);color:var(--ink);font-weight:600}.text-input{background:var(--raised);border:0;border-radius:10px;width:100%;height:46px;padding:0 14px;font-size:16px}.text-input::placeholder{color:var(--dim)}.text-input:focus{box-shadow:inset 0 0 0 1.5px var(--graphite);outline:none}.need-list{border-top:1px solid var(--hairline)}.need-row{border-bottom:1px solid var(--hairline);grid-template-columns:32px minmax(0,1fr) 72px 40px;align-items:center;gap:10px;min-height:56px;display:grid}.need-name{word-break:keep-all;font-size:15px}.need-row .num-input{height:38px;font-size:20px}.btn.add-need{width:100%;min-height:46px;margin-top:12px}.form-error{background:color-mix(in srgb, var(--danger) 12%, transparent);color:var(--danger);border-radius:8px;margin:14px 0 0;padding:10px 12px;font-size:13px}.sheet .search{background:var(--panel);margin:0 -20px;padding:0 20px 12px;top:0}.sheet .search:before{left:33px}.sheet .search-clear{right:24px}.picker-group h3{color:var(--graphite);font-family:var(--num);margin:16px 0 8px;font-size:13px;font-weight:600}.picker-grid{grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:14px 6px;display:grid}.picker-item{min-width:0;color:var(--graphite);word-break:keep-all;background:0 0;border:0;flex-direction:column;align-items:center;gap:6px;padding:0;font-size:11.5px;line-height:14px;display:flex}.picker-item .slot{--cut:9px;width:52px;height:52px}.picker-item[aria-pressed=true]{color:var(--ink);font-weight:600}.picker-item[aria-pressed=true] .slot{background:var(--raised-2);box-shadow:none}
