:root{--bg: #120b16;--bg2: #1c1222;--panel: #231829;--card: #2c1f33;--card-hi: #3a2944;--line: #4a3656;--text: #ece4f4;--dim: #a596b4;--gold: #ffd84a;--dust: #9ad8ff;--accent: #ff9a3a;--ok: #5ad45a;--danger: #ff5a6a;--font: "Galmuri11", "Galmuri9", "Courier New", monospace}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font-family:var(--font);font-size:13px}body{overflow:hidden}button,select,input,textarea{font-family:inherit;font-size:inherit;color:inherit}.pix{image-rendering:pixelated}.icon16{width:16px;height:16px;vertical-align:middle}.icon32{width:32px;height:32px;flex:none}.spacer{flex:1}.hint{color:var(--dim);font-size:11px;line-height:1.5;margin:4px 0 8px}.dust{color:var(--dust)}.app{display:flex;flex-direction:column;height:100vh}.topbar{display:flex;align-items:center;gap:16px;padding:8px 16px;background:var(--bg2);border-bottom:2px solid var(--line)}.brand{font-size:15px;color:var(--accent);white-space:nowrap}.brand small{color:var(--dim);font-size:11px}.res{display:flex;align-items:center;gap:14px;flex:1;justify-content:center;font-size:16px}.rate{color:var(--dim);font-size:12px}.icon-btn{background:none;border:0;font-size:18px;cursor:pointer;color:var(--dim)}.gold{color:var(--gold);white-space:nowrap}.coin{display:inline-block;width:8px;height:8px;margin-right:4px;background:var(--gold);box-shadow:inset -2px -2px #c08a10,0 0 0 1px #6a4a00;vertical-align:1px}.main{flex:1;display:flex;min-height:0}.forge-col{flex:0 0 60%;display:flex;flex-direction:column;padding:10px;gap:8px;min-width:0}.forge-host{flex:1;min-height:200px;display:flex;align-items:center;justify-content:center;overflow:hidden;background:#0c070e;border:2px solid var(--line)}.forge-canvas{image-rendering:pixelated;display:block;touch-action:manipulation}.tip{margin:0;color:var(--dim);font-size:11px;text-align:center}.log{list-style:none;margin:0;padding:6px 10px;background:var(--panel);border:2px solid var(--line);min-height:112px}.log li{display:flex;align-items:center;gap:8px;height:20px;font-size:12px}.log .star{color:var(--gold);font-size:10px}.log .new{color:#ff5a7a;font-size:10px}.log .stored{color:var(--dust)}.log .empty{color:var(--dim)}.panel{flex:0 0 40%;display:flex;flex-direction:column;min-width:0;border-left:2px solid var(--line);background:var(--panel)}.tabs{display:flex;flex-wrap:wrap;border-bottom:2px solid var(--line)}.tab{position:relative;flex:1;padding:10px 2px;white-space:nowrap;font-size:12px;background:none;border:0;border-right:1px solid var(--line);cursor:pointer;color:var(--dim)}.tab.on{background:var(--card);color:var(--text);box-shadow:inset 0 -3px 0 var(--accent)}.tab.locked-tab{color:#6a5a76}.tab .dot{position:absolute;top:6px;right:6px;width:6px;height:6px;background:var(--accent)}.panel-body{flex:1;overflow-y:auto;padding:10px}.subtabs{display:flex;gap:4px;margin-bottom:8px;align-items:center;flex-wrap:wrap}.subtab,.buymode button{padding:5px 10px;background:var(--card);border:1px solid var(--line);cursor:pointer;color:var(--dim)}.subtab.on,.buymode button.on{color:var(--text);border-color:var(--accent);background:var(--card-hi)}.buymode{display:flex;gap:2px}.card-list{display:flex;flex-direction:column;gap:6px}.card{display:flex;gap:10px;align-items:center;padding:8px 10px;background:var(--card);border:2px solid var(--line)}.card.can{border-color:#c89a50;background:var(--card-hi)}.card.maxed{opacity:.6}.card-main{flex:1;min-width:0}.card-title{font-size:13px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.card-title .lv{color:var(--dim);font-size:11px}.card-desc{color:var(--dim);font-size:11px;margin-top:3px;line-height:1.4}.card-compare{color:#b8f0a0;font-size:11px;margin-top:3px}.buy{min-width:96px;padding:8px;background:#3e2c1a;border:2px solid #8a6430;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:2px}.buy:disabled{background:#241a28;border-color:var(--line);cursor:default}.buy:disabled .gold{color:#9a8a5a}.buy small{font-size:10px;color:var(--dim)}.buy .eta{color:#8a7a96}.buy.small{min-width:0;flex-direction:row;padding:5px 8px;font-size:11px}.anvil-card .row{margin-top:4px}.anvil-ups{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}.row{display:flex;align-items:center;gap:8px;font-size:12px;margin:4px 0}select,input[type=number],textarea{background:var(--bg2);border:1px solid var(--line);padding:4px 6px}input[type=number]{width:70px}textarea{width:100%;resize:vertical;margin:6px 0;font-size:11px}.btn{padding:6px 12px;background:var(--card-hi);border:2px solid var(--line);cursor:pointer}.btn:disabled{opacity:.45;cursor:default}.btn.small{padding:4px 8px;font-size:11px}.btn.primary{border-color:var(--accent);background:#4a2e18}.btn.danger{border-color:var(--danger);background:#4a1a22}.btn.on{border-color:var(--dust)}.btn-row{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}.grade-table table{width:100%;border-collapse:collapse;font-size:11px;margin-top:6px}.grade-table th,.grade-table td{padding:2px 4px;text-align:right;border-bottom:1px solid var(--line)}.grade-table th:first-child,.grade-table td:first-child{text-align:left}.locked{text-align:center;padding:48px 16px;color:var(--dim)}.locked-q{font-size:36px;color:#5a4a66;letter-spacing:4px}.locked-title{font-size:15px;margin:8px 0;color:var(--text)}.locked-hint{font-size:12px}.ws-head{display:flex;justify-content:space-between;align-items:center;gap:8px}.target-tag{margin-left:8px;color:var(--dust);font-size:11px}.set-group{margin-top:12px;display:flex;flex-direction:column;gap:6px}.set-title{font-size:13px;color:var(--accent)}.set-title small{color:var(--dim);font-size:11px;margin-left:6px}.set-title.done{color:var(--ok)}.acc.owned{opacity:.75;border-color:#3a6a3a}.acc.target{border-color:var(--dust)}.badge{font-size:10px;color:var(--ok);border:1px solid var(--ok);padding:0 4px}.recipe{list-style:none;padding:0;margin:4px 0 0;font-size:11px;color:var(--dim)}.recipe li{display:flex;align-items:center;gap:4px}.recipe li b{color:var(--text)}.recipe li.ok{color:var(--ok)}.acc-btns{display:flex;flex-direction:column;gap:4px}.codex-head{margin-bottom:6px}.codex-grid{border-collapse:collapse;width:100%}.codex-grid th{font-size:10px;font-weight:400;padding:2px;text-align:center}.codex-grid tbody th{text-align:left;color:var(--dim);white-space:nowrap;font-size:11px}.codex-grid tr.complete th{color:var(--ok)}.codex-grid td{padding:2px;text-align:center}.cell{position:relative;width:36px;height:36px;margin:0 auto;display:flex;align-items:center;justify-content:center;background:var(--bg2);border:1px solid var(--line)}.cell img{width:32px;height:32px}.cell.empty{color:#4a3a56}.cell .star5{position:absolute;right:1px;top:-2px;color:var(--gold);font-size:9px}.prestige-box{border-color:#4a6a9a}.prestige-btn{border-color:#4a8ac8;background:#1a2a44;color:var(--dust)}.altar-head{margin:14px 0 6px;font-size:14px}.altar-head small{color:var(--dim);font-size:10px}.altar{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.branch{display:flex;flex-direction:column;gap:6px}.branch-title{color:var(--dust)}.node{padding:6px 8px;background:var(--card);border:2px solid var(--line)}.node.can{border-color:#4a8ac8}.node.maxed{opacity:.65}.node.locked-node{opacity:.5}.node-name{font-size:12px}.node-name .lv{color:var(--dim);font-size:10px}.node-desc{font-size:10px;color:var(--dim);margin:3px 0 5px;line-height:1.4}.auto-settings{margin-top:10px}.ach{padding:6px 8px;margin-bottom:4px;background:var(--card);border:1px solid var(--line)}.ach.done{border-color:#6a5a20}.ach-name{font-size:12px}.ach-desc{font-size:10px;color:var(--dim)}.bar{height:4px;background:var(--bg2);margin-top:4px}.bar div{height:100%;background:var(--accent)}.settings section{margin-bottom:16px}.settings h4{margin:0 0 6px;color:var(--accent);font-weight:400}.stats{margin:0;padding-left:16px;color:var(--dim);font-size:12px;line-height:1.7}.toasts{position:fixed;top:52px;right:12px;display:flex;flex-direction:column;gap:6px;z-index:20;pointer-events:none}.toast{padding:8px 12px;background:var(--card-hi);border:2px solid var(--line);font-size:12px;animation:toast-in .2s ease-out;max-width:320px}.toast.new{border-color:#ff5a7a}.toast.ach{border-color:var(--gold)}.toast.craft{border-color:var(--ok)}.toast.warn{border-color:var(--danger)}@keyframes toast-in{0%{transform:translate(20px);opacity:0}to{transform:none;opacity:1}}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#08040ab3;display:flex;align-items:center;justify-content:center;z-index:30;padding:16px}.modal{display:flex;flex-direction:column;background:var(--panel);border:3px solid var(--accent);min-width:280px;max-width:420px;max-height:calc(100vh - 32px)}.modal.wide{width:620px;max-width:100%}.modal-head{flex:none;display:flex;align-items:center;gap:12px;padding:10px 12px 10px 20px;background:var(--card);border-bottom:2px solid var(--line)}.modal-head h3{flex:1;margin:0;font-weight:400;color:var(--accent);font-size:15px}.modal-x{flex:none;width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:#3a1c24;border:2px solid #8a4a56;color:#ffd0d8;font-size:16px;line-height:1;cursor:pointer}.modal-x:hover{background:#5a2430;border-color:var(--danger);color:#fff}.modal-body{flex:1;overflow-y:auto;padding:14px 20px}.modal-foot{flex:none;display:flex;justify-content:flex-end;gap:6px;padding:10px 20px;border-top:2px solid var(--line)}.top-btns{display:flex;gap:4px}.top-btn{display:flex;align-items:center;gap:4px;padding:5px 8px;background:var(--card);border:2px solid var(--line);cursor:pointer;font-size:12px;white-space:nowrap}.top-btn:hover{border-color:var(--accent)}.top-btn .ico{font-size:13px}.buy{-webkit-user-select:none;user-select:none;touch-action:manipulation}.buy.off{background:#241a28;border-color:var(--line);cursor:default}.buy.off .gold{color:#9a8a5a}.filter-bar{display:flex;gap:4px;margin:6px 0 8px;flex-wrap:wrap}.forge-summary{display:flex;flex-wrap:wrap;gap:4px 14px;padding:8px 10px;background:var(--card);border:2px solid var(--line);font-size:12px;color:var(--dim)}.forge-summary b{color:var(--text)}.mine-pick{display:flex;flex-wrap:wrap;gap:3px;margin:6px 0}.mine-opt{width:34px;height:34px;padding:0;display:flex;align-items:center;justify-content:center;background:var(--bg2);border:2px solid var(--line);cursor:pointer}.mine-opt img{width:32px;height:32px;image-rendering:pixelated}.mine-opt.auto{width:auto;padding:0 8px;font-size:11px;color:var(--dim)}.mine-opt.on{border-color:var(--accent);background:var(--card-hi);color:var(--text);box-shadow:0 0 0 1px var(--accent)}.mine-opt:hover{border-color:#c89a50}.anvil-stats{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:11px;color:var(--dim)}.info h4,.grade-table h4{margin:0 0 6px;color:var(--accent);font-weight:400}.info-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px 18px;margin-bottom:14px}.info-grid table{width:100%;border-collapse:collapse;font-size:11px}.info-grid th{text-align:left;font-weight:400;color:var(--dim);padding:2px 6px 2px 0;white-space:nowrap}.info-grid td{text-align:right;padding:2px 0;border-bottom:1px solid var(--line)}@media(max-width:620px){.info-grid{grid-template-columns:1fr}}.dev-btn{padding:4px 8px;background:#3a1420;border:2px dashed var(--danger);color:#ff9aa6;cursor:pointer;font-size:11px;white-space:nowrap}.help section{margin-bottom:14px}.help h4{margin:0 0 6px;color:var(--accent);font-weight:400}.help ol,.help ul{margin:0;padding-left:18px;line-height:1.7;font-size:12px}.help .formula{font-size:12px;color:#b8f0a0;margin:4px 0 8px}.help-tables{display:flex;gap:16px;flex-wrap:wrap}.help-tables table{border-collapse:collapse;font-size:11px}.help-tables th,.help-tables td{padding:2px 8px;border-bottom:1px solid var(--line);text-align:left}.help-tables .star{color:var(--gold)}.gem-row{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:12px}.big-gold{font-size:22px;color:var(--gold);margin:8px 0}@media(max-width:820px){body{overflow:auto}.app{height:auto;min-height:100vh}.topbar{padding:8px;gap:8px}.brand small,.top-btn .lbl{display:none}.topbar{flex-wrap:wrap}.res{font-size:14px;gap:8px}.main{flex-direction:column}.forge-col{flex:none;padding:8px 16px}.forge-host{min-height:0;aspect-ratio:16 / 9}.log{min-height:0}.panel{flex:none;border-left:0;border-top:2px solid var(--line)}.panel-body{overflow:visible}.tab{flex:1 0 33%}.altar{grid-template-columns:1fr}.cell{width:30px;height:30px}.cell img{width:24px;height:24px}}
