:root{color-scheme:dark;--bg:var(--c-101311);--panel:var(--c-191d19);--line:var(--c-30362e);--muted:var(--c-929c8f);--accent:var(--c-bef477);--text:var(--c-edf0e8)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:16px Manrope,-apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif}button,input,select{font:inherit}button,select{cursor:pointer}button{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.sidebar{position:fixed;width:228px;inset:0 auto 0 0;border-right:1px solid var(--line);padding:36px 22px;display:flex;flex-direction:column;background:var(--c-e8d7b0)}.brand{text-decoration:none;display:flex;gap:12px;color:var(--accent);align-items:center;font-size:42px;font-weight:800}.brand>span{font-size:22px;color:var(--text);letter-spacing:1px}.brand small{display:block;font-size:12px;letter-spacing:4px;color:var(--muted);margin-top:5px}.lime{color:var(--accent)}.nav-label{margin:60px 12px 20px;font-size:12px;color:var(--c-8d7c5e);letter-spacing:1px}nav button{width:100%;display:flex;align-items:center;gap:13px;background:none;border:0;padding:15px 14px;margin-bottom:9px;text-align:left;border-radius:7px;color:var(--muted)}nav button.active{color:var(--accent);background:var(--c-e9d9b7)}nav button:hover{background:var(--c-f8efdc)}.side-note{margin-top:auto;font-size:13px;line-height:1.8;padding:16px 10px}.side-note>div{border-top:1px solid var(--line);padding-top:18px;color:var(--c-8d7c5e)}.side-note>div span{float:right}.workspace{margin-left:228px}header{height:82px;border-bottom:1px solid var(--line);padding:0 40px;display:flex;align-items:center;justify-content:space-between;font-size:14px}.breadcrumb{color:var(--muted)}.breadcrumb span{margin:0 15px;color:var(--c-8d7c5e)}.breadcrumb b{color:var(--text);font-weight:500}.market-switch{display:flex;align-items:center;gap:14px;color:var(--muted)}select,input{background:var(--c-f8efdc);color:var(--text);border:1px solid var(--c-c8b184);border-radius:6px;padding:10px 12px}main{max-width:1500px;margin:auto;padding:39px 40px 20px}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:20px}.page-heading .snapshot{color:var(--c-8d7c5e);font-size:12px}p{color:var(--muted);line-height:1.6}.demo-badge{font-size:12px;border:1px solid var(--c-c8b184);border-radius:30px;padding:8px 12px;color:var(--c-6f5f45);white-space:nowrap}.snapshot{margin-left:auto;white-space:nowrap}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:28px}.stat{border:1px solid var(--line);border-radius:9px;padding:20px 22px;background:linear-gradient(120deg,var(--c-f8efdc),var(--c-e8d7b0))}.stat-label{font-size:13px;color:var(--muted);display:flex;justify-content:space-between}.stat strong{display:block;font-size:27px;margin:12px 0 5px;font-weight:600}.stat small{font-size:12px;color:var(--muted)}.content-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(350px,1fr);gap:24px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:10px;overflow:hidden}.panel-head{padding:22px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);gap:12px}h2{font-size:18px;margin:0;font-weight:600}h2 small{font-size:12px;color:var(--muted);margin-left:10px;font-weight:400}.search{width:100%;font-size:14px;padding:12px 14px}.filters{padding:16px 20px;display:flex;gap:10px}.filters select{max-width:135px;font-size:13px}.recipe{display:flex;align-items:center;gap:13px;width:100%;border:0;border-top:1px solid var(--c-d3bd94);background:none;text-align:left;padding:18px 20px;border-left:3px solid transparent}.recipe:hover{background:var(--c-f8efdc)}.recipe.selected{background:var(--c-e9d9b7);border-left-color:var(--accent)}.item-icon{width:44px;height:44px;flex-shrink:0;border:1px solid var(--c-d8c096);background:linear-gradient(140deg,var(--c-e3f1fa),var(--c-f8efdc));border-radius:8px;display:grid;place-items:center;color:var(--c-14618f);font-size:24px}.recipe:nth-child(3n) .item-icon{color:var(--c-14618f);border-color:var(--c-9dc9e4);background:var(--c-e9d9b7)}.recipe-name{font-size:15px;display:block}.meta{font-size:12px;color:var(--muted);margin-top:6px}.recipe-profit{margin-left:auto;text-align:right;font-size:14px;color:var(--accent)}.recipe-profit small{display:block;font-size:12px;color:var(--muted);margin-top:6px}.detail-top{display:flex;gap:14px;align-items:center}.detail-body{padding:22px}.form-row{display:flex;align-items:center;justify-content:space-between;gap:15px;margin:0 0 20px;font-size:14px}.stepper{display:flex;align-items:center}.stepper button{background:var(--c-e9d9b7);border:1px solid var(--c-c8b184);width:35px;height:36px}.stepper input{width:70px;height:36px;border-radius:0;text-align:center;padding:5px}input[type=number]{appearance:textfield;-moz-appearance:textfield}input::-webkit-inner-spin-button{appearance:none}.money{white-space:nowrap;font-variant-numeric:tabular-nums}.money i{font-style:normal;font-size:11px;color:var(--c-14618f);margin:0 4px}.money i.silver{color:var(--c-6f5f45)}.money i.copper{color:var(--c-14618f)}.mini{font-size:12px;color:var(--muted)}table{border-collapse:collapse;width:100%;text-align:left;font-size:14px}th{font-size:12px;color:var(--muted);font-weight:400;padding:12px 0;border-bottom:1px solid var(--line)}td{padding:14px 0;border-bottom:1px solid var(--c-d3bd94)}td input{width:78px;padding:7px;font-size:13px}td .inventory{width:55px}th:last-child,td:last-child{text-align:right}.section-label{font-size:13px;color:var(--muted);margin:20px 0 2px}.totals{background:var(--c-e8d7b0);border:1px solid var(--c-c8b184);border-radius:8px;padding:16px;margin-top:20px}.totals>div{display:flex;justify-content:space-between;margin:9px 0;font-size:13px;color:var(--muted)}.totals .grand{border-top:1px solid var(--c-c8b184);padding-top:15px;margin-top:15px;color:var(--accent);font-size:16px}.primary{background:var(--accent);border:0;color:var(--c-2f2416);border-radius:6px;padding:13px 18px;font-size:14px;font-weight:700}.full{width:100%;margin-top:18px}.secondary{background:var(--c-f8efdc);border:1px solid var(--c-c8b184);color:var(--c-6f5f45);border-radius:6px;padding:10px 14px;font-size:13px}.fineprint{font-size:12px;line-height:1.7;color:var(--c-6f5f45);margin:12px 0 0}.negative{color:var(--c-14618f)!important}.empty{padding:40px;text-align:center;color:var(--muted)}footer{display:flex;justify-content:space-between;color:var(--c-8d7c5e);font-size:11px;letter-spacing:1px;margin-top:32px;padding-top:22px;border-top:1px solid var(--line)}.market-table{padding:0 24px 20px}.market-table td{padding:20px 0}.tag{font-size:12px;padding:5px 8px;background:var(--c-e9d9b7);border-radius:5px;color:var(--c-6f5f45)}.level-controls{display:flex;align-items:end;gap:20px;padding:22px;flex-wrap:wrap}.level-controls label{display:flex;flex-direction:column;gap:10px;font-size:13px;color:var(--muted)}.level-controls input{width:130px}.route{padding:0 24px}.route-row{display:grid;grid-template-columns:90px minmax(0,1fr);gap:20px;padding:22px 0;border-top:1px solid var(--line);align-items:center}.route-range{display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--accent);font-size:18px}.route-row h3{font-size:15px;margin:0 0 7px}.route-row p{font-size:13px;margin:0}.shopping{margin-top:24px;padding:24px}.shopping-list{display:flex;flex-wrap:wrap;gap:12px;margin-top:18px}.shopping-list span{background:var(--c-f8efdc);padding:12px 16px;border-radius:6px;font-size:14px}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:var(--accent);color:var(--c-2f2416);padding:13px 22px;border-radius:8px;display:none;z-index:10}@media(min-width:1450px){main{padding-top:48px}.recipe{padding-top:22px;padding-bottom:22px}}@media(max-width:1100px){.sidebar{width:190px;padding:30px 14px}.workspace{margin-left:190px}main{padding:28px 24px}.content-grid{grid-template-columns:1fr}.page-heading{align-items:start}.demo-badge{display:none}.snapshot{display:none}}@media(max-width:650px){.sidebar{position:static;width:100%;padding:15px}.brand{font-size:29px}.brand>span{font-size:18px}.brand small,.nav-label,.side-note{display:none}nav{display:flex;gap:6px;margin-top:15px}nav button{padding:10px;margin:0;font-size:14px;gap:7px}.workspace{margin:0}header{height:66px;padding:0 18px}.breadcrumb{display:none}.market-switch{width:100%;justify-content:space-between}main{padding:25px 16px}.stats{gap:8px}.stat{padding:14px 10px}.stat strong{font-size:19px}.stat small{font-size:11px}.stat-label{font-size:12px}.content-grid{display:block}.content-grid>.panel+ .panel{margin-top:20px}.detail-body{padding:16px}.panel-head{padding:18px}.market-table{overflow:auto;padding:0 15px}.market-table table{min-width:520px}footer{gap:15px;line-height:1.8}.route-row{grid-template-columns:80px minmax(0,1fr);gap:10px}.route-row>div:last-child{grid-column:2}.level-controls{gap:14px}.level-controls input{width:100px}}
@media(max-width:650px){.stats{grid-template-columns:1fr 1fr}.stat:last-child{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:10px}.stat:last-child strong{margin:0}.stat:last-child small{display:none}.stat{min-width:0}.stat strong{font-size:20px}.search{min-width:0}}
/* Interactive recipe workbench */
.craft-shell{border:1px solid var(--c-c8b184);border-radius:14px;overflow:hidden;background:var(--c-e8d7b0)}.craft-toolbar{padding:22px 24px;display:flex;justify-content:space-between;align-items:center;gap:24px;background:var(--c-f8efdc)}.craft-heading{display:flex;align-items:center;gap:13px}.craft-symbol{font-size:30px;color:var(--c-5a2f96);width:48px;height:48px;display:grid;place-items:center;background:var(--c-e2d3f6);border:1px solid var(--c-8a5fc9);border-radius:12px}.craft-heading h2{font-size:19px}.craft-heading div>span{font-size:10px;color:var(--c-6f5f45);letter-spacing:2px;display:block;margin-top:7px}.craft-controls{display:flex;gap:16px;align-items:end}.craft-controls label{font-size:12px;color:var(--c-6f5f45);display:flex;gap:8px;align-items:center}.craft-controls input{width:75px}.craft-controls select{max-width:170px}.craft-strip{display:flex;gap:20px;padding:13px 24px;border-top:1px solid var(--c-c8b184);border-bottom:1px solid var(--c-c8b184);color:var(--c-6f5f45);font-size:12px}.craft-strip>span{display:flex;align-items:center;gap:7px}.legend-dot{width:6px;height:6px;border-radius:2px;display:inline-block}.purple{background:var(--c-8a5fc9)}.cyan{background:var(--c-2f9e1f)}.green{background:var(--c-c9a45c)}.craft-hint{margin-left:auto;color:var(--c-8d7c5e)}.craft-body{display:grid;grid-template-columns:minmax(0,1fr) 260px}.craft-viewport{height:570px;position:relative;overflow:hidden;background:radial-gradient(ellipse at 45% 50%,var(--c-f8efdc) 0,var(--c-e8d7b0) 75%);cursor:grab;touch-action:none;isolation:isolate}.craft-viewport.dragging{cursor:grabbing}.craft-grid{position:absolute;inset:0;z-index:-1;background-image:radial-gradient(var(--c-c9b48c65) 1px,transparent 1px);background-size:22px 22px;mask-image:linear-gradient(transparent,var(--c-000) 25%,var(--c-000) 80%,transparent)}.craft-world{position:absolute;transform-origin:0 0;will-change:transform}.craft-edges{position:absolute;overflow:visible;pointer-events:none}.craft-edges path{stroke:var(--c-c0a878);stroke-width:1.6;fill:none;stroke-dasharray:7 5;animation:flow 24s linear infinite}.craft-edges text{fill:var(--c-2f9e1f);font-size:11px;paint-order:stroke;stroke:var(--c-c0a878);stroke-width:5px}.craft-edges .edge-highlight path{stroke:var(--c-c9a45c);stroke-width:2.5;filter:drop-shadow(0 0 4px var(--c-c9a45c66))}.craft-node{position:absolute;width:224px;height:129px;border:1px solid var(--c-a8c894);border-radius:10px;background:linear-gradient(125deg,var(--c-e9d9b7),var(--c-f8efdc));box-shadow:0 8px 24px var(--c-00000044);animation:node-appear .45s both;animation-delay:var(--delay);overflow:hidden;transition:border-color .2s,box-shadow .2s}.craft-node:hover,.craft-node.focused{border-color:var(--c-c9a45c);box-shadow:0 0 0 2px var(--c-c9a45c22),0 0 30px var(--c-6aa84f15);z-index:2}.root-node{border-color:var(--c-8a5fc9);background:linear-gradient(120deg,var(--c-e2d3f6),var(--c-efe6fb))}.make-node{border-color:var(--c-a8c894);background:linear-gradient(120deg,var(--c-dbc79b),var(--c-f8efdc))}.node-main{background:none;border:0;padding:13px 14px 10px;display:block;text-align:left;width:100%}.node-kicker{display:flex;justify-content:space-between;font-size:10px;color:var(--c-6f5f45);text-transform:uppercase;letter-spacing:1px}.node-kicker b{color:var(--c-2b2318);font-size:14px;letter-spacing:0}.root-node .node-kicker{color:var(--c-5a2f96)}.make-node .node-kicker{color:var(--c-1f7a12)}.node-title{display:flex;gap:10px;align-items:center;font-size:16px;font-weight:600;margin:7px 0}.node-title>span{font-size:21px;color:var(--c-8a6a1e);line-height:1}.root-node .node-title>span{color:var(--c-5a2f96)}.make-node .node-title>span{color:var(--c-1f7a12)}.node-caption{color:var(--c-6f5f45);font-size:10px;display:block}.node-mode,.node-bottom{height:28px;padding:6px 14px;font-size:10px;background:var(--c-e8d7b033);border:0;border-top:1px solid var(--c-c8b18420);color:var(--c-6f5f45);width:100%;text-align:left}.node-mode:hover{background:var(--c-c9a45c18);color:var(--c-8a6a1e)}.node-bottom{color:var(--c-6f5f45)}.canvas-actions{position:absolute;bottom:20px;left:20px;display:flex;align-items:center;gap:0;background:var(--c-f8efdceb);border:1px solid var(--c-a8c894);border-radius:8px;box-shadow:0 6px 20px var(--c-00000044);overflow:hidden}.canvas-actions button{padding:10px 13px;background:none;border:0;font-size:14px}.canvas-actions button:hover{background:var(--c-dbc79b)}.canvas-actions span{font-size:12px;min-width:43px;text-align:center;color:var(--c-6f5f45)}.canvas-actions button:last-child{border-left:1px solid var(--c-a8c894);font-size:12px}.craft-inspector{border-left:1px solid var(--c-a8c894);padding:25px 22px;background:linear-gradient(145deg,var(--c-f8efdc),var(--c-f8efdc))}.craft-inspector h3{font-size:20px;margin:17px 0 10px}.craft-inspector p{font-size:13px;color:var(--c-6f5f45);line-height:1.8}.craft-total{padding:23px 0;margin-top:22px;border-top:1px solid var(--c-a8c894);border-bottom:1px solid var(--c-a8c894)}.craft-total>span{font-size:13px;color:var(--c-6f5f45)}.craft-total strong{display:block;color:var(--c-8a6a1e);font-size:33px;font-weight:500;margin:12px 0}.craft-total strong small{font-size:14px}.craft-total>small{font-size:11px;color:var(--c-6f5f45)}.craft-inspector dl{margin:22px 0}.craft-inspector dl>div{display:flex;justify-content:space-between;gap:12px;font-size:13px;margin:16px 0}.craft-inspector dt{color:var(--c-6f5f45)}.craft-inspector dd{margin:0;color:var(--c-6f5f45)}.inspector-tip{font-size:12px;line-height:1.8;color:var(--c-6f5f45);padding:14px;border:1px solid var(--c-a8c894);background:var(--c-e9d9b7);border-radius:7px}.node-price-label{font-size:13px;display:flex;flex-direction:column;gap:10px;color:var(--c-6f5f45)}.craft-shopping{padding:24px;border-top:1px solid var(--c-a8c894);background:var(--c-f8efdc)}.shopping-heading{display:flex;justify-content:space-between;gap:12px;align-items:center}.shopping-heading p{font-size:12px;margin:8px 0 0}.craft-leaves{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin:22px 0}.material-chip{display:flex;align-items:center;gap:13px;background:var(--c-e9d9b7);border:1px solid var(--c-a8c894);padding:15px;text-align:left;border-radius:8px}.material-chip:hover,.material-chip.selected{border-color:var(--c-c9a45c);background:var(--c-e9d9b7)}.chip-icon{font-size:24px;color:var(--c-8a6a1e)}.material-chip b{font-size:14px;font-weight:500}.material-chip small{display:block;font-size:11px;color:var(--c-8a6a1e);margin-top:5px}.material-chip small small{display:inline}.material-chip strong{margin-left:auto;color:var(--c-8a6a1e);font-size:15px}.craft-shell .full{font-size:13px}.craft-shell small{font-weight:400}@keyframes flow{to{stroke-dashoffset:-240}}@keyframes node-appear{from{opacity:0;translate:-12px 0}to{opacity:1;translate:0 0}}@media(prefers-reduced-motion:reduce){.craft-node,.craft-edges path{animation:none}}@media(max-width:1300px){.craft-body{grid-template-columns:minmax(0,1fr) 225px}.craft-toolbar{flex-wrap:wrap}.craft-hint{display:none!important}.craft-controls{flex-wrap:wrap}}@media(max-width:800px){.craft-body{grid-template-columns:1fr}.craft-inspector{border-left:0;border-top:1px solid var(--c-a8c894)}.craft-viewport{height:440px}.craft-inspector .craft-total{margin-top:10px}.craft-inspector dl{display:flex;gap:22px;flex-wrap:wrap}.craft-inspector dl>div{gap:8px}.craft-heading h2{font-size:17px}.craft-toolbar{padding:18px}.craft-controls{gap:12px}.craft-controls label{font-size:12px}.craft-controls label:first-child{width:100%;justify-content:space-between}.craft-controls select{max-width:none}.craft-controls{width:100%}.craft-strip{gap:12px;padding:12px 16px;font-size:11px}.craft-shopping{padding:18px}.shopping-heading{align-items:start}.shopping-heading h2{font-size:16px}.shopping-heading h2 small{display:block;margin:8px 0}.shopping-heading .primary{font-size:12px;white-space:nowrap}.craft-leaves{grid-template-columns:1fr}nav{flex-wrap:wrap}nav button{flex:1 1 40%}}
.canvas-actions{top:18px;bottom:auto;left:auto;right:18px}.craft-viewport{height:520px}@media(max-width:800px){.craft-viewport{height:440px}}
.node-kicker,.node-caption,.node-mode,.node-bottom{font-size:12px;letter-spacing:0}.node-main{padding-top:10px;padding-bottom:7px}.node-title{margin:6px 0}.node-mode,.node-bottom{padding-top:5px}.craft-node{height:136px}
/* Original Warcraft item artwork, stored locally. */
.wow-icon{width:44px;height:44px;flex-shrink:0;object-fit:cover;border:1px solid var(--c-c9a45c);border-radius:6px;box-shadow:0 0 0 1px var(--c-6aa84f),inset 0 0 8px var(--c-00000088),0 3px 10px var(--c-00000077);vertical-align:middle;transition:transform .22s,box-shadow .22s;image-rendering:auto}.node-title{gap:10px;margin:5px 0}.node-title .wow-icon{width:40px;height:40px}.node-title .node-item-name{font-size:15px;color:var(--c-2b2318);line-height:1.3;text-shadow:0 1px 2px var(--c-000000)}.root-node .wow-icon{border-color:var(--c-8a5fc9);box-shadow:0 0 0 1px var(--c-8a5fc9),0 0 16px var(--c-8a5fc944)}.make-node .wow-icon{border-color:var(--c-2f9e1f)}.craft-node:hover .wow-icon,.material-chip:hover .wow-icon{transform:scale(1.09);box-shadow:0 0 15px var(--c-c9a45c44)}.craft-node{height:144px;background:linear-gradient(125deg,var(--c-e9d9b7ee),var(--c-f8efdcfa));border-color:var(--c-c9a45c)}.root-node{background:linear-gradient(125deg,var(--c-e2d3f6),var(--c-efe6fb));border-color:var(--c-8a5fc9)}.make-node{background:linear-gradient(125deg,var(--c-dbc79b),var(--c-f8efdc));border-color:var(--c-2f9e1f)}.node-main{padding:10px 12px 7px}.node-caption{font-size:11px;white-space:nowrap}.node-mode,.node-bottom{font-size:11px;height:26px}.craft-product-icon{padding:0;background:none;border:0}.craft-product-icon .wow-icon{width:48px;height:48px;border-color:var(--c-c9a45c)}.inspector-item{display:flex;align-items:center;gap:12px;margin:22px 0}.inspector-item .wow-icon{width:56px;height:56px}.inspector-item h3{margin:0;font-size:18px;color:var(--c-8a6a1e);line-height:1.4}.material-chip .wow-icon{width:42px;height:42px}.item-icon{border:0;background:none!important;padding:0}.item-icon .wow-icon{width:44px;height:44px}.item-with-icon{display:flex;align-items:center;gap:10px}.item-with-icon .wow-icon{width:32px;height:32px}.detail-body td .item-with-icon .wow-icon{width:24px;height:24px}.craft-viewport{background:radial-gradient(ellipse at 45% 50%,var(--c-e9d9b74d) 0,var(--c-e8d7b0) 75%)}@media(prefers-reduced-motion:reduce){.wow-icon{transition:none}}@media(max-width:650px){.detail-body td .item-with-icon{gap:5px}.detail-body td .item-with-icon .wow-icon{width:20px;height:20px}}

/* ── 配方实验室 v2：混合采购 + 活体画布 ───────────────────────── */
.craft-node{width:232px;height:152px;animation-fill-mode:backwards;transition:left .35s cubic-bezier(.22,.61,.36,1),top .35s cubic-bezier(.22,.61,.36,1),border-color .2s,box-shadow .2s,opacity .25s,filter .25s}
.craft-node.dragging{transition:none;z-index:6;box-shadow:0 22px 44px var(--c-000000a6);cursor:grabbing}
.craft-node.hot{border-color:var(--c-c9a45c);box-shadow:0 0 0 2px var(--c-c9a45c33),0 0 36px var(--c-6aa84f36)}
.craft-node.cold{opacity:.28;filter:saturate(.4)}
.craft-world.no-anim .craft-node{animation:none}
.craft-world.camera{transition:transform .5s cubic-bezier(.22,.61,.36,1)}
.craft-viewport.dragging-node{cursor:grabbing}
.bought-node{border-color:var(--c-c9a45c);background:linear-gradient(125deg,var(--c-e3f1fa),var(--c-e3f1fa))}
.bought-node .node-kicker{color:var(--c-14618f)}
.bought-node .node-bottom{color:var(--c-14618f)}
.leaf-node .node-bottom{color:var(--c-1f7a12)}
.node-caption{display:flex;justify-content:space-between;align-items:center;gap:8px}
.save{font-style:normal;font-size:10px;color:var(--c-14618f);white-space:nowrap;background:var(--c-c9a45c1a);border-radius:4px;padding:1px 6px}
.save.even{color:var(--c-6f5f45);background:var(--c-3a2c100f)}
.node-switch{display:flex;height:30px;border-top:1px solid var(--c-c8b18420);background:var(--c-e8d7b033)}
.node-switch .seg{flex:1;border:0;background:none;color:var(--c-6f5f45);font-size:11px;letter-spacing:1px;cursor:pointer;transition:background .18s,color .18s}
.node-switch .seg+.seg{border-left:1px solid var(--c-c8b1841f)}
.node-switch .seg:hover{background:var(--c-c9a45c20);color:var(--c-8a6a1e)}
.node-switch .seg.on{background:var(--c-c9a45c2b);color:var(--c-8a6a1e);font-weight:600}
.node-switch .seg.on.buy{background:var(--c-c9a45c2e);color:var(--c-14618f)}
.edge-pulse{fill:var(--c-c9a45c);opacity:.9;filter:drop-shadow(0 0 4px var(--c-c9a45caa))}
.edge.hot .edge-line{stroke:var(--c-c9a45c);stroke-width:2.6;stroke-dasharray:none;filter:drop-shadow(0 0 5px var(--c-c9a45c66))}
.edge.hot .edge-pulse{fill:var(--c-c9a45c)}
.edge.cold .edge-line{stroke:var(--c-c0a878);opacity:.55}
.edge.cold .edge-pulse,.edge.cold text{opacity:0}
.strategy-group{margin-left:auto;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.chip{border:1px solid var(--c-a8c894);background:var(--c-f8efdc);color:var(--c-6f5f45);border-radius:999px;padding:6px 13px;font-size:11px;cursor:pointer;transition:background .2s,border-color .2s,color .2s,box-shadow .2s}
.chip:hover{border-color:var(--c-c9a45c);color:var(--c-8a6a1e)}
.chip.on{background:var(--c-c9a45c24);border-color:var(--c-c9a45c);color:var(--c-8a6a1e);box-shadow:0 0 14px var(--c-c9a45c26)}
.chip.custom{border-style:dashed;color:var(--c-14618f);border-color:var(--c-c9a45c)}
.compare{margin:14px 0;padding:11px 13px;border:1px solid var(--c-a8c894);background:var(--c-f8efdc);border-radius:7px;font-size:12px;color:var(--c-6f5f45)}
.compare.save-money{border-color:var(--c-c9a45c);background:var(--c-e3f1fa);color:var(--c-14618f)}
.compare b{color:var(--c-8a6a1e)}
.craft-steps{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin:0 0 18px;padding-top:16px;border-top:1px dashed var(--c-a8c894)}
.steps-label{font-size:11px;color:var(--c-6f5f45);letter-spacing:1px}
.step-chip{display:inline-flex;align-items:center;gap:7px;font-size:12px;color:var(--c-6f5f45);background:var(--c-e9d9b7);border:1px solid var(--c-a8c894);border-radius:7px;padding:6px 11px}
.step-chip b{color:var(--c-8a6a1e)}
@media(prefers-reduced-motion:reduce){.edge-pulse{display:none}.craft-world.camera,.craft-node{transition:none}}
@media(max-width:1300px){.strategy-group{margin-left:0;width:100%}}
@media(max-width:800px){.craft-strip{flex-wrap:wrap;gap:10px}.chip{padding:6px 10px;font-size:10px}.node-caption{flex-wrap:wrap}}
@keyframes node-pop{from{translate:-10px 0}to{translate:0 0}}
.craft-node{animation-name:node-pop;animation-duration:.34s;animation-timing-function:cubic-bezier(.22,.61,.36,1);animation-fill-mode:backwards}
.craft-viewport{user-select:none}
.craft-viewport{height:640px}
@media(max-width:800px){.craft-viewport{height:460px}}

/* ── 成本构成条 ───────────────────────────────────────────── */
.cost-bar-wrap{margin:4px 0 20px}
.cost-bar-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:12px;color:var(--c-6f5f45);margin-bottom:10px}
.cost-bar-head small{font-size:11px;color:var(--c-6f5f45)}
.cost-bar{display:flex;gap:2px;height:28px;border-radius:8px;overflow:hidden;background:var(--c-e8d7b0);box-shadow:inset 0 0 0 1px var(--c-6aa84f)}
.cost-seg{border:0;padding:0;cursor:pointer;flex:none;min-width:12px;display:grid;place-items:center;background:linear-gradient(180deg,var(--c-6aa84f),var(--c-6aa84f));animation:seg-in .5s backwards;transition:filter .2s,box-shadow .2s}
.cost-seg:nth-child(2){background:linear-gradient(180deg,var(--c-2ba7df),var(--c-2ba7df))}
.cost-seg:nth-child(3){background:linear-gradient(180deg,var(--c-c9a45c),var(--c-c9a45c))}
.cost-seg:nth-child(4){background:linear-gradient(180deg,var(--c-8a5fc9),var(--c-8a5fc9))}
.cost-seg:nth-child(5){background:linear-gradient(180deg,var(--c-2f9e1f),var(--c-2f9e1f))}
.cost-seg.rest{background:linear-gradient(180deg,var(--c-c9b48c),var(--c-dbc79b))}
.cost-seg:hover{filter:brightness(1.3);box-shadow:inset 0 0 0 1px var(--c-c9a45caa)}
.cost-seg span{font-size:10px;font-weight:700;color:var(--c-2f2416);opacity:0;transition:opacity .2s}
.cost-seg:hover span{opacity:.95}
.cost-legend{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:10px;font-size:11px;color:var(--c-6f5f45)}
.cost-legend b{color:var(--c-8a6a1e);font-weight:500}
@keyframes seg-in{from{transform:scaleY(.15);opacity:0}to{transform:scaleY(1);opacity:1}}
/* ── 差额金币飞行 ─────────────────────────────────────────── */
.cost-fly{position:fixed;z-index:99;pointer-events:none;transform:translate(-50%,-50%);transition:transform .72s cubic-bezier(.3,.75,.2,1),opacity .58s ease-in .14s;font-size:13px;font-weight:600;padding:4px 11px;border-radius:999px;background:var(--c-f8efdc);border:1px solid var(--c-c9a45c);color:var(--c-8a6a1e);box-shadow:0 10px 24px var(--c-00000080)}
.cost-fly.cost{border-color:var(--c-c9a45c);background:var(--c-e3f1fa);color:var(--c-14618f)}
@media(prefers-reduced-motion:reduce){.cost-seg{animation:none}}
@media(max-width:800px){.cost-bar{height:24px}.cost-legend{gap:5px 12px}.cost-fly{font-size:12px}}

/* ── 布局形态切换 ─────────────────────────────────────────── */
.canvas-layouts{position:absolute;bottom:20px;left:20px;display:flex;align-items:center;gap:3px;background:var(--c-f8efdceb);border:1px solid var(--c-a8c894);border-radius:9px;padding:4px 6px;box-shadow:0 6px 20px var(--c-00000070);z-index:3}
.canvas-layouts .layouts-label{font-size:10px;letter-spacing:1px;color:var(--c-6f5f45);padding:0 4px 0 3px}
.canvas-layouts button{border:0;background:none;color:var(--c-6f5f45);font-size:11px;padding:6px 11px;border-radius:6px;cursor:pointer;transition:background .2s,color .2s}
.canvas-layouts button:hover{background:var(--c-dbc79b);color:var(--c-8a6a1e)}
.canvas-layouts button.on{background:var(--c-c9a45c24);color:var(--c-8a6a1e);font-weight:600}
.craft-world.morphing .craft-node,.craft-world.measuring .craft-node{transition:none}
.craft-world.morphing .edge-pulse{opacity:0;transition:opacity .15s}
@media(max-width:800px){.canvas-layouts{top:12px;bottom:auto;left:12px;padding:3px 4px}.canvas-layouts .layouts-label{display:none}.canvas-layouts button{padding:5px 9px;font-size:10px}}

/* ── 自制 / 采购 强对比 ───────────────────────────────────── */
.craft-node::before{content:'';position:absolute;left:0;top:0;bottom:0;width:6px;background:var(--c-c9b48c);opacity:.9;pointer-events:none;z-index:1}
.root-node::before{background:var(--c-8a5fc9)}
.make-node::before{background:var(--c-2f9e1f)}
.bought-node::before,.leaf-node::before{background:var(--c-c9a45c)}
.make-node{border-color:var(--c-2f9e1f);background:linear-gradient(125deg,var(--c-e9d9b7),var(--c-f8efdc))}
.make-node .node-kicker{color:var(--c-1f7a12)}
.bought-node{border-color:var(--c-c9a45c);background:linear-gradient(125deg,var(--c-e3f1fa),var(--c-e3f1fa))}
.leaf-node{border-color:var(--c-c9a45c);background:linear-gradient(125deg,var(--c-e3f1fa),var(--c-e3f1fa))}
.bought-node .node-kicker,.leaf-node .node-kicker{color:var(--c-14618f)}
.bought-node .node-caption,.leaf-node .node-caption{color:var(--c-14618f)}
.bought-node .node-bottom,.leaf-node .node-bottom{color:var(--c-14618f);background:var(--c-c9a45c14)}
.root-node{border-color:var(--c-8a5fc9);background:linear-gradient(120deg,var(--c-e2d3f6),var(--c-efe6fb))}
.node-switch .seg{background:var(--c-e8d7b0a6);color:var(--c-6f5f45)}
.node-switch .seg.on{background:var(--c-2f9e1f);color:var(--c-2f2416);font-weight:700}
.node-switch .seg.on.buy{background:var(--c-c9a45c);color:var(--c-2f2416);font-weight:700}
.node-switch .seg:hover{background:var(--c-3a2c101f);color:var(--c-2b2318)}
.node-switch .seg.on:hover{background:var(--c-2f9e1f);color:var(--c-2f2416)}
.node-switch .seg.on.buy:hover{background:var(--c-c9a45c);color:var(--c-2f2416)}
.legend-dot.amber{background:var(--c-c9a45c)}
.legend-dot.amber-soft{width:8px;height:8px;background:var(--c-6bb3dd);border-radius:3px}
.legend-dot.cyan{background:var(--c-2f9e1f)}
.legend-dot.purple{background:var(--c-8a5fc9)}
.chip.filter{background:var(--c-f8efdc);border-color:var(--c-c8b184);color:var(--c-6f5f45)}
.chip.filter.on{background:var(--c-3a2c101f);border-color:var(--c-c8b184);color:var(--c-2b2318);box-shadow:0 0 14px var(--c-ffffff1a)}
/* ── 采购/自制 二次强化 ─────────────────────────────── */
.leaf-node::before{background:var(--c-c9a45c6b);box-shadow:inset 0 0 0 1px var(--c-c9a45c)}
.bought-node{box-shadow:inset 0 0 0 1px var(--c-c9a45c1f),0 8px 24px var(--c-00000044)}
.mix-badge{margin-left:auto;gap:6px!important}
.mix-badge b{font-weight:600;font-size:11px;padding:3px 9px;border-radius:999px;letter-spacing:.4px;white-space:nowrap}
.mix-badge b.buy{background:var(--c-c9a45c1f);border:1px solid var(--c-c9a45c6b);color:var(--c-14618f)}
.mix-badge b.make{background:var(--c-2f9e1f17);border:1px solid var(--c-2f9e1f59);color:var(--c-1f7a12)}
.mix-badge+.strategy-group{margin-left:6px}
#craft-world.only-buy .craft-node.cold{opacity:.22}
#craft-world.only-buy .craft-node.cold::before{opacity:.35}
/* ── 节点顶部色带：一眼分清自制 / 采购 ───────────────── */
.craft-node::before{width:8px}
.make-node .node-kicker,.bought-node .node-kicker,.leaf-node .node-kicker{margin:-10px -12px 4px;padding:5px 12px 5px 15px;font-weight:700;letter-spacing:.6px}
.make-node .node-kicker{background:linear-gradient(90deg,var(--c-2f9e1f3d),var(--c-2f9e1f0d));color:var(--c-1f7a12)}
.bought-node .node-kicker{background:linear-gradient(90deg,var(--c-c9a45c42),var(--c-c9a45c0d));color:var(--c-14618f)}
.leaf-node .node-kicker{background:linear-gradient(90deg,var(--c-c9a45c26),var(--c-c9a45c00));color:var(--c-14618f)}
.bought-node,.leaf-node{border-color:var(--c-c9a45c80);box-shadow:inset 0 0 0 1px var(--c-c9a45c24),0 8px 26px var(--c-00000055)}
.make-node{border-color:var(--c-2f9e1f8c);box-shadow:inset 0 0 0 1px var(--c-2f9e1f1f),0 8px 26px var(--c-00000055)}
.bought-node:hover,.leaf-node:hover{border-color:var(--c-c9a45c)}
.make-node:hover{border-color:var(--c-2f9e1f)}
.bought-node .node-bottom,.leaf-node .node-bottom{background:var(--c-c9a45c24);color:var(--c-14618f);font-weight:600}
/* ── 分栏布局表头 ─────────────────────────────────── */
.group-head{position:absolute;width:224px;box-sizing:border-box;font-size:11px;font-weight:700;letter-spacing:2px;color:var(--c-6f5f45);padding-bottom:8px;border-bottom:1px solid var(--c-a8c894);display:flex;align-items:center;gap:8px;pointer-events:none}
.group-head span{font-weight:400;font-size:10px;letter-spacing:0;color:var(--c-1f7a12);background:var(--c-f8efdc);border:1px solid var(--c-a8c894);border-radius:999px;padding:1px 7px}
.group-head[data-col="0"]{color:var(--c-5a2f96);border-bottom-color:var(--c-8a5fc9)}
.group-head[data-col="1"]{color:var(--c-1f7a12);border-bottom-color:var(--c-2f9e1f59)}
.group-head[data-col="2"]{color:var(--c-14618f);border-bottom-color:var(--c-c9a45c59)}
.group-band{position:absolute;border-radius:18px;pointer-events:none;background:linear-gradient(180deg,var(--c-3a2c1008),var(--c-3a2c1002));border:1px solid var(--c-c8b18412)}
.group-band[data-col="0"]{background:linear-gradient(180deg,var(--c-8a5fc914),var(--c-8a5fc905));border-color:var(--c-8a5fc92e)}
.group-band[data-col="1"]{background:linear-gradient(180deg,var(--c-2f9e1f12),var(--c-2f9e1f04));border-color:var(--c-2f9e1f2e)}
.group-band[data-col="2"]{background:linear-gradient(180deg,var(--c-c9a45c12),var(--c-c9a45c04));border-color:var(--c-c9a45c2e)}
/* ── 采购优先的明暗层级：要买的亮，自制中间品暗 ─────────── */
.craft-node.make-node:not(.cold):not(.hot):not(.focused):not(.dragging){opacity:.5;filter:saturate(.42) brightness(.94)}
.craft-node.make-node:not(.cold):not(.hot):not(.focused):not(.dragging)::before{opacity:.55}
.craft-node.bought-node:not(.cold),.craft-node.leaf-node:not(.cold){box-shadow:0 0 0 1px var(--c-c9a45c33),0 10px 30px var(--c-00000066),0 0 32px var(--c-c9a45c1f)}
.craft-node.bought-node .node-item-name,.craft-node.leaf-node .node-item-name{color:var(--c-2b2318)}
.craft-node.bought-node .node-caption>span:first-child,.craft-node.leaf-node .node-caption>span:first-child{color:var(--c-14618f);font-weight:600}
.craft-edges .edge.buy-edge text{fill:var(--c-c9a45c)}
.edge.buy-edge:not(.hot):not(.cold) .edge-line{stroke:var(--c-c9a45c9e);stroke-width:2.2;stroke-dasharray:5 6;animation-duration:16s}
.edge.buy-edge:not(.hot):not(.cold) .edge-pulse{fill:var(--c-c9a45c)}
.edge.make-edge:not(.hot) .edge-line{stroke:var(--c-c0a878)}
.legend-dot.cyan-dim{width:8px;height:8px;background:transparent;box-shadow:inset 0 0 0 1.5px var(--c-2f9e1f8c);border-radius:3px}
.mix-badge b.buy{font-size:12px;box-shadow:0 0 14px var(--c-c9a45c26)}
.mix-badge b.make{opacity:.62}
/* ── 目标数量步进器 ───────────────────────────────── */
.craft-controls .qty-stepper{gap:0}
.craft-controls .qty-stepper button{width:34px;height:41px;background:var(--c-e9d9b7);border:1px solid var(--c-a8c894);color:var(--c-6f5f45);font-size:15px;line-height:1;padding:0}
.craft-controls .qty-stepper button:hover{background:var(--c-dbc79b);color:var(--c-2b2318)}
.craft-controls .qty-stepper button:first-child{border-radius:6px 0 0 6px}
.craft-controls .qty-stepper button:last-child{border-radius:0 6px 6px 0}
.craft-controls .qty-stepper input{width:70px;height:41px;text-align:center;border-radius:0;border-left:0;border-right:0;font-variant-numeric:tabular-nums}
.craft-controls .qty-stepper input:focus{border-color:var(--c-c8b184);background:var(--c-f8efdc)}
/* ── 表单聚焦：去掉荧光描边框，改用边框 + 微光 ───────────── */
input:focus-visible,select:focus-visible,textarea:focus-visible{outline:none;outline-offset:0}
input:focus,select:focus{border-color:var(--c-c9a45c);background:var(--c-f8efdc)}
input:focus-visible,select:focus-visible{box-shadow:0 0 0 3px var(--c-c9a45c1f)}
.craft-controls .qty-stepper input:focus-visible{box-shadow:inset 0 0 0 1px var(--c-c9a45c)}
.craft-controls .qty-stepper input:focus{background:var(--c-f8efdc)}

/* ══════════════════════════════════════════════════════════════
   魔兽世界官方配色层：羊皮纸 + 鎏金 + 品牌蓝
   （自动映射后的手工调优，覆盖需要语义区分的地方）
   ══════════════════════════════════════════════════════════════ */
:root{color-scheme:light;--bg:var(--c-e7d6ae);--panel:var(--c-f8efdc);--line:var(--c-cdb68d);--muted:var(--c-6f5f45);--accent:var(--c-c9a45c);--text:var(--c-2b2318);
 --parch:var(--c-f8efdc);--parch2:var(--c-efe1c1);--accent:var(--c-c9a45c);--accent-deep:var(--c-8a6a1e);--accent-line:var(--c-b8933f);
 --buy:var(--c-1f8fc9);--buy-deep:var(--c-12608f);--buy-pale:var(--c-e2f0fa);
 --green:var(--c-2f9e1f);--green-deep:var(--c-1f7a12);--purple:var(--c-8a5fc9);--purple-deep:var(--c-5a2f96);}
body{background:radial-gradient(ellipse at 18% 6%,var(--c-f7eed9) 0,transparent 58%),radial-gradient(ellipse at 88% 94%,var(--c-f0e2c2) 0,transparent 55%),var(--bg)}
.brand,.craft-heading h2,.shopping-heading h2,.panel-head h2,.craft-inspector h3,.route-row h3,.inspector-item h3{font-family:"Friz Quadrata",Georgia,"Songti SC",Palatino,serif;letter-spacing:.3px}
input[type=range]{accent-color:var(--accent)}

/* ── 外壳 ─────────────────────────────────────── */
.sidebar{background:linear-gradient(180deg,var(--c-f3e8cb),var(--c-e6d4ad));border-right-color:var(--c-cbb489);box-shadow:1px 0 0 var(--c-fffaf0) inset}
header{background:var(--c-f4e9cd);border-bottom-color:var(--c-cbb489)}
.breadcrumb span{color:var(--c-b09a6e)}.breadcrumb b{color:var(--c-2b2318)}
.demo-badge{background:var(--c-f3e7c8);border-color:var(--c-c8b184);color:var(--c-7a5a12)}
nav button{color:var(--c-6f5f45)}
nav button:hover{background:var(--c-ede0c0)}
nav button.active{background:var(--c-e9d8b0);color:var(--c-7a5a12);box-shadow:inset 3px 0 0 var(--accent)}

.side-note>div{color:var(--c-8d7c5e)}
select,input{background:var(--c-fdf8ea);border-color:var(--c-cbb489);color:var(--c-2b2318)}
select:focus,input:focus{border-color:var(--accent-line);background:var(--c-fffbf2)}
input:focus-visible,select:focus-visible{box-shadow:0 0 0 3px var(--c-c9a45c33)}
button:focus-visible,a:focus-visible{outline-color:var(--buy)}
.stepper button,.craft-controls .qty-stepper button{background:var(--c-efe1c1);border-color:var(--c-c8b184);color:var(--c-6f5f45)}
.stepper button:hover,.craft-controls .qty-stepper button:hover{background:var(--c-e6d5ae);color:var(--c-2b2318)}
.craft-controls .qty-stepper input:focus-visible{box-shadow:inset 0 0 0 1px var(--c-c8b184)}
.primary{background:linear-gradient(180deg,var(--c-d9b46a),var(--c-bf9743));border:1px solid var(--c-a8842f);color:var(--c-3a2a08)}
.primary:hover{background:linear-gradient(180deg,var(--c-e2c079),var(--c-c9a45c))}
.secondary{background:var(--c-f1e5c7);border-color:var(--c-c8b184);color:var(--c-5d4f38)}
.secondary:hover{background:var(--c-e9dbba);color:var(--c-2b2318)}
.panel{background:var(--panel);border-color:var(--line);box-shadow:0 6px 18px var(--c-4a3a1e14)}
.panel-head{border-bottom-color:var(--c-e0cda6)}
h2 small{color:var(--c-8d7c5e)}
.tag{background:var(--c-efe0bd);color:var(--c-8a6a1e)}
.stat{background:linear-gradient(120deg,var(--c-fbf4e2),var(--c-f2e6c9));border-color:var(--c-d3bd94)}
.stat strong,.lime,.recipe-profit,.money{color:var(--accent-deep)}
.stat small,.stat-label{color:var(--c-6f5f45)}
.negative{color:var(--c-a8412a)!important}
.money i{color:var(--c-a8791f)}.money i.silver{color:var(--c-7b8490)}.money i.copper{color:var(--c-a4551f)}
.item-icon{color:var(--c-a07b2e);border-color:var(--c-c8b184);background:linear-gradient(140deg,var(--c-f7ecd3),var(--c-e9d8b0));box-shadow:inset 0 0 0 1px var(--c-fffaf0)}
.recipe{border-top-color:var(--c-e0cda6)}
.recipe:hover{background:var(--c-f2e7ca)}
.recipe.selected{background:var(--c-f0e3c2);border-left-color:var(--accent)}
.recipe-name{color:var(--c-2b2318)}.meta{color:var(--c-8d7c5e)}
.detail-body{padding:22px}
th{border-bottom-color:var(--c-d3bd94);color:var(--c-6f5f45)}
td{border-bottom-color:var(--c-e2d1aa)}
.totals{background:var(--c-f3e8cb);border-color:var(--c-d3bd94)}
.totals>div{color:var(--c-6f5f45)}
.totals .grand{border-top-color:var(--c-d3bd94);color:var(--c-7a5a12)}
.form-row{color:var(--c-2b2318)}
.fineprint{color:var(--c-8d7c5e)}
footer{color:var(--c-8d7c5e);border-top-color:var(--c-d3bd94)}
.route-row{border-top-color:var(--c-e0cda6)}
.route-range{display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--c-7a5a12)}
.shopping-list span{background:var(--c-f1e5c7)}
.market-table td{border-bottom-color:var(--c-e2d1aa)}
#toast{background:var(--accent);color:var(--c-3a2a08)}
.level-controls label{color:var(--c-6f5f45)}
.shopping{border-top-color:var(--c-d3bd94);background:var(--c-f5ead0)}

/* ── 配方画布 ─────────────────────────────────── */
.craft-shell{background:var(--c-f3e7c9);border-color:var(--c-c8b184)}
.craft-toolbar{background:linear-gradient(180deg,var(--c-fbf4e2),var(--c-f4e8cc))}
.craft-strip{border-top-color:var(--c-e0cda6);border-bottom-color:var(--c-e0cda6);color:var(--c-6f5f45)}
.craft-hint{color:var(--c-8d7c5e)}
.craft-viewport{background:radial-gradient(ellipse at 45% 50%,var(--c-f7eed8) 0,var(--c-e5d2a9) 78%)}
.craft-grid{background-image:radial-gradient(var(--c-c2a97e57) 1px,transparent 1px)}

.canvas-actions{background:var(--c-f8efdced);border-color:var(--c-c8b184);box-shadow:0 6px 18px var(--c-4a3a1e1f)}
.canvas-actions button:hover{background:var(--c-ece0c0)}
.canvas-actions span{color:var(--c-6f5f45)}
.canvas-actions button:last-child{border-left-color:var(--c-d3bd94)}
.canvas-layouts{background:var(--c-f8efdced);border-color:var(--c-c8b184)}
.canvas-layouts .layouts-label{color:var(--c-8d7c5e)}
.canvas-layouts button{color:var(--c-6f5f45)}
.canvas-layouts button:hover{background:var(--c-ece0c0);color:var(--c-2b2318)}
.canvas-layouts button.on{background:linear-gradient(180deg,var(--c-d9b46a),var(--c-bf9743));color:var(--c-3a2a08);font-weight:600}
.group-head{color:var(--c-7a5a12);border-bottom-color:var(--c-b8933f)}
.group-head[data-col="0"]{color:var(--purple-deep);border-bottom-color:var(--c-8a5fc9)}
.group-head[data-col="1"]{color:var(--green-deep);border-bottom-color:var(--c-2f9e1f)}
.group-head[data-col="2"]{color:var(--buy-deep);border-bottom-color:var(--c-1f8fc9)}
.group-head span{background:var(--c-efe1c1);border-color:var(--c-c8b184);color:var(--c-6f5f45)}
.group-band{background:linear-gradient(180deg,var(--c-4a3a1e08),var(--c-4a3a1e02));border-color:var(--c-c8b1844d)}
.group-band[data-col="0"]{background:linear-gradient(180deg,var(--c-8a5fc914),var(--c-8a5fc904));border-color:var(--c-8a5fc93d)}
.group-band[data-col="1"]{background:linear-gradient(180deg,var(--c-2f9e1f12),var(--c-2f9e1f03));border-color:var(--c-2f9e1f38)}
.group-band[data-col="2"]{background:linear-gradient(180deg,var(--c-1f8fc914),var(--c-1f8fc904));border-color:var(--c-1f8fc93d)}
.craft-node{background:linear-gradient(125deg,var(--c-fdf7e8),var(--c-f4e8cc));border-color:var(--c-c8b184);box-shadow:0 6px 16px var(--c-4a3a1e1f)}
.craft-node .node-item-name{color:var(--c-2b2318)}
.craft-node .node-caption,.craft-node .node-caption>span{color:var(--c-6f5f45)}
.craft-node:hover,.craft-node.focused{border-color:var(--accent-line);box-shadow:0 0 0 2px var(--c-c9a45c3d),0 10px 26px var(--c-4a3a1e2e);z-index:2}
.craft-node.hot{border-color:var(--accent);box-shadow:0 0 0 2px var(--c-c9a45c59),0 0 26px var(--c-c9a45c38)}
.craft-node.dragging{box-shadow:0 22px 44px var(--c-4a3a1e59)}
.root-node{border-color:var(--c-8a5fc9);background:linear-gradient(125deg,var(--c-f5eefd),var(--c-eadffb))}
.root-node .node-kicker{color:var(--purple-deep)}
.root-node .node-item-name{color:var(--purple-deep)}
.make-node{border-color:var(--c-8cb972);background:linear-gradient(125deg,var(--c-eef8e8),var(--c-e2f0da))}
.make-node .node-kicker{color:var(--green-deep)}
.bought-node{border-color:var(--c-1f8fc9);background:linear-gradient(125deg,var(--c-e9f5fc),var(--c-d7ebf8))}
.leaf-node{border-color:var(--c-6bb3dd);background:linear-gradient(125deg,var(--c-eff8fd),var(--c-ddedf8))}
.bought-node .node-kicker,.leaf-node .node-kicker{color:var(--buy-deep)}
.bought-node .node-caption>span,.leaf-node .node-caption>span{color:var(--buy-deep)}
.bought-node .node-bottom,.leaf-node .node-bottom{background:var(--c-1f8fc91a);color:var(--buy-deep)}
.make-node .node-bottom{background:var(--c-2f9e1f14);color:var(--green-deep)}
.craft-node::before{background:var(--c-c8b184)}
.root-node::before{background:var(--purple)}
.make-node::before{background:var(--green)}
.bought-node::before{background:var(--buy)}
.leaf-node::before{background:var(--c-6bb3dd)}
.make-node .node-kicker{background:linear-gradient(90deg,var(--c-2f9e1f2b),var(--c-2f9e1f05))}
.bought-node .node-kicker{background:linear-gradient(90deg,var(--c-1f8fc92e),var(--c-1f8fc905))}
.leaf-node .node-kicker{background:linear-gradient(90deg,var(--c-1f8fc91f),var(--c-1f8fc900))}
.node-switch .seg{background:var(--c-4a3a1e14);color:var(--c-6f5f45)}
.node-switch .seg.on{background:var(--green);color:var(--c-fff)}
.node-switch .seg.on.buy{background:var(--buy);color:var(--c-fff)}
.node-switch .seg:hover{background:var(--c-4a3a1e24);color:var(--c-2b2318)}
.node-switch .seg.on:hover{background:var(--c-37b325);color:var(--c-fff)}
.node-switch .seg.on.buy:hover{background:var(--c-2ba7df);color:var(--c-fff)}
.craft-edges path{stroke:var(--c-c2a87c)}
.craft-edges text{fill:var(--c-6f5f45);stroke:var(--c-f4ead2)}
.edge.hot .edge-line{stroke:var(--c-b8860b);stroke-width:2.6;stroke-dasharray:none;filter:drop-shadow(0 0 4px var(--c-b8860b3d))}
.edge .edge-pulse{fill:var(--accent)}
.edge.hot .edge-pulse{fill:var(--c-8a6a1e)}
.edge.buy-edge:not(.hot):not(.cold) .edge-line{stroke:var(--c-1f8fc9b8);stroke-width:2.2;stroke-dasharray:5 6}
.edge.buy-edge:not(.hot):not(.cold) .edge-pulse{fill:var(--c-2ba7df)}
.craft-edges .edge.buy-edge text{fill:var(--buy-deep)}
.edge.make-edge:not(.hot) .edge-line{stroke:var(--c-c2a87c)}
.edge.cold .edge-line{stroke:var(--c-cdbb98);opacity:.5}
.legend-dot.cyan,.legend-dot.cyan-dim{background:transparent;box-shadow:inset 0 0 0 1.5px var(--green)}
.legend-dot.amber{background:var(--buy)}
.legend-dot.amber-soft{background:var(--c-6bb3dd);border-radius:3px}
.legend-dot.purple{background:var(--purple)}
.chip{background:var(--c-f5ebd2);border-color:var(--c-c8b184);color:var(--c-5d4f38)}
.chip:hover{background:var(--c-efe1c1);border-color:var(--accent-line);color:var(--c-2b2318)}
.chip.on{background:linear-gradient(180deg,var(--c-d9b46a),var(--c-bf9743));border-color:var(--c-a8842f);color:var(--c-3a2a08);box-shadow:0 0 0 3px var(--c-c9a45c26);font-weight:600}
.chip.custom{background:var(--c-e9f5fc);border-color:var(--c-1f8fc966);color:var(--buy-deep)}
.chip.filter{background:var(--c-f5ebd2);border-color:var(--c-c8b184);color:var(--c-5d4f38)}
.chip.filter.on{background:linear-gradient(180deg,var(--c-4aa6d6),var(--c-1f8fc9));border-color:var(--c-12608f);color:var(--c-fff);box-shadow:0 0 0 3px var(--c-1f8fc933)}
.mix-badge b.buy{background:var(--c-1f8fc91a);border-color:var(--c-1f8fc966);color:var(--buy-deep);box-shadow:none}
.mix-badge b.make{background:var(--c-2f9e1f12);border-color:var(--c-2f9e1f4d);color:var(--green-deep)}
.save{color:var(--accent-deep);background:var(--c-c9a45c1f)}
.save.even{color:var(--c-6f5f45);background:var(--c-4a3a1e0f)}
.craft-inspector{background:linear-gradient(145deg,var(--c-f9f1de),var(--c-f1e5c6));border-left-color:var(--c-d3bd94)}
.craft-inspector p{color:var(--c-6f5f45)}
.inspector-item h3{color:var(--c-2b2318)}
.craft-total{border-top-color:var(--c-e0cda6);border-bottom-color:var(--c-e0cda6)}
.craft-total strong{color:var(--c-7a5a12)}
.craft-total>span{color:var(--c-6f5f45)}
.craft-total>small{color:var(--c-8d7c5e)}
.craft-inspector dl dt{color:var(--c-6f5f45)}
.craft-inspector dl dd{color:var(--c-2b2318)}
.inspector-tip{background:var(--c-f4e9cb);border-color:var(--c-d3bd94);color:var(--c-6f5f45)}
.node-price-label{color:var(--c-6f5f45)}
.craft-shopping{background:var(--c-f5ead0);border-top-color:var(--c-d3bd94)}
.shopping-heading h2 small{color:var(--c-8d7c5e)}
.material-chip{background:var(--c-f8efdc);border-color:var(--c-c8b184)}
.material-chip:hover,.material-chip.selected{border-color:var(--accent-line);background:var(--c-f2e6c8)}
.material-chip b{color:var(--c-2b2318)}
.material-chip small{color:var(--c-8d7c5e)}
.material-chip strong,.chip-icon{color:var(--c-7a5a12)}
.cost-bar{background:var(--c-e6d5ae);box-shadow:inset 0 0 0 1px var(--c-c8b18480)}
.cost-seg{background:linear-gradient(180deg,var(--c-d9b46a),var(--c-bf9743))}
.cost-seg:nth-child(2){background:linear-gradient(180deg,var(--c-5aa8d6),var(--c-2b86bd))}
.cost-seg:nth-child(3){background:linear-gradient(180deg,var(--c-7fb35f),var(--c-5c9440))}
.cost-seg:nth-child(4){background:linear-gradient(180deg,var(--c-a882d8),var(--c-7f52bd))}
.cost-seg:nth-child(5){background:linear-gradient(180deg,var(--c-5fb3ae),var(--c-3d8c88))}
.cost-seg.rest{background:linear-gradient(180deg,var(--c-cbb68d),var(--c-b5a075))}
.cost-seg:hover{filter:brightness(1.06)}
.step-chip{background:var(--c-efe1c1);color:var(--c-6f5f45);border-color:var(--c-c8b184)}
.compare{background:var(--c-f2e6c8);border-color:var(--c-d3bd94)}
.compare.save-money{background:var(--c-f6eed6)}
.craft-symbol{background:var(--c-efe6fb);border-color:var(--c-8a5fc9);color:var(--purple-deep)}
.craft-heading div>span{color:var(--c-8d7c5e)}
.wow-icon{border-color:var(--accent-line);box-shadow:0 0 0 1px var(--c-e2d0a6),inset 0 0 8px var(--c-4a3a1e12),0 3px 8px var(--c-4a3a1e1f)}
.craft-node:hover .wow-icon,.material-chip:hover .wow-icon{box-shadow:0 0 0 1px var(--c-e2d0a6),0 0 14px var(--c-c9a45c4d)}
.root-node .wow-icon{border-color:var(--purple);box-shadow:0 0 0 1px var(--c-d9c9f5),0 0 14px var(--c-8a5fc933)}
.make-node .wow-icon{border-color:var(--c-8cb972)}
.cost-fly{background:var(--c-fdf6e6);border-color:var(--c-c8b184);color:var(--c-7a5a12);box-shadow:0 8px 22px var(--c-4a3a1e38)}
.cost-fly.cost{background:var(--c-e9f5fc);border-color:var(--c-1f8fc966);color:var(--buy-deep)}

/* 浅色底下的明暗层级微调：自制节点保持可读，但仍明显退后 */
.craft-node.make-node:not(.cold):not(.hot):not(.focused):not(.dragging){opacity:.68;filter:saturate(.62)}
.craft-node.make-node:not(.cold):not(.hot):not(.focused):not(.dragging)::before{opacity:.7}
.craft-node.cold{opacity:.34;filter:saturate(.45)}
#craft-world.only-buy .craft-node.cold{opacity:.3}
.craft-node.make-node .node-kicker,.craft-node.make-node .node-caption>span{color:var(--c-3f6b33)}

/* ════════════════════════════════════════════════════════════════
   终稿 · 官方配色（羊皮纸 + 量金 + 品牌蓝）
   参照《魔兽世界》官方品牌色板：
     羊皮纸 var(--c-ead8b0) / 量金 var(--c-c9a45c) / 量金深 var(--c-8a6a1e)
     品牌蓝 var(--c-0e70aa)（亮部 var(--c-48c8f0)） / 羊皮纸白 var(--c-fffdf6)
   语义只留三条，看颜色就知道哪些要花钱：
     要买（半成品 / 底层原料）→ 纯白卡 + 品牌蓝粗边条 + 呼吸光；最亮
     自制（中间产物）        → 米色卡 + 虚线边 + 灰绿窄条；整体退后
     目标成品                → 秘法紫英雄卡；唯一亮色边框
   ═══════════════════════════════════════════════════════════════ */
:root{
  --parch:var(--c-fffdf6);--parch2:var(--c-f4e9d0);
  --accent:var(--c-c9a45c);--accent-deep:var(--c-8a6a1e);--accent-line:var(--c-b8933f);
  --buy:var(--c-0e70aa);--buy-deep:var(--c-0b5a8c);--buy-pale:var(--c-eaf6fd);--buy-bright:var(--c-48c8f0);
  --green:var(--c-4e7a3c);--green-deep:var(--c-3d6b2e);
  --make-surface:var(--c-f4ead4);--make-surface2:var(--c-ebdfc2);--make-line:var(--c-c0ae88);
  --buy-surface:var(--c-fffefb);--buy-surface2:var(--c-f1f9ff);
}

/* ── 要买：全画布最亮，白卡 + 品牌蓝边条 + 呼吸光 ────────────── */
.craft-node.bought-node,.craft-node.leaf-node{
  background:linear-gradient(160deg,var(--buy-surface),var(--buy-surface2));
  border:1px solid var(--c-9ec9e6);
  box-shadow:0 0 0 1px var(--c-ffffffcc),0 6px 18px var(--c-0e70aa1f),0 0 26px var(--c-48c8f024)}
.craft-node.bought-node:not(.cold),.craft-node.leaf-node:not(.cold){
  box-shadow:0 0 0 1px var(--c-ffffffcc),0 8px 22px var(--c-0e70aa24),0 0 30px var(--c-48c8f02e)}
.craft-node.bought-node::before,.craft-node.leaf-node::before{
  width:6px;opacity:1;background:linear-gradient(180deg,var(--buy),var(--buy-bright));
  animation:buy-breathe 3.2s ease-in-out infinite}
@keyframes buy-breathe{0%,100%{box-shadow:0 0 8px var(--c-48c8f052)}50%{box-shadow:0 0 20px var(--c-48c8f0b3)}}
.craft-world.no-anim .craft-node::before{animation:none}
.craft-node.bought-node .node-kicker,.craft-node.leaf-node .node-kicker{
  background:linear-gradient(90deg,var(--c-0e70aa2e),var(--c-0e70aa00));color:var(--buy-deep)}
.craft-node.bought-node .node-caption,.craft-node.leaf-node .node-caption,
.craft-node.bought-node .node-caption>span,.craft-node.leaf-node .node-caption>span{color:var(--c-0d5f8f)}
.craft-node.bought-node .node-item-name,.craft-node.leaf-node .node-item-name{color:var(--c-123c58)}
.craft-node.bought-node .node-bottom,.craft-node.leaf-node .node-bottom{
  background:var(--c-0e70aa14);color:var(--buy-deep);font-weight:600}
.craft-node.bought-node .wow-icon,.craft-node.leaf-node .wow-icon{
  border-color:var(--c-7fb9dd);box-shadow:0 0 0 1px var(--c-fff),0 2px 8px var(--c-0e70aa33)}

/* ── 自制：米色卡 + 虚线边 + 灰绿窄条，明确退后─────────── */
.craft-node.make-node{
  background:linear-gradient(160deg,var(--make-surface),var(--make-surface2));
  border:1px dashed var(--make-line);box-shadow:0 2px 8px var(--c-4a3a1e14)}
.craft-node.make-node::before{width:4px;background:var(--green);box-shadow:none}
.craft-node.make-node .node-kicker{background:none;color:var(--c-6b7f56)}
.craft-node.make-node .node-caption,.craft-node.make-node .node-caption>span{color:var(--c-7a6a4d)}
.craft-node.make-node .node-item-name{color:var(--c-5c5140)}
.craft-node.make-node .node-bottom{background:var(--c-4a3a1e0f);color:var(--c-6b7f56)}
.craft-node.make-node .wow-icon{border-color:var(--c-b9ae90);box-shadow:0 0 0 1px var(--c-fffdf6),0 1px 4px var(--c-4a3a1e1f)}
.craft-node.make-node:not(.cold):not(.hot):not(.focused):not(.dragging){opacity:.8;filter:saturate(.72)}
.craft-node.make-node:not(.cold):not(.hot):not(.focused):not(.dragging)::before{opacity:.45}

/* ── 目标成品：秘法紫英雄卡 ─────────────────────────── */
.craft-node.root-node{
  background:linear-gradient(160deg,var(--c-fdf9ff),var(--c-f0e4fd));border:1px solid var(--c-a97ce0);
  box-shadow:0 0 0 1px var(--c-ffffffd9),0 8px 22px var(--c-8a5fc92e),0 0 28px var(--c-a335ee26)}
.craft-node.root-node::before{width:6px;opacity:1;background:linear-gradient(180deg,var(--purple),var(--c-c79bf3))}
.craft-node.root-node .node-kicker{background:linear-gradient(90deg,var(--c-8a5fc92b),var(--c-8a5fc900));color:var(--purple-deep)}
.craft-node.root-node .node-item-name{color:var(--purple-deep)}
.craft-node.root-node .node-bottom{background:var(--c-8a5fc914);color:var(--purple-deep);font-weight:600}
.craft-node.root-node .wow-icon{border-color:var(--purple);box-shadow:0 0 0 1px var(--c-fff),0 0 14px var(--c-8a5fc94d)}

/* ── 图例与切换开关跟节点同色，保证图例与画布对得上 ────── */
.legend-dot.cyan-dim{width:9px;height:9px;background:transparent;border:1.5px dashed var(--c-b09c73);box-shadow:none;border-radius:3px}
.legend-dot.amber{background:var(--buy);box-shadow:0 0 8px var(--c-48c8f059)}
.legend-dot.amber-soft{width:9px;height:9px;background:var(--c-6bb3dd);border-radius:3px}
.legend-dot.purple{background:var(--purple);box-shadow:0 0 8px var(--c-8a5fc94d)}
#craft-world.only-buy .craft-node.cold{opacity:.18;filter:grayscale(.45)}
#craft-world.only-buy .craft-node.cold::before{opacity:.28}
.node-switch .seg.on.buy{background:var(--buy-deep)}
.node-switch .seg.on.buy:hover{background:var(--buy)}
.node-title .node-item-name{text-shadow:0 1px 0 var(--c-fffdf6cc)}
.craft-node.bought-node .node-title .node-item-name,.craft-node.leaf-node .node-title .node-item-name{text-shadow:0 1px 0 var(--c-fff)}
@media(prefers-reduced-motion:reduce){.craft-node::before{animation:none!important}}
.edge.buy-edge:not(.hot):not(.cold) .edge-line{stroke:var(--c-0e70aab8)}
.edge.buy-edge:not(.hot):not(.cold) .edge-pulse{fill:var(--buy-bright)}
.craft-edges .edge.buy-edge text{fill:var(--buy-deep)}
.edge.make-edge:not(.hot) .edge-line{stroke:var(--c-c2a87c)}

/* ══════════════════════════════════════════════════════════════════════
   主题令牌 · 配色切换
   令牌名 就是金色配色下的原色值（如 --c-c9a45c = #c9a45c），下文所有颜色都引用它们。
   金色配色（默认）：羊皮纸 + 量金，要买的东西用品牌蓝。
   蓝色配色：[下方为蓝色配色下的替换值] 同一套隐喻反转——面板变秘蓝，该花钱的东西变量金。
   改色只需改下面这两块里对应的值。
   ═════════════════════════════════════════════════════════════════════ */
:root{--c-6f5f45:#6f5f45;--c-c9a45c:#c9a45c;--c-c8b184:#c8b184;--c-f8efdc:#f8efdc;--c-8a6a1e:#8a6a1e;--c-14618f:#14618f;--c-2b2318:#2b2318;--c-a8c894:#a8c894;--c-8d7c5e:#8d7c5e;--c-8a5fc9:#8a5fc9;--c-2f9e1f:#2f9e1f;--c-d3bd94:#d3bd94;--c-e9d9b7:#e9d9b7;--c-1f7a12:#1f7a12;--c-e3f1fa:#e3f1fa;--c-7a5a12:#7a5a12;--c-e0cda6:#e0cda6;--c-e8d7b0:#e8d7b0;--c-fff:#fff;--c-2f2416:#2f2416;--c-6aa84f:#6aa84f;--c-c9a45c1f:#c9a45c1f;--c-dbc79b:#dbc79b;--c-efe1c1:#efe1c1;--c-5a2f96:#5a2f96;--c-1f8fc9:#1f8fc9;--c-2ba7df:#2ba7df;--c-3a2a08:#3a2a08;--c-4a3a1e1f:#4a3a1e1f;--c-bf9743:#bf9743;--c-c0a878:#c0a878;--c-c2a87c:#c2a87c;--c-c9a45c24:#c9a45c24;--c-c9a45c26:#c9a45c26;--c-cbb489:#cbb489;--c-d9b46a:#d9b46a;--c-e2d3f6:#e2d3f6;--c-efe6fb:#efe6fb;--c-00000044:#00000044;--c-1f8fc966:#1f8fc966;--c-2f9e1f12:#2f9e1f12;--c-4a3a1e14:#4a3a1e14;--c-5d4f38:#5d4f38;--c-6bb3dd:#6bb3dd;--c-8a5fc914:#8a5fc914;--c-b8933f:#b8933f;--c-c9a45c33:#c9a45c33;--c-e9f5fc:#e9f5fc;--c-fffdf6:#fffdf6;--c-000:#000;--c-00000055:#00000055;--c-00000066:#00000066;--c-0e70aa:#0e70aa;--c-12608f:#12608f;--c-1f8fc91a:#1f8fc91a;--c-2f9e1f59:#2f9e1f59;--c-2f9e1f8c:#2f9e1f8c;--c-3a2c101f:#3a2c101f;--c-48c8f0:#48c8f0;--c-4a3a1e0f:#4a3a1e0f;--c-6b7f56:#6b7f56;--c-8a5fc92e:#8a5fc92e;--c-8a5fc94d:#8a5fc94d;--c-8cb972:#8cb972;--c-a8842f:#a8842f;--c-b8860b:#b8860b;--c-bef477:#bef477;--c-c8b18420:#c8b18420;--c-c9a45c2e:#c9a45c2e;--c-c9a45c44:#c9a45c44;--c-c9a45c59:#c9a45c59;--c-c9a45c66:#c9a45c66;--c-c9a45c6b:#c9a45c6b;--c-c9a45caa:#c9a45caa;--c-c9b48c:#c9b48c;--c-e2d0a6:#e2d0a6;--c-e2d1aa:#e2d1aa;--c-e6d5ae:#e6d5ae;--c-e8d7b033:#e8d7b033;--c-e9d8b0:#e9d8b0;--c-ece0c0:#ece0c0;--c-f1e5c7:#f1e5c7;--c-f2e6c8:#f2e6c8;--c-f3e8cb:#f3e8cb;--c-f4e8cc:#f4e8cc;--c-f5ead0:#f5ead0;--c-f5ebd2:#f5ebd2;--c-f8efdceb:#f8efdceb;--c-f8efdced:#f8efdced;--c-fbf4e2:#fbf4e2;--c-fffaf0:#fffaf0;--c-ffffffcc:#ffffffcc;--c-000000:#000000;--c-00000070:#00000070;--c-00000077:#00000077;--c-00000080:#00000080;--c-00000088:#00000088;--c-000000a6:#000000a6;--c-0b5a8c:#0b5a8c;--c-0d5f8f:#0d5f8f;--c-0e70aa00:#0e70aa00;--c-0e70aa14:#0e70aa14;--c-0e70aa1f:#0e70aa1f;--c-0e70aa24:#0e70aa24;--c-0e70aa2e:#0e70aa2e;--c-0e70aa33:#0e70aa33;--c-0e70aab8:#0e70aab8;--c-101311:#101311;--c-123c58:#123c58;--c-191d19:#191d19;--c-1f8fc900:#1f8fc900;--c-1f8fc904:#1f8fc904;--c-1f8fc905:#1f8fc905;--c-1f8fc914:#1f8fc914;--c-1f8fc91f:#1f8fc91f;--c-1f8fc92e:#1f8fc92e;--c-1f8fc933:#1f8fc933;--c-1f8fc93d:#1f8fc93d;--c-1f8fc9b8:#1f8fc9b8;--c-2b86bd:#2b86bd;--c-2f9e1f03:#2f9e1f03;--c-2f9e1f04:#2f9e1f04;--c-2f9e1f05:#2f9e1f05;--c-2f9e1f0d:#2f9e1f0d;--c-2f9e1f14:#2f9e1f14;--c-2f9e1f17:#2f9e1f17;--c-2f9e1f1f:#2f9e1f1f;--c-2f9e1f2b:#2f9e1f2b;--c-2f9e1f2e:#2f9e1f2e;--c-2f9e1f38:#2f9e1f38;--c-2f9e1f3d:#2f9e1f3d;--c-2f9e1f4d:#2f9e1f4d;--c-30362e:#30362e;--c-37b325:#37b325;--c-3a2c1002:#3a2c1002;--c-3a2c1008:#3a2c1008;--c-3a2c100f:#3a2c100f;--c-3d6b2e:#3d6b2e;--c-3d8c88:#3d8c88;--c-3f6b33:#3f6b33;--c-48c8f024:#48c8f024;--c-48c8f02e:#48c8f02e;--c-48c8f033:#48c8f033;--c-48c8f052:#48c8f052;--c-48c8f059:#48c8f059;--c-48c8f0b3:#48c8f0b3;--c-4a3a1e02:#4a3a1e02;--c-4a3a1e08:#4a3a1e08;--c-4a3a1e12:#4a3a1e12;--c-4a3a1e24:#4a3a1e24;--c-4a3a1e2e:#4a3a1e2e;--c-4a3a1e38:#4a3a1e38;--c-4a3a1e59:#4a3a1e59;--c-4aa6d6:#4aa6d6;--c-4e7a3c:#4e7a3c;--c-5aa8d6:#5aa8d6;--c-5c5140:#5c5140;--c-5c9440:#5c9440;--c-5fb3ae:#5fb3ae;--c-6aa84f15:#6aa84f15;--c-6aa84f36:#6aa84f36;--c-7a6a4d:#7a6a4d;--c-7b8490:#7b8490;--c-7f52bd:#7f52bd;--c-7fb35f:#7fb35f;--c-7fb9dd:#7fb9dd;--c-8a5fc900:#8a5fc900;--c-8a5fc904:#8a5fc904;--c-8a5fc905:#8a5fc905;--c-8a5fc92b:#8a5fc92b;--c-8a5fc933:#8a5fc933;--c-8a5fc93d:#8a5fc93d;--c-8a5fc944:#8a5fc944;--c-8d7c5e60:#8d7c5e60;--c-929c8f:#929c8f;--c-9dc9e4:#9dc9e4;--c-9ec9e6:#9ec9e6;--c-a07b2e:#a07b2e;--c-a335ee26:#a335ee26;--c-a4551f:#a4551f;--c-a8412a:#a8412a;--c-a8791f:#a8791f;--c-a882d8:#a882d8;--c-a97ce0:#a97ce0;--c-b09a6e:#b09a6e;--c-b09a6e70:#b09a6e70;--c-b09c73:#b09c73;--c-b5a075:#b5a075;--c-b8860b3d:#b8860b3d;--c-b9ae90:#b9ae90;--c-c0ae88:#c0ae88;--c-c2a97e57:#c2a97e57;--c-c79bf3:#c79bf3;--c-c8b18412:#c8b18412;--c-c8b1841f:#c8b1841f;--c-c8b1844d:#c8b1844d;--c-c8b18480:#c8b18480;--c-c9a45c00:#c9a45c00;--c-c9a45c04:#c9a45c04;--c-c9a45c0d:#c9a45c0d;--c-c9a45c12:#c9a45c12;--c-c9a45c14:#c9a45c14;--c-c9a45c18:#c9a45c18;--c-c9a45c1a:#c9a45c1a;--c-c9a45c20:#c9a45c20;--c-c9a45c22:#c9a45c22;--c-c9a45c2b:#c9a45c2b;--c-c9a45c38:#c9a45c38;--c-c9a45c3d:#c9a45c3d;--c-c9a45c42:#c9a45c42;--c-c9a45c4d:#c9a45c4d;--c-c9a45c80:#c9a45c80;--c-c9a45c9e:#c9a45c9e;--c-c9b48c65:#c9b48c65;--c-cbb68d:#cbb68d;--c-cdb68d:#cdb68d;--c-cdbb98:#cdbb98;--c-d7ebf8:#d7ebf8;--c-d8c096:#d8c096;--c-d9c9f5:#d9c9f5;--c-ddedf8:#ddedf8;--c-e2c079:#e2c079;--c-e2f0da:#e2f0da;--c-e2f0fa:#e2f0fa;--c-e5d2a9:#e5d2a9;--c-e6d4ad:#e6d4ad;--c-e7d6ae:#e7d6ae;--c-e8d7b0a6:#e8d7b0a6;--c-e8d7b0e6:#e8d7b0e6;--c-e9d9b74d:#e9d9b74d;--c-e9d9b7ee:#e9d9b7ee;--c-e9dbba:#e9dbba;--c-ead8b0:#ead8b0;--c-eadffb:#eadffb;--c-eaf6fd:#eaf6fd;--c-ebdfc2:#ebdfc2;--c-ede0c0:#ede0c0;--c-edf0e8:#edf0e8;--c-eef8e8:#eef8e8;--c-efe0bd:#efe0bd;--c-eff8fd:#eff8fd;--c-f0e2c2:#f0e2c2;--c-f0e3c2:#f0e3c2;--c-f0e4fd:#f0e4fd;--c-f1e5c6:#f1e5c6;--c-f1f9ff:#f1f9ff;--c-f2e6c9:#f2e6c9;--c-f2e7ca:#f2e7ca;--c-f3e7c8:#f3e7c8;--c-f3e7c9:#f3e7c9;--c-f4e8ca:#f4e8ca;--c-f4e9cb:#f4e9cb;--c-f4e9cd:#f4e9cd;--c-f4e9d0:#f4e9d0;--c-f4ead2:#f4ead2;--c-f4ead4:#f4ead4;--c-f5eefd:#f5eefd;--c-f6eed6:#f6eed6;--c-f7ecd3:#f7ecd3;--c-f7eed8:#f7eed8;--c-f7eed9:#f7eed9;--c-f7eeda:#f7eeda;--c-f8efdcdf:#f8efdcdf;--c-f8efdcfa:#f8efdcfa;--c-f9f1de:#f9f1de;--c-fdf6e6:#fdf6e6;--c-fdf7e8:#fdf7e8;--c-fdf8ea:#fdf8ea;--c-fdf9ff:#fdf9ff;--c-fffbf2:#fffbf2;--c-fffdf6cc:#fffdf6cc;--c-fffefb:#fffefb;--c-ffffff1a:#ffffff1a;--c-ffffffd9:#ffffffd9;}
:root[data-theme="blue"]{--c-6f5f45:#415a6c;--c-c9a45c:#1b7fb8;--c-c8b184:#83aac5;--c-f8efdc:#e0ecf4;--c-8a6a1e:#0f5480;--c-14618f:#7a5a12;--c-2b2318:#17222a;--c-8d7c5e:#526e81;--c-d3bd94:#93b7d0;--c-e9d9b7:#bed3e2;--c-e3f1fa:#fdf7e8;--c-7a5a12:#1a4a6d;--c-e0cda6:#a5c6dd;--c-e8d7b0:#aecfe6;--c-2f2416:#15232e;--c-c9a45c1f:#1b7fb81f;--c-dbc79b:#9abed8;--c-efe1c1:#c7dbe9;--c-1f8fc9:#9c6f14;--c-2ba7df:#b1841b;--c-3a2a08:#0c2333;--c-4a3a1e1f:#1c36481f;--c-bf9743:#347fb4;--c-c0a878:#5e94bb;--c-c2a87c:#7ca3bf;--c-c9a45c24:#1b7fb824;--c-c9a45c26:#1b7fb826;--c-cbb489:#88aec8;--c-d9b46a:#6aa9d6;--c-1f8fc966:#9c6f1466;--c-4a3a1e14:#1c364814;--c-5d4f38:#354b5a;--c-6bb3dd:#c8a45c;--c-b8933f:#3279ac;--c-c9a45c33:#1b7fb833;--c-e9f5fc:#fdfaf0;--c-fffdf6:#f8fbfd;--c-0e70aa:#8a6515;--c-12608f:#7a5a12;--c-1f8fc91a:#9c6f141a;--c-3a2c101f:#0e27391f;--c-48c8f0:#d9a83c;--c-4a3a1e0f:#1c36480f;--c-a8842f:#246b9e;--c-b8860b:#246798;--c-c8b18420:#83aac520;--c-c9a45c2e:#1b7fb82e;--c-c9a45c44:#1b7fb844;--c-c9a45c59:#1b7fb859;--c-c9a45c66:#1b7fb866;--c-c9a45c6b:#1b7fb86b;--c-c9a45caa:#1b7fb8aa;--c-c9b48c:#8baec6;--c-e2d0a6:#a5c7df;--c-e2d1aa:#a8c9e0;--c-e6d5ae:#accde4;--c-e8d7b033:#aecfe633;--c-e9d8b0:#b8d0e1;--c-ece0c0:#c6d9e6;--c-f1e5c7:#cddfeb;--c-f2e6c8:#cee0ec;--c-f3e8cb:#d1e1ed;--c-f4e8cc:#d2e2ee;--c-f5ead0:#d5e5f0;--c-f5ebd2:#d7e6f0;--c-f8efdceb:#e0ecf4eb;--c-f8efdced:#e0ecf4ed;--c-fbf4e2:#e6f0f8;--c-fffaf0:#f3f8fc;--c-0b5a8c:#6f4f0d;--c-0d5f8f:#755410;--c-0e70aa00:#8a651500;--c-0e70aa14:#8a651514;--c-0e70aa1f:#8a65151f;--c-0e70aa24:#8a651524;--c-0e70aa2e:#8a65152e;--c-0e70aa33:#8a651533;--c-0e70aab8:#8a6515b8;--c-123c58:#3d2f14;--c-1f8fc900:#9c6f1400;--c-1f8fc904:#9c6f1404;--c-1f8fc905:#9c6f1405;--c-1f8fc914:#9c6f1414;--c-1f8fc91f:#9c6f141f;--c-1f8fc92e:#9c6f142e;--c-1f8fc933:#9c6f1433;--c-1f8fc93d:#9c6f143d;--c-1f8fc9b8:#9c6f14b8;--c-2b86bd:#94690f;--c-3a2c1002:#0e273902;--c-3a2c1008:#0e273908;--c-3a2c100f:#0e27390f;--c-3d8c88:#a8842f;--c-48c8f024:#d9a83c24;--c-48c8f02e:#d9a83c2e;--c-48c8f033:#d9a83c33;--c-48c8f052:#d9a83c52;--c-48c8f059:#d9a83c59;--c-48c8f0b3:#d9a83cb3;--c-4a3a1e02:#1c364802;--c-4a3a1e08:#1c364808;--c-4a3a1e12:#1c364812;--c-4a3a1e24:#1c364824;--c-4a3a1e2e:#1c36482e;--c-4a3a1e38:#1c364838;--c-4a3a1e59:#1c364859;--c-4aa6d6:#b1841b;--c-5aa8d6:#b1841b;--c-5c5140:#3d4d59;--c-5fb3ae:#c09a45;--c-7a6a4d:#496376;--c-7b8490:#8d7c5e;--c-7fb9dd:#c8b184;--c-8d7c5e60:#526e8160;--c-9dc9e4:#cdb68d;--c-9ec9e6:#cdb68d;--c-a07b2e:#296c9c;--c-a4551f:#246798;--c-a8791f:#24699b;--c-b09a6e:#5788aa;--c-b09a6e70:#5788aa70;--c-b09c73:#5c89aa;--c-b5a075:#5d8daf;--c-b8860b3d:#2467983d;--c-b9ae90:#8fa6b7;--c-c0ae88:#87a7bd;--c-c2a97e57:#7ea4bf57;--c-c8b18412:#83aac512;--c-c8b1841f:#83aac51f;--c-c8b1844d:#83aac54d;--c-c8b18480:#83aac580;--c-c9a45c00:#1b7fb800;--c-c9a45c04:#1b7fb804;--c-c9a45c0d:#1b7fb80d;--c-c9a45c12:#1b7fb812;--c-c9a45c14:#1b7fb814;--c-c9a45c18:#1b7fb818;--c-c9a45c1a:#1b7fb81a;--c-c9a45c20:#1b7fb820;--c-c9a45c22:#1b7fb822;--c-c9a45c2b:#1b7fb82b;--c-c9a45c38:#1b7fb838;--c-c9a45c3d:#1b7fb83d;--c-c9a45c42:#1b7fb842;--c-c9a45c4d:#1b7fb84d;--c-c9a45c80:#1b7fb880;--c-c9a45c9e:#1b7fb89e;--c-c9b48c65:#8baec665;--c-cbb68d:#8cafc8;--c-cdb68d:#8cb0ca;--c-cdbb98:#97b5ca;--c-d7ebf8:#f6ecd2;--c-d8c096:#95bbd5;--c-ddedf8:#f4e8cc;--c-e2c079:#79b4df;--c-e2f0fa:#f9f1de;--c-e5d2a9:#a7cae3;--c-e6d4ad:#abcce4;--c-e7d6ae:#accde5;--c-e8d7b0a6:#aecfe6a6;--c-e8d7b0e6:#aecfe6e6;--c-e9d9b74d:#bed3e24d;--c-e9d9b7ee:#bed3e2ee;--c-e9dbba:#c1d4e2;--c-ead8b0:#b8d0e2;--c-eaf6fd:#fffdf6;--c-ebdfc2:#c8d9e5;--c-ede0c0:#c6d9e7;--c-efe0bd:#c4d9e8;--c-eff8fd:#fffdf6;--c-f0e2c2:#c8dcea;--c-f0e3c2:#c8dcea;--c-f1e5c6:#ccdeeb;--c-f1f9ff:#fffefb;--c-f2e6c9:#cfe0ec;--c-f2e7ca:#d0e0ec;--c-f3e7c8:#cee0ed;--c-f3e7c9:#cfe1ed;--c-f4e8ca:#d0e2ee;--c-f4e9cb:#d1e2ee;--c-f4e9cd:#d2e3ef;--c-f4e9d0:#d5e4ef;--c-f4ead2:#d7e5ef;--c-f4ead4:#d8e6f0;--c-f6eed6:#dae8f2;--c-f7ecd3:#d8e7f2;--c-f7eed8:#dce9f3;--c-f7eed9:#ddeaf3;--c-f7eeda:#deeaf3;--c-f8efdcdf:#e0ecf4df;--c-f8efdcfa:#e0ecf4fa;--c-f9f1de:#e2edf5;--c-fdf6e6:#e9f3fa;--c-fdf7e8:#ebf4fa;--c-fdf8ea:#edf5fa;--c-fffbf2:#f5f9fc;--c-fffdf6cc:#f8fbfdcc;--c-fffefb:#fcfdfe;}

/* ══════════════════════════════════════════════════════════════════════
   配色切换控件（金 / 蓝）· 颜色全部走上面的主题令牌，两套配色自动跟随
   ══════════════════════════════════════════════════════════════════════ */
.theme-label{font-size:12px;color:var(--c-8d7c5e)}
.market-switch{flex-wrap:wrap}
.theme-switch{display:inline-flex;align-items:center;gap:2px;padding:2px;border:1px solid var(--c-c8b184);border-radius:999px;background:var(--c-f5ebd2)}
.theme-switch button{display:inline-flex;align-items:center;gap:6px;border:0;background:none;border-radius:999px;padding:5px 11px;font-size:12px;letter-spacing:1px;color:var(--c-6f5f45);transition:background .2s,color .2s,box-shadow .2s}
.theme-switch button i{width:9px;height:9px;border-radius:50%;display:inline-block;box-shadow:inset 0 0 0 1px #00000033}
.theme-switch button[data-theme-set="gold"] i{background:linear-gradient(140deg,#f2e2ba,#c9a45c)}
.theme-switch button[data-theme-set="blue"] i{background:linear-gradient(140deg,#7fc4ea,#0e70aa)}
.theme-switch button:hover{color:var(--c-2b2318);background:var(--c-efe1c1)}
.theme-switch button.on{background:linear-gradient(180deg,var(--c-d9b46a),var(--c-bf9743));color:var(--c-3a2a08);font-weight:600;box-shadow:0 0 0 2px #00000012}
@media(max-width:650px){.theme-label{display:none}.theme-switch{order:-1};--c-a8c894:#83aac5;}

/* Progressive recipe selection */
.craft-picker{display:grid;grid-template-columns:160px 160px minmax(140px,1fr) minmax(220px,1.5fr);gap:14px;padding:18px 24px;background:var(--c-f8efdc);border-top:1px solid var(--c-c8b184)}
.craft-picker label{display:flex;flex-direction:column;gap:8px;font-size:12px;color:var(--c-6f5f45);min-width:0}
.craft-picker select,.craft-picker input{width:100%;min-width:0;height:40px;padding:8px 10px;border:1px solid var(--c-c8b184);border-radius:6px;background:var(--c-fbf4e2);color:inherit;font:inherit}
.craft-picker-count{grid-column:1/-1;font-size:12px;color:var(--c-6f5f45)}
@media(max-width:1000px){.craft-picker{grid-template-columns:1fr 1fr}}
@media(max-width:540px){.craft-picker{padding:16px;gap:12px}.craft-picker-product{grid-column:1/-1}.craft-picker label:has(#craft-search){grid-column:1/-1}}
.craft-profession-bar{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:16px;padding:16px 24px;border:1px solid var(--c-c8b184);border-radius:10px;background:var(--c-f8efdc)}
.craft-profession-bar label{font-weight:600;font-size:14px}.craft-profession-bar select{min-width:160px;padding:10px 14px;background:var(--c-fbf4e2);color:inherit;border:1px solid var(--c-c8b184);border-radius:6px;font:inherit}.craft-profession-bar span{font-size:12px;color:var(--c-6f5f45)}

/* Recipe categories expand into their own items; no mixed product dropdown. */
.craft-picker-grouped{grid-template-columns:180px minmax(180px,1fr)}
.recipe-category-list{grid-column:1/-1;max-height:390px;overflow:auto;scrollbar-gutter:stable;padding-right:6px}
.recipe-category{margin:0 0 6px;border:1px solid var(--c-c8b184);border-radius:6px;overflow:hidden}
.recipe-category-title{width:100%;display:flex;align-items:center;gap:12px;padding:12px 16px;text-align:left;background:var(--c-e9d9b7);color:var(--c-8a6a1e);font-size:16px;font-weight:600;border:0}
.recipe-category-title small{margin-left:auto;font-size:12px;color:var(--c-6f5f45)}
.recipe-category-title b{font-size:22px;line-height:1;width:22px;text-align:center}
.recipe-category-items{padding:4px 8px;background:var(--c-fbf4e2)}
.recipe-category-items[hidden]{display:none}
.recipe-choice{width:100%;display:flex;align-items:center;gap:10px;text-align:left;padding:10px;border:1px solid transparent;border-radius:5px;background:transparent;color:inherit}
.recipe-choice>span{flex:1}.recipe-choice small{font-size:12px;color:var(--c-6f5f45);white-space:nowrap}.recipe-choice.selected{border-color:var(--c-c9a45c);background:var(--c-e9d9b7)}
.recipe-choice:hover{background:var(--c-e9d9b7)}.recipe-choice img{width:26px;height:26px}.recipe-group-empty{padding:16px;color:var(--c-6f5f45)}
@media(max-width:540px){.craft-picker-grouped{grid-template-columns:1fr}.recipe-category-list{max-height:340px}}
/* Game-style profession interaction: persistent recipe list and detail pane. */
.profession-workbench{display:grid;grid-template-columns:minmax(300px,.9fr) minmax(350px,1.1fr);border-top:1px solid var(--c-c8b184)}
.profession-workbench .craft-picker-grouped{grid-template-columns:130px minmax(120px,1fr);border-top:0;padding:16px;gap:10px;align-content:start}
.profession-workbench .recipe-category-list{height:420px;max-height:420px}
.profession-workbench .recipe-category-title{padding:9px 10px;font-size:14px}
.profession-workbench .recipe-choice{font-size:13px;padding:8px 6px;gap:7px}
.recipe-fixed-detail{border-left:1px solid var(--c-c8b184);padding:24px;background:var(--c-fbf4e2);display:flex;flex-direction:column;min-width:0}
#recipe-preview-content{flex:1}.recipe-preview-title{display:flex;gap:14px;align-items:center}.recipe-preview-title img{width:48px;height:48px}.recipe-preview-title h2{font-size:20px;margin:0}.recipe-preview-title p,.recipe-preview-yield{font-size:13px;color:var(--c-6f5f45);line-height:1.6}.recipe-fixed-detail h3{font-size:14px;margin:24px 0 12px}
.recipe-preview-materials{display:grid;grid-template-columns:1fr 1fr;gap:10px}.recipe-preview-materials>div{display:flex;align-items:center;gap:8px;padding:10px;background:var(--c-e9d9b7);border:1px solid var(--c-c8b184);border-radius:6px;font-size:13px}.recipe-preview-materials img{width:28px;height:28px}.recipe-preview-materials span{flex:1}.recipe-preview-materials b{white-space:nowrap}
.recipe-preview-actions{display:flex;align-items:end;gap:16px;justify-content:space-between;padding-top:20px;border-top:1px solid var(--c-c8b184);margin-top:20px}.recipe-preview-actions label{display:flex;flex-direction:column;gap:8px;font-size:12px}.recipe-preview-actions input{width:64px}
@media(max-width:900px){.profession-workbench{grid-template-columns:1fr}.recipe-fixed-detail{border-left:0;border-top:1px solid var(--c-c8b184)}.profession-workbench .recipe-category-list{height:300px}.recipe-preview-actions{flex-wrap:wrap}}
@media(max-width:540px){.recipe-preview-materials{grid-template-columns:1fr}}

/* Give the crafting workspace the available width and reduce page chrome. */
.craft-page .workspace>header{height:52px;padding:0 24px}
.craft-page main{max-width:none;padding:12px 24px 20px}
.craft-page .page-heading{min-height:24px;gap:12px;margin-bottom:8px}
.craft-page .demo-badge{padding:4px 9px;font-size:11px}
.craft-page .snapshot{font-size:11px}
.craft-page .craft-profession-bar{padding:8px 16px;margin-bottom:10px;gap:12px}
.craft-page .craft-profession-bar select{padding:6px 10px;min-width:150px}
.craft-page .craft-toolbar{padding:12px 16px;gap:16px}
.craft-page .craft-heading h2{font-size:18px}
.craft-page .craft-product-icon:empty{display:none}
@media(max-width:800px){
 .craft-page .workspace>header{height:48px;padding:0 12px}
 .craft-page main{padding:10px 12px 16px}
 .craft-page .page-heading{flex-wrap:wrap;gap:6px}
 .craft-page .craft-profession-bar{padding:8px 12px}
 .craft-page .craft-toolbar{padding:12px}
}

/* Keep all recipe filters together, directly above the recipe list. */
.craft-page .page-heading{display:none}
.craft-page .profession-workbench{border-top:0}
.craft-page .profession-workbench .craft-picker-grouped{grid-template-columns:minmax(100px,.8fr) minmax(140px,1.3fr) minmax(120px,1fr)}
@media(max-width:540px){
 .craft-page .profession-workbench .craft-picker-grouped{grid-template-columns:1fr 1fr}
 .craft-page .craft-picker label:has(#craft-search){grid-column:auto}
 .craft-page .craft-picker label:has(#craft-tier){grid-column:1/-1}
}

/* Keep the item catalogue as compact as the recipe workspace. */
.market-page .workspace>header{height:52px;padding:0 24px}
.market-page main{max-width:none;padding:12px 24px 20px}
.market-page .page-heading{display:none}
@media(max-width:800px){
 .market-page .workspace>header{height:48px;padding:0 12px}
 .market-page main{padding:10px 12px 16px}
}

/* Recipe navigation and the animated canvas share the main workspace. */
.craft-primary{display:grid;grid-template-columns:300px minmax(0,1fr);height:clamp(680px,calc(100vh - 88px),1000px)}
.craft-page .craft-primary>.craft-picker-grouped{display:flex;flex-direction:column;gap:12px;padding:16px;border-top:0;border-right:1px solid var(--c-c8b184);min-height:0;min-width:0}
.craft-primary .craft-picker-count{flex-shrink:0}
.craft-primary .recipe-category-list{flex:1;min-height:0;height:auto;max-height:none;overflow:auto}
.craft-primary .recipe-choice{gap:6px;padding:8px 6px;font-size:12px}.craft-primary .recipe-choice small{font-size:10px;white-space:nowrap}.craft-primary .recipe-choice .wow-icon{width:24px;height:24px}
.craft-canvas-panel{display:flex;flex-direction:column;min-width:0;min-height:0}
.craft-canvas-panel .craft-strip{flex-wrap:wrap;flex-shrink:0;gap:10px;padding:12px 16px;border-top:0}
.craft-canvas-panel .craft-body{display:block;flex:1;min-height:0}
.craft-page .craft-canvas-panel .craft-viewport{height:100%;min-height:0}
.craft-details-row{display:grid;grid-template-columns:minmax(0,1fr) 320px;border-top:1px solid var(--c-c8b184)}
.craft-details-row .recipe-fixed-detail{border:0;padding:24px}
.craft-details-row .recipe-preview-materials{grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}
.craft-details-row .craft-inspector{padding:24px}.craft-details-row .craft-total{margin-top:0;padding-top:0;border-top:0}
@media(max-width:1100px) and (min-width:801px){.craft-primary{grid-template-columns:250px minmax(0,1fr)}.craft-canvas-panel .canvas-actions{right:10px;top:10px}.craft-canvas-panel .canvas-actions button{padding:9px}}
@media(max-width:800px){
 .craft-primary{height:auto;grid-template-columns:1fr}
 .craft-page .craft-primary>.craft-picker-grouped{display:grid;grid-template-columns:1fr 1fr;border-right:0}
 .craft-primary .recipe-category-list{height:220px;max-height:220px;grid-column:1/-1}
 .craft-primary .craft-picker label:has(#craft-search){grid-column:auto}
 .craft-primary .craft-picker label:has(#craft-tier){grid-column:1/-1}
 .craft-page .craft-canvas-panel .craft-viewport{height:520px}
 .craft-details-row{grid-template-columns:1fr}
 .craft-details-row .craft-inspector{border-left:0;border-top:1px solid var(--c-c8b184)}
 .craft-canvas-panel .canvas-actions{right:10px;top:10px}.craft-canvas-panel .canvas-actions button{padding:8px;font-size:12px}
}

/* One compact plan panel beneath the canvas. */
.craft-plan-panel{border-top:1px solid var(--c-c8b184);background:var(--c-f8efdc);padding:16px 20px}
.craft-plan-panel .recipe-fixed-detail{display:flex;flex-direction:row;align-items:center;gap:24px;border:0;padding:0 0 12px;background:none}
.craft-plan-panel #recipe-preview-content{display:flex;align-items:center;flex-wrap:wrap;gap:8px 20px;min-width:0}
.craft-plan-panel .recipe-preview-title h2{font-size:17px}.craft-plan-panel .recipe-preview-title p{margin:4px 0 0;font-size:12px}
.craft-plan-panel .recipe-preview-title img{width:32px;height:32px}
.craft-plan-panel .recipe-preview-yield{margin:0;font-size:12px}
.craft-plan-panel .recipe-preview-actions{border:0;padding:0;margin:0;gap:12px;flex-shrink:0;align-items:center}
.craft-plan-panel .recipe-preview-actions label{flex-direction:row;align-items:center;gap:8px}
.craft-plan-panel .recipe-preview-actions .primary{padding:8px 12px;font-size:12px}
.craft-plan-panel .recipe-original-materials{font-size:12px;color:var(--muted)}
.craft-plan-panel summary{cursor:pointer}
.craft-plan-panel .recipe-original-materials{flex-basis:100%}
.craft-plan-panel .recipe-preview-materials{margin-top:8px;grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}
.craft-plan-panel .craft-shopping{padding:12px 0 0;background:none}
.craft-plan-panel .shopping-heading h2{font-size:15px;margin:0}.craft-plan-panel .shopping-heading p{margin:5px 0 0;font-size:12px}
.craft-plan-panel #craft-export{padding:8px 12px;font-size:12px}
.craft-plan-panel .cost-breakdown{font-size:12px;margin-top:8px;color:var(--muted)}
.craft-plan-panel .craft-leaves{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:8px;margin:10px 0}
.craft-plan-panel .material-chip{padding:8px 10px;gap:8px;border-radius:6px}.craft-plan-panel .material-chip b{font-size:12px}.craft-plan-panel .material-chip small{font-size:10px;margin-top:3px}.craft-plan-panel .material-chip strong{font-size:13px}.craft-plan-panel .material-chip .wow-icon{width:28px;height:28px}
.craft-plan-panel .craft-steps{padding-top:8px;margin-top:8px;gap:8px}.craft-plan-panel .step-chip{padding:4px 8px;font-size:11px}
.craft-plan-panel .fineprint{font-size:11px;margin:8px 0 0}
.craft-plan-panel .craft-inspector:empty{display:none}
.craft-plan-panel .craft-inspector{border-left:0;border-top:1px solid var(--c-c8b184);padding:12px 0 0;margin-top:12px;background:none;display:flex;align-items:center;flex-wrap:wrap;gap:12px 20px}
.craft-plan-panel .inspector-item,.craft-plan-panel .craft-inspector p,.craft-plan-panel .craft-inspector dl{margin:0}
.craft-plan-panel .craft-inspector dl{display:flex;flex-wrap:wrap;gap:16px}.craft-plan-panel .craft-inspector dl>div{gap:8px;margin:0}
.craft-plan-panel .craft-inspector .full{width:auto;margin:0}.craft-plan-panel .node-price-label{gap:4px}
@media(max-width:1100px){.craft-plan-panel .recipe-fixed-detail{flex-wrap:wrap;gap:10px}.craft-plan-panel .recipe-preview-actions{flex-wrap:wrap}}
@media(max-width:540px){.craft-plan-panel{padding:12px}.craft-plan-panel .craft-leaves{grid-template-columns:1fr}.craft-plan-panel .recipe-preview-actions{gap:8px}.craft-plan-panel #recipe-preview-content{gap:8px}}
/* Recipe details and purchasing sit side by side in the shared panel. */
.craft-plan-panel{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:0 20px;align-items:start}
.craft-plan-panel .recipe-fixed-detail{min-width:0;flex-direction:column;align-items:stretch;gap:16px;padding:0}
.craft-plan-panel #recipe-preview-content{flex:none}
.craft-plan-panel .recipe-preview-actions{justify-content:space-between}
.craft-plan-panel .craft-shopping{min-width:0;padding:0 0 0 20px;border-top:0;border-left:1px solid var(--c-c8b184)}
.craft-plan-panel .recipe-preview-materials{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.craft-plan-panel .craft-inspector{grid-column:1/-1}
@media(max-width:800px){
 .craft-plan-panel{grid-template-columns:1fr;gap:14px}
 .craft-plan-panel .craft-shopping{padding:12px 0 0;border-left:0;border-top:1px solid var(--c-c8b184)}
}

/* Place quantity alongside the recipe heading, above its materials. */
.craft-plan-panel .recipe-fixed-detail{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px 16px;align-items:start}
.craft-plan-panel #recipe-preview-content{display:contents}
.craft-plan-panel .recipe-preview-title{grid-column:1;grid-row:1;min-width:0}
.craft-plan-panel .recipe-preview-actions{grid-column:2;grid-row:1;align-self:center}
.craft-plan-panel .recipe-original-materials{grid-column:1/-1;grid-row:2;min-width:0}
.craft-plan-panel .recipe-preview-materials{margin-top:0}
@media(max-width:1100px){.craft-plan-panel .recipe-preview-actions label{flex-direction:column;align-items:flex-start;gap:4px}}
@media(max-width:540px){.craft-plan-panel .recipe-fixed-detail{gap:12px 8px}.craft-plan-panel .recipe-preview-title h2{font-size:15px}}

/* 拍卖行购买页：分类树 + 搜索结果 */
.auction-kicker{display:block;font-size:11px;letter-spacing:2px;color:var(--muted);margin-bottom:7px}
.auction-layout{display:grid;grid-template-columns:202px minmax(0,1fr)}
.auction-categories{padding:18px 10px;background:var(--c-e8d7b0);border-right:1px solid var(--line)}
.auction-categories>.mini{padding:0 12px 14px;display:block;letter-spacing:2px}
.auction-category-row{display:flex;align-items:center;padding-left:calc(var(--depth)*12px)}
.auction-category{display:flex;align-items:center;justify-content:space-between;gap:5px;flex:1;min-width:0;border:1px solid transparent;background:transparent;border-radius:5px;padding:9px 7px;text-align:left;font-size:13px;color:var(--text)}
.auction-category small{font-size:10px;color:var(--muted);font-variant-numeric:tabular-nums}
.auction-category:hover{background:var(--c-f8efdc)}
.auction-category.selected{background:var(--c-e3f1fa);border-color:var(--c-9dc9e4);color:var(--c-14618f);font-weight:700}
.auction-all{width:100%;margin-bottom:10px;padding:10px}
.auction-expand,.auction-expand-spacer{width:20px;flex:none;display:inline-block}
.auction-expand{border:0;background:transparent;padding:9px 0;color:var(--muted)}
.auction-main{min-width:0}
#auction-search{padding:22px;border-bottom:1px solid var(--line);background:var(--c-f8efdc)}
.auction-search-row{display:flex;gap:9px}
.auction-search-row input{min-width:0;flex:1}
.auction-search-row button{white-space:nowrap}
.auction-filters{display:flex;align-items:end;gap:16px;flex-wrap:wrap;margin-top:18px}
.auction-filters label{display:flex;flex-direction:column;gap:7px;font-size:11px;color:var(--muted)}
.auction-filters select{font-size:12px;padding:8px 10px}
.auction-levels{display:flex;align-items:center;gap:6px}
.auction-levels input{width:70px;padding:8px;font-size:12px}
.auction-filters .auction-exact{display:flex;flex-direction:row;align-items:center;padding-bottom:9px;gap:6px}
.auction-exact input{accent-color:var(--c-14618f)}
.auction-results-head{display:flex;align-items:center;justify-content:space-between;padding:17px 22px;border-bottom:1px solid var(--line);font-size:12px;gap:12px}
.auction-results-head span{color:var(--muted)}
.auction-table-wrap{overflow:auto;max-height:650px;min-height:260px}
.auction-table{width:100%;border-collapse:collapse;font-size:12px}
.auction-table th{position:sticky;top:0;background:var(--c-e9d9b7);z-index:1;white-space:nowrap}
.auction-table th,.auction-table td{padding:13px 16px;text-align:left;border-bottom:1px solid var(--line)}
.auction-table tbody tr:hover{background:var(--c-f8efdc)}
.auction-table small{display:block;font-size:10px;line-height:1.6;color:var(--muted);margin-top:3px}
.auction-table .wow-icon{width:32px;height:32px;flex:none}
.auction-table .money{font-size:12px;white-space:nowrap}
.auction-item-name{font-size:13px;font-weight:600}
.auction-pagination{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:15px 22px;border-top:1px solid var(--line);font-size:11px;color:var(--muted);flex-wrap:wrap}
.auction-pagination>div{display:flex;align-items:center;gap:12px}
.auction-pagination button{font-size:12px;padding:7px 10px}
.auction-pagination button:disabled{opacity:.4;cursor:default}
.auction-note{font-size:11px;margin:0;padding:0 22px 20px}
.auction-browser>.panel-head{padding:18px 36px}
@media(max-width:1000px){.auction-layout{grid-template-columns:172px minmax(0,1fr)}.auction-table{min-width:630px}.auction-filters{gap:10px}}
@media(max-width:650px){.auction-layout{grid-template-columns:1fr}.auction-categories{border-right:0;border-bottom:1px solid var(--line);max-height:235px;overflow:auto}.auction-categories>.mini{padding-bottom:5px}.auction-search-row{flex-wrap:wrap}.auction-search-row input{flex-basis:100%}#auction-search{padding:16px}.auction-results-head,.auction-pagination{padding:14px 16px}.auction-browser>.panel-head>.mini{display:none}}

.auction-detail-trigger{cursor:help;border-radius:4px}
.auction-detail-trigger:focus-visible{outline:2px solid var(--accent);outline-offset:5px}
.item-tooltip{position:fixed;z-index:1000;width:320px;max-width:calc(100vw - 16px);max-height:calc(100vh - 16px);overflow:auto;padding:16px 18px;background:#111827;color:#f1f5f9;border:1px solid #a48b55;border-radius:7px;box-shadow:0 12px 32px #0006;font-size:13px;line-height:1.7;text-align:left;overflow-wrap:anywhere}
.item-tooltip[hidden]{display:none}
.tooltip-name{display:block;font-size:16px;line-height:1.5}
.tooltip-quality-0{color:#aaa}.tooltip-quality-1{color:#fff}.tooltip-quality-2{color:#5de648}.tooltip-quality-3{color:#65b7ff}.tooltip-quality-4{color:#c58aff}.tooltip-quality-5{color:#ffad4d}
.tooltip-muted,.tooltip-meta{color:#aeb9cc;font-size:11px}
.tooltip-meta{margin:5px 0 8px}.tooltip-effect{color:#72e269}.tooltip-capacity{font-weight:700;color:#ffe1a1;margin:6px 0}.tooltip-source{margin-top:12px;padding-top:9px;border-top:1px solid #465063;color:#aeb9cc;font-size:10px}

/* 紧凑物品浮卡：品质光沿与核心数值 */
.item-tooltip{--tip-color:#c5ae79;width:306px;padding:16px;background:linear-gradient(135deg,#1a2534f7,#0b111bfB 70%);border:1px solid color-mix(in srgb,var(--tip-color) 45%,#243044);border-top:2px solid var(--tip-color);border-radius:12px;box-shadow:0 18px 48px #0009,0 0 22px color-mix(in srgb,var(--tip-color) 10%,transparent),inset 0 1px 0 #ffffff08;backdrop-filter:blur(18px);font-size:12px;line-height:1.6;animation:tooltip-in .13s ease-out}
.item-tooltip[data-quality="2"]{--tip-color:#70de82}.item-tooltip[data-quality="3"]{--tip-color:#70b6ff}.item-tooltip[data-quality="4"]{--tip-color:#bf97ff}.item-tooltip[data-quality="5"]{--tip-color:#ffb15e}
.tooltip-heading{display:flex;align-items:center;gap:11px;margin-bottom:12px}
.tooltip-heading .wow-icon{width:40px;height:40px;flex:none;border:1px solid color-mix(in srgb,var(--tip-color) 50%,transparent);border-radius:8px;box-shadow:0 0 12px #0004}
.tooltip-heading>div{min-width:0;flex:1}.tooltip-name{font-size:15px;font-weight:650;letter-spacing:.2px}
.tooltip-meta{display:flex;justify-content:space-between;gap:12px;font-size:10px;margin:4px 0 0}.tooltip-meta span{color:#d4ba81;white-space:nowrap}
.tooltip-hero{display:flex;align-items:baseline;gap:9px;padding:7px 0 11px}.tooltip-hero b{font-size:32px;font-weight:600;color:var(--tip-color);line-height:1.1}.tooltip-hero span{color:#c4cede;font-size:12px}
.tooltip-damage{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:6px 0 2px}.tooltip-damage>div{display:flex;align-items:baseline;gap:7px}.tooltip-damage>div>b{font-size:22px;font-weight:550;letter-spacing:-.4px}.tooltip-damage span{font-size:10px;color:#aeb9cc}.tooltip-damage>span b{font-size:12px;color:#e0e7f2;font-weight:500}
.tooltip-properties{margin:9px 0}.tooltip-properties:empty{display:none}.tooltip-line+.tooltip-line{margin-top:3px}.tooltip-effect{color:#86dea1}.tooltip-footer{display:flex;justify-content:space-between;gap:10px;border-top:1px solid #ffffff14;margin-top:12px;padding-top:9px;font-size:10px;color:#aeb9cc}.tooltip-version{font-size:9px;color:#d4ba81;margin-top:7px}.tooltip-missing{margin:10px 0}
@keyframes tooltip-in{from{opacity:0;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.item-tooltip{animation:none}}

/* 品质色独立于金/蓝主题：浅底使用深色文字，徽标和图标使用鲜明品质色。 */
.auction-table tr{--quality-ink:#53616c;--quality-accent:#87939e;--quality-bg:#edf0f3}
.auction-table .auction-quality-0{--quality-ink:#59616a;--quality-accent:#87909a;--quality-bg:#e8ebee}
.auction-table .auction-quality-1{--quality-ink:#46515e;--quality-accent:#fff;--quality-bg:#fafbfd}
.auction-table .auction-quality-2{--quality-ink:#166534;--quality-accent:#23b956;--quality-bg:#e0f5e5}
.auction-table .auction-quality-3{--quality-ink:#1554a3;--quality-accent:#368bea;--quality-bg:#e1eeff}
.auction-table .auction-quality-4{--quality-ink:#7934a6;--quality-accent:#b45be7;--quality-bg:#f2e5fc}
.auction-table .auction-quality-5{--quality-ink:#9c430b;--quality-accent:#f58a25;--quality-bg:#fff0db}
.auction-table .auction-quality-6{--quality-ink:#81570b;--quality-accent:#d7ad41;--quality-bg:#fff6d5}
.auction-table .auction-item-name{color:var(--quality-ink)}
.auction-table .auction-detail-trigger .wow-icon{border:2px solid var(--quality-accent);box-shadow:0 0 0 1px color-mix(in srgb,var(--quality-ink) 25%,transparent),0 0 9px color-mix(in srgb,var(--quality-accent) 18%,transparent)}
.auction-quality-badge{display:inline-flex;align-items:center;gap:7px;white-space:nowrap;min-width:64px;justify-content:center;padding:4px 10px;border-radius:6px;background:var(--quality-bg);color:var(--quality-ink);border:1px solid color-mix(in srgb,var(--quality-ink) 24%,transparent);font-size:11px;font-weight:700;line-height:1.5;letter-spacing:.5px}
.auction-quality-dot{width:7px;height:7px;flex:none;border-radius:50%;background:var(--quality-accent);box-shadow:0 0 0 1px color-mix(in srgb,var(--quality-ink) 25%,transparent)}

/* Search and category navigation share the left side of the catalogue. */
.auction-layout{grid-template-columns:280px minmax(0,1fr)}
.auction-sidebar{min-width:0;background:var(--c-e8d7b0);border-right:1px solid var(--line)}
.auction-sidebar #auction-search{padding:16px}
.auction-sidebar .auction-search-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.auction-sidebar .auction-search-row input{grid-column:1/-1;width:100%;font-size:13px}
.auction-sidebar .auction-search-row button{padding:9px 12px}
.auction-sidebar .auction-filters{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px}
.auction-sidebar .auction-filters label{min-width:0}
.auction-sidebar .auction-filters label:first-child,.auction-sidebar .auction-exact{grid-column:1/-1}
.auction-sidebar .auction-filters select{width:100%;min-width:0}
.auction-sidebar .auction-levels{display:flex;align-items:center;gap:6px}
.auction-sidebar .auction-levels input{width:0;min-width:0;flex:1}
.auction-sidebar .auction-exact{padding-bottom:0}
.auction-sidebar .auction-categories{border-right:0;padding-top:16px}
@media(max-width:650px){
 .auction-layout{grid-template-columns:1fr}
 .auction-sidebar{border-right:0;border-bottom:1px solid var(--line)}
 .auction-sidebar .auction-categories{max-height:235px;overflow:auto;border-bottom:0}
}

.auction-load-status{padding:16px;text-align:center;font-size:13px;color:var(--muted)}
.auction-load-status button{margin-left:8px}

/* Let the catalogue use the viewport instead of leaving a footer-sized gap. */
.market-page main>footer{display:flex;flex-shrink:0;margin-top:12px;padding:14px 0 12px;line-height:1.5}
.market-page main{padding-bottom:0}
@media(min-width:651px){
 .market-page .workspace{height:100dvh;display:flex;flex-direction:column}
 .market-page .workspace>header{flex-shrink:0}
 .market-page main{flex:1;min-height:0;margin:0;display:flex;flex-direction:column}
 .market-page #app,.market-page .auction-browser{flex:1;min-height:0;display:flex;flex-direction:column}
 .market-page .auction-layout{flex:1;min-height:0}
 .market-page .auction-sidebar{min-height:0;overflow:auto}
 .market-page .auction-main{min-height:0;display:flex;flex-direction:column}
 .market-page .auction-results-head{flex-shrink:0}
 .market-page .auction-table-wrap{flex:1;min-height:0;max-height:none}
}

.craft-recipe-preview{min-width:0;margin:20px;align-self:start}.craft-recipe-preview .panel-head{flex-wrap:wrap;gap:12px}.craft-preview-note{padding:20px 24px;background:var(--c-f6efd9,#f6efd9);border-bottom:1px solid var(--c-d8c9a0,#d8c9a0)}.craft-preview-note p{margin:8px 0 0;line-height:1.7}.craft-recipe-preview .wow-icon{width:36px;height:36px}.craft-recipe-preview td{padding:14px 24px}

/* ═══════════════════════════════════════════════════════════════
   要买分两档：有配方的半成品（实心亮色条 + 呼吸光）
               无配方的底层原料（浅蓝细色条 + 无光）
   NPC 商人出售的材料单独打标，折扣只对它生效。
   ═══════════════════════════════════════════════════════════════ */
.craft-node.leaf-node{
  background:linear-gradient(160deg,var(--buy-surface2),var(--buy-surface));
  border:1px solid var(--c-9ec9e6);
  border-left:4px solid var(--c-6bb3dd);
  box-shadow:0 2px 10px var(--c-0e70aa14)}
.craft-node.leaf-node:not(.cold){box-shadow:0 3px 14px var(--c-0e70aa1f)}
/* 底层原料没有配方可拆，只留左边一条浅蓝细线；不能再叠伪元素色条，否则会被看成两条线 */
.craft-node.leaf-node::before{display:none}
.craft-node.leaf-node:hover,.craft-node.leaf-node.focused{border-color:var(--buy)}
.npc-tag{
  display:inline-block;margin-right:6px;padding:1px 5px;border-radius:4px;vertical-align:1px;
  font-size:9px;font-style:normal;font-weight:700;letter-spacing:.5px;
  background:var(--buy);color:var(--c-fff)}
.legend-dot.npc{width:9px;height:9px;border-radius:50%;background:var(--buy);box-shadow:0 0 6px var(--c-48c8f033)}

/* ── 顶部配置下拉（点击展开，点别处或按 Esc 收起；不跟随鼠标悬浮） ── */
.settings-menu{position:relative}
.settings-trigger{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--c-c8b184);border-radius:999px;background:var(--c-f5ebd2);padding:6px 13px;font-size:12px;letter-spacing:1px;color:var(--c-6f5f45)}
.settings-trigger:hover{background:var(--c-efe1c1);color:var(--c-2b2318)}
.settings-trigger strong{font-weight:600;color:var(--c-2b2318)}
.settings-trigger .caret{font-size:9px;opacity:.65}
.settings-panel{
  position:absolute;right:0;top:calc(100% + 10px);z-index:40;width:266px;
  display:grid;gap:14px;padding:16px;border:1px solid var(--c-c8b184);border-radius:10px;
  background:var(--c-f8efdc);box-shadow:0 14px 34px var(--c-4a3a1e2e);
  opacity:0;visibility:hidden;transform:translateY(-6px);
  transition:opacity .18s,transform .18s,visibility .18s}
.settings-menu.open .settings-panel{
  opacity:1;visibility:visible;transform:none}
.settings-row{display:grid;gap:8px}
.settings-row>span,.settings-row>label{font-size:11px;letter-spacing:1px;color:var(--c-8d7c5e)}
.settings-row select,.settings-row input{width:100%;padding:8px 10px;font-size:12px}
.settings-panel .theme-switch{order:0;justify-content:flex-start;justify-self:start;width:fit-content}

/* ── 画布节点：去掉制作次数与底部说明后卡片按内容收紧，卡里的文字整体放大 ── */
.craft-node{height:auto;width:240px}
.node-caption{white-space:normal;flex-wrap:wrap}
.node-caption>span{white-space:nowrap}
.node-kicker{font-size:13px}
.node-kicker b{font-size:17px}
.node-title .wow-icon{width:44px;height:44px}
.node-title .node-item-name{font-size:18px}
.node-cost{font-size:19px;font-weight:700;letter-spacing:.2px;color:var(--accent-deep)}
.node-switch .seg{font-size:13px}
.npc-tag{font-size:10px}
/* NPC 标签跟着分类走：分类条里排在「基础材料」后面，不再占金额那一行。 */
.node-kicker .kicker-kind{display:inline-flex;align-items:center;gap:7px;min-width:0}
.node-kicker .npc-tag{margin-right:0}
/* 省钱建议跟着放大一档，但仍小于金额本身。 */
.save{font-size:13px;padding:2px 7px}
/* ── 画布缩放控件：适应画布把整幅压小后，可以自己放大看文字 ─────────── */
.canvas-actions .zoom-cluster{display:flex;align-items:center;border-left:1px solid var(--c-a8c894)}
.canvas-actions .zoom-cluster button,.canvas-actions .zoom-cluster button:last-child{padding:8px 11px;font-size:15px;line-height:1;border-left:0}
.canvas-actions #craft-zoom-level{font-size:12px;min-width:42px;text-align:center;color:var(--c-6f5f45);font-variant-numeric:tabular-nums}

/* Recipe skill-up tiers */
.skillup-orange{color:#c45b08}.skillup-yellow{color:#9a7900}.skillup-green{color:#27833a}.skillup-gray{color:#777}.skillup-unknown{color:var(--muted)}
.skillup-thresholds{display:flex;align-items:center;gap:9px;font-size:14px;margin:9px 0}.skillup-thresholds>span{color:var(--muted);font-size:12px}.skillup-thresholds b{font-variant-numeric:tabular-nums}.skillup-thresholds sup{font-size:10px}
.route-status{display:flex;flex-direction:column;align-items:flex-end;gap:12px}.skillup-badge{font-size:12px;border:1px solid currentColor;border-radius:6px;padding:7px 9px;white-space:nowrap;background:var(--c-fdf8ea)}
.skillup-guide{padding:24px;border-bottom:1px solid var(--line);background:var(--c-fdf8ea)}.skillup-guide h2{margin:0;font-size:19px}.skillup-guide p{font-size:12px;line-height:1.8}.skillup-legend{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:18px 0}.skillup-legend>div{border:1px solid currentColor;border-left:5px solid currentColor;border-radius:7px;padding:13px;display:flex;flex-direction:column;gap:8px}.skillup-legend strong{font-size:16px}
@media(max-width:650px){.route-status{grid-column:2;align-items:flex-start;flex-direction:row}.skillup-guide{padding:18px}}

/* 单次制作材料与配方并排，窄屏下移到配方信息下方。 */
.route-row{grid-template-columns:44px minmax(150px,.85fr) minmax(0,1.15fr)}
.route-materials{display:flex;flex-wrap:wrap;gap:10px 14px;min-width:0}
.route-material{display:flex;align-items:center;gap:7px;max-width:100%;font-size:13px;line-height:1.5}
.route-material .wow-icon{width:28px;height:28px;border-radius:4px}
.route-material>span{overflow-wrap:anywhere}
.route-material b{font-weight:500;white-space:nowrap;color:var(--muted)}
@media(max-width:750px){.route-row{grid-template-columns:44px minmax(0,1fr);gap:12px}.route-materials{grid-column:2}}

.level-strategies{display:flex;align-items:center;flex-wrap:wrap;gap:10px;padding:0 22px 18px}
.level-summary{margin:0 22px 18px;padding:16px;background:var(--c-e9d9b7);border-radius:8px;font-size:14px}
.level-summary p{margin:8px 0 0}.level-step{display:block;font-size:12px;color:var(--muted);margin-bottom:8px}
.level-controls select{max-width:100%}.level-controls label{min-width:0;max-width:100%}

#settings-panel{max-height:calc(100dvh - 110px);overflow-y:auto}

/* 画布报价：单价与合计使用相同字号，标签与金额分别对齐。 */
.craft-node .node-caption .node-prices{display:grid;gap:4px;width:100%;white-space:normal}
.craft-node .node-price-line{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:14px;line-height:1.35}
.craft-node .node-price-line>span{font-size:inherit;font-weight:400}
.craft-node .node-price-line>b{font-size:inherit;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}

/* 采购卡：图标下方放数量，右侧只保留分类与单价。 */
.craft-plan-panel .material-chip .material-visual{display:flex;flex-direction:column;align-items:center;gap:5px;flex:0 0 36px;text-align:center}
.craft-plan-panel .material-chip .material-visual strong{margin:0;line-height:1.2}
.craft-plan-panel .material-chip .material-details{flex:1;min-width:0;text-align:left}
.craft-plan-panel .material-chip .material-details>b,.craft-plan-panel .material-chip .material-details>small{display:block}
.craft-plan-panel .material-chip .material-unit-price{color:var(--accent-deep);font-variant-numeric:tabular-nums}

.category-cost-bar .cost-seg{min-width:0;cursor:default}
.cost-bar .cost-category-auction-parts,.cost-category-dot.cost-category-auction-parts{background:var(--c-5aa8d6)}
.cost-bar .cost-category-auction-base,.cost-category-dot.cost-category-auction-base{background:var(--c-d9b46a)}
.cost-bar .cost-category-npc,.cost-category-dot.cost-category-npc{background:var(--c-7fb35f)}
.cost-bar .cost-category-manual,.cost-category-dot.cost-category-manual{background:var(--c-a882d8)}
.cost-category-dot{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:5px}
.cost-bar-head{flex-wrap:wrap;gap:6px 16px}

/* 冲级策略说明：鼠标悬浮与键盘聚焦时即时显示。 */
.level-strategy{position:relative;display:inline-flex}
.strategy-tooltip{display:none;position:absolute;top:100%;left:0;z-index:30;width:320px;max-width:calc(100vw - 80px);padding:14px 16px;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--text);box-shadow:0 8px 24px #0003;font-size:13px;font-weight:400;line-height:1.7;text-align:left;white-space:normal}
.level-strategy:hover .strategy-tooltip,.level-strategy:focus-within .strategy-tooltip{display:block}

/* 冲级工具栏：专业、技能区间与规划偏好。 */
.level-controls{gap:18px;padding:24px 24px 18px;align-items:flex-end}
.level-controls label{gap:8px;font-size:12px;letter-spacing:.02em}
.level-profession-field{flex:1;min-width:90px!important}
.level-controls select{width:100%;min-height:44px;border-radius:9px}
.level-skill-range{display:flex;align-items:flex-end;gap:8px;flex:1.6}
.level-skill-range label{flex:1}
.level-controls .level-skill-range input{width:100%;min-width:0;height:44px;border-radius:9px;font-size:16px;font-weight:600;font-variant-numeric:tabular-nums}
.level-range-arrow{display:grid;place-items:center;height:44px;color:var(--muted);font-size:20px}
.level-controls #generate{display:flex;align-items:center;justify-content:center;gap:14px;min-height:44px;border-radius:9px;white-space:nowrap;box-shadow:0 3px 8px #00000012;transition:filter .15s,transform .15s}
.level-controls #generate:hover{filter:brightness(1.08);transform:translateY(-1px)}
.level-controls #generate span{font-size:18px;font-weight:400}
.level-strategies{gap:14px;padding:0 24px 22px}
.level-strategy-label{font-size:12px;color:var(--muted)}
.level-strategy-switch{display:flex;gap:3px;padding:4px;border:1px solid var(--line);border-radius:10px;background:color-mix(in srgb,var(--line) 20%,transparent)}
.level-strategy-switch button{border:0;border-radius:7px;background:transparent;color:var(--muted);padding:9px 16px;font-size:13px;font-weight:500;transition:background .15s,color .15s}
.level-strategy-switch button[aria-pressed=true]{background:var(--panel);color:var(--text);font-weight:700;box-shadow:0 1px 5px #00000018}
.level-strategy-switch button:hover{color:var(--text);background:color-mix(in srgb,var(--panel) 65%,transparent)}
.level-strategy-switch .strategy-tooltip{top:calc(100% + 4px)}
@media(max-width:650px){.level-controls{gap:14px;padding:20px 18px 16px}.level-controls .level-profession-field{flex:1 1 100%}.level-skill-range{flex:1;min-width:150px}.level-controls #generate{padding:12px;gap:6px}.level-strategies{padding:0 18px 20px;gap:10px}.level-strategy-switch button{padding:9px 12px}}

.level-purchases .panel-head{flex-wrap:wrap;gap:12px}
.purchase-total{margin-left:auto;text-align:right;display:flex;flex-wrap:wrap;align-items:baseline;justify-content:flex-end;gap:6px 12px}
.purchase-total>span,.purchase-total small{font-size:12px;color:var(--muted)}
.purchase-total strong{font-size:18px;color:var(--accent-deep)}
.purchase-total small{flex-basis:100%}
.level-purchases th:not(:first-child),.level-purchases td:not(:first-child){text-align:right;padding-left:14px;white-space:nowrap}
.level-purchases td:last-child{font-weight:600;color:var(--accent-deep)}
.level-purchases .market-table{overflow-x:auto}

.level-purchases td:nth-child(4){font-weight:600;color:var(--accent-deep)}
/* Profession encyclopedia */
.encyclopedia-toolbar{display:flex;gap:12px;flex-wrap:wrap;padding:18px 22px;border-bottom:1px solid var(--line)}
.encyclopedia-toolbar select,.encyclopedia-toolbar input{min-height:40px}.encyclopedia-table{overflow:auto}.encyclopedia-table table{min-width:900px}.recipe-name-cell{min-width:220px}.recipe-name-cell small{display:block;color:var(--muted);margin-top:4px}.source-pill{display:inline-block;padding:4px 8px;border-radius:999px;background:var(--c-e9d9b7);font-size:12px;margin:2px 4px 2px 0}.source-pill.drop{background:#e6d9bd}.band-cell b{display:inline-block;margin-right:10px;font-variant-numeric:tabular-nums}.encyclopedia-note{padding:16px 22px;color:var(--muted);font-size:12px;line-height:1.7}

.deduction-section{margin:4px 24px 24px;padding-top:20px;border-top:1px solid var(--line)}
.deduction-heading{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:14px}
.deduction-heading h3{margin:0;font-size:14px}.deduction-heading>span{font-size:12px;color:var(--muted)}
.deduction-card{padding:16px;border:1px solid var(--line);border-radius:10px;background:color-mix(in srgb,var(--panel) 65%,white 35%);margin-top:12px}
.deduction-flow{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.deduction-inputs{display:flex;align-items:center;gap:10px;flex-wrap:wrap;flex:1}
.deduction-item{display:flex;align-items:center;gap:8px;font-size:13px}.deduction-item .wow-icon{width:32px;height:32px;flex:none}
.deduction-item b{display:block;font-size:12px;font-weight:500;color:var(--muted);margin-top:3px}
.deduction-arrow{font-size:24px;color:var(--accent-deep)}.deduction-plus{color:var(--muted)}
.deduction-output{padding:8px 12px}
.deduction-metrics{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:16px;padding-top:12px;border-top:1px dashed var(--line);font-size:12px;color:var(--muted)}
.deduction-metrics b{color:var(--text);margin-left:4px}.deduction-metrics>strong{margin-left:auto;color:var(--accent-deep)}
/* Encyclopedia refreshed layout */
.encyclopedia-toolbar{background:color-mix(in srgb,var(--panel) 82%,var(--line));align-items:center;padding:20px 28px;gap:14px}
.encyclopedia-toolbar select{min-width:150px}.encyclopedia-toolbar input{flex:1;max-width:360px}
.encyclopedia-table{padding:18px 28px 28px}.encyclopedia-table table{min-width:0;width:100%;border-collapse:separate;border-spacing:0 10px}.encyclopedia-table thead th{border:0;padding:8px 14px;color:var(--muted);font-size:12px;font-weight:600}.encyclopedia-table tbody tr{background:color-mix(in srgb,var(--panel) 88%,var(--line));box-shadow:0 2px 8px #0000000b}.encyclopedia-table tbody td{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:16px 14px;vertical-align:middle}.encyclopedia-table tbody td:first-child{border-left:1px solid var(--line);border-radius:10px 0 0 10px}.encyclopedia-table tbody td:last-child{border-right:1px solid var(--line);border-radius:0 10px 10px 0}.recipe-name-cell strong{font-size:15px}.recipe-name-cell small{font-size:12px;margin-top:7px}.band-cell{white-space:nowrap}.band-cell b{padding:5px 8px;border-radius:6px;background:color-mix(in srgb,currentColor 9%,transparent);margin-right:6px}.encyclopedia-note{margin:0 28px 24px;padding:14px 16px;border-radius:8px;background:color-mix(in srgb,var(--panel) 80%,var(--line))}
@media(max-width:800px){.encyclopedia-table{padding:12px}.encyclopedia-table table{min-width:720px}.encyclopedia-note{margin:0 12px 18px}.encyclopedia-toolbar{padding:16px 18px}}
.ency-recipe-title{display:flex;align-items:center;gap:14px;min-width:220px}.ency-recipe-title .item-icon,.ency-recipe-title .wow-icon{width:44px;height:44px;flex:0 0 44px;border-radius:8px;box-shadow:0 1px 3px #0003}.ency-recipe-title>span{min-width:0}.ency-recipe-title strong,.ency-recipe-title small{display:block}.ency-recipe-title strong{line-height:1.35}
@media(max-width:800px){.ency-recipe-title{gap:10px}.ency-recipe-title .item-icon,.ency-recipe-title .wow-icon{width:38px;height:38px;flex-basis:38px}}
.encyclopedia-table .band-cell b{min-width:42px;text-align:center;padding:7px 9px;border-radius:7px;font-weight:700}
.encyclopedia-table .band-cell .skillup-orange{background:#f4dcc6}.encyclopedia-table .band-cell .skillup-yellow{background:#eee3bd}.encyclopedia-table .band-cell .skillup-green{background:#d1e8d8}.encyclopedia-table .band-cell .skillup-gray{background:#dce2e6}
/* 专业选择器：科技感渐变与悬浮反馈。 */
.level-profession-field{position:relative}
.level-profession-field select#level-profession{appearance:none;-webkit-appearance:none;padding:0 40px 0 16px;background:linear-gradient(135deg,color-mix(in srgb,var(--panel) 90%,var(--accent) 10%),var(--panel));border:1px solid color-mix(in srgb,var(--accent) 45%,var(--line));box-shadow:inset 0 1px #fff5,0 2px 8px #0001;transition:border-color .2s,box-shadow .2s,transform .2s}
.level-profession-field select#level-profession:hover{border-color:var(--accent);box-shadow:inset 0 1px #fff7,0 0 0 3px color-mix(in srgb,var(--accent) 15%,transparent),0 5px 14px #0002;transform:translateY(-1px)}
.level-profession-field select#level-profession:focus{border-color:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 22%,transparent),0 8px 20px #0002}
/* Skill-up values: plain colored numbers, no background chips. */
.encyclopedia-table .band-cell b{min-width:0;padding:0;background:transparent!important;border-radius:0;margin-right:14px}
.encyclopedia-table .band-cell b:last-child{margin-right:0}
.level-warning{display:flex;align-items:flex-start;gap:10px;margin:16px 24px 0;padding:11px 14px;border:1px solid #d7a52f;border-left:4px solid #d18b16;border-radius:8px;background:color-mix(in srgb,#f6c85f 16%,var(--panel));color:var(--c-6f5f45);font-size:12px;line-height:1.6}.level-warning b{flex:none;color:#9a6500}.level-warning span{min-width:0}
.ency-layout{display:grid;grid-template-columns:230px minmax(0,1fr);align-items:start}.ency-filters{padding:24px 20px;display:flex;flex-direction:column;gap:16px;border-right:1px solid var(--line);background:color-mix(in srgb,var(--panel) 86%,var(--line));min-height:520px}.ency-filters label{display:flex;flex-direction:column;gap:7px;font-size:12px;color:var(--muted)}.ency-filters select,.ency-filters input{width:100%;min-height:40px}.ency-filters label:nth-child(3){display:grid;grid-template-columns:1fr 1fr;gap:7px}.ency-filters label:nth-child(3)::first-line{grid-column:1/-1}.ency-filters label:nth-child(3) input{min-width:0}.ency-layout .encyclopedia-table{padding:18px 24px 28px}.ency-layout .encyclopedia-table table{margin-top:0}@media(max-width:800px){.ency-layout{grid-template-columns:1fr}.ency-filters{min-height:0;border-right:0;border-bottom:1px solid var(--line);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));padding:16px}.ency-filters label:last-child{grid-column:1/-1}.ency-layout .encyclopedia-table{padding:12px}}

.ency-filters label:nth-child(3)::before{font-size:12px;color:var(--muted)}

/* 专业大全占满工作区，减少两侧无效留白。 */
.encyclopedia-page main{max-width:none;padding-left:24px;padding-right:24px}
.encyclopedia-page .panel{width:100%}

.ency-category-groups{display:grid;gap:7px;margin-top:4px;padding-top:14px;border-top:1px solid var(--line)}
.ency-category-title{font-size:12px;color:var(--muted);margin-bottom:2px}.ency-category{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;padding:10px 11px;border:1px solid var(--line);border-radius:7px;background:color-mix(in srgb,var(--panel) 75%,var(--line));color:var(--text);text-align:left}.ency-category:hover{background:color-mix(in srgb,var(--accent) 12%,var(--panel));border-color:var(--accent)}.ency-category.active{background:color-mix(in srgb,var(--accent) 30%,var(--panel));border-color:var(--accent-deep);box-shadow:inset 4px 0 0 var(--accent-deep);color:var(--accent-deep);font-weight:700}.ency-category small{color:var(--muted)}.ency-category.active small{color:var(--accent-deep)}
/* Toast: centered in the content header, entering from the right and leaving to the left. */
#toast{top:132px;bottom:auto;left:58%;transform:translateX(34px);min-width:200px;text-align:center;border:1px solid color-mix(in srgb,var(--accent) 70%,#fff);box-shadow:0 12px 28px #5b431f26;opacity:0;display:none;transition:transform .42s cubic-bezier(.22,.8,.25,1),opacity .42s ease;z-index:100}
#toast.toast-visible{transform:translateX(-50%);opacity:1}
#toast.toast-leaving{transform:translateX(calc(-50% - 34px));opacity:0}
@media(max-width:800px){#toast{left:50%;top:92px;min-width:180px}}
/* Stronger toast motion */
#toast{transform:translateX(140px);transition:transform .68s cubic-bezier(.16,1,.3,1),opacity .68s ease}
#toast.toast-visible{transform:translateX(-50%);opacity:1}
#toast.toast-leaving{transform:translateX(calc(-50% - 180px));opacity:0;transition:transform .58s cubic-bezier(.7,0,.84,0),opacity .58s ease}
/* Toast travel distance requested: enter from right 500px, exit to left 360px. */
#toast{transform:translateX(500px)}
#toast.toast-visible{transform:translateX(-50%)}
#toast.toast-leaving{transform:translateX(calc(-50% - 360px))}
/* Toast travel distance updated. */
#toast{transform:translateX(1500px)}
#toast.toast-visible{transform:translateX(-50%)}
#toast.toast-leaving{transform:translateX(calc(-50% - 1360px))}
/* Keep the toast above the purchase panel title. */
#toast{top:88px}
@media(max-width:800px){#toast{top:72px}}
@keyframes toast-enter-right{from{transform:translateX(1500px);opacity:0}to{transform:translateX(-50%);opacity:1}}
@keyframes toast-exit-left{from{transform:translateX(-50%);opacity:1}to{transform:translateX(calc(-50% - 1360px));opacity:0}}
#toast.toast-visible{animation:toast-enter-right .9s cubic-bezier(.16,1,.3,1) both}
#toast.toast-leaving{animation:toast-exit-left .72s cubic-bezier(.7,0,.84,0) both}
/* Place toast between the two header rules. */
#toast{top:52px}
@media(max-width:800px){#toast{top:46px}}

/* 专业大全搜索框保持完整宽度。 */
.ency-filters label:has(#ency-search){width:100%}
.ency-filters #ency-search{width:100%;min-width:0;min-height:42px;padding:0 12px}
@keyframes toast-exit-left{from{transform:translateX(-50%);opacity:1}to{transform:translateX(calc(-50% - 360px));opacity:0}}
#toast.toast-leaving{animation:toast-exit-left .72s cubic-bezier(.7,0,.84,0) both}
.ency-filters label:has(#ency-search){display:flex;flex-direction:column;flex-wrap:nowrap;gap:7px;font-size:12px;width:100%}
.ency-filters label:has(#ency-search) #ency-search{width:100%;font-size:13px}

/* Shared themed dropdowns; native controls remain the form/event source. */
.select-picker{position:relative;min-width:0;width:100%}
.select-picker select.select-native{display:none!important}
.select-trigger{width:100%;min-height:42px;padding:10px 16px;display:flex;align-items:center;text-align:left;border:1px solid color-mix(in srgb,var(--accent) 45%,var(--line));border-radius:9px;background:linear-gradient(135deg,color-mix(in srgb,var(--panel) 90%,var(--accent) 10%),var(--panel));color:var(--text);font:inherit;box-shadow:inset 0 1px #fff5,0 2px 8px #0001;transition:border-color .2s,box-shadow .2s;cursor:pointer}
.select-trigger:hover{border-color:var(--accent)}
.select-picker.open .select-trigger,.select-trigger:focus-visible{border-color:var(--accent);outline:0;box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 18%,transparent),0 8px 20px #0002}
.select-trigger:disabled{opacity:.45;cursor:not-allowed}
.select-menu{position:fixed;z-index:1000;overflow:auto;overscroll-behavior:contain;padding:6px;border:1px solid var(--accent);border-radius:9px;background:var(--panel);color:var(--text);box-shadow:0 12px 28px #0003;scrollbar-width:thin;scrollbar-color:var(--line) var(--panel)}
.select-option{display:flex;align-items:center;justify-content:space-between;gap:14px;width:100%;min-height:38px;padding:9px 11px;border:0;border-radius:7px;background:transparent;color:var(--text);text-align:left;font:inherit;font-size:13px;cursor:pointer}
.select-option:hover,.select-option.highlighted{background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--accent-deep)}
.select-option[aria-selected=true]{background:color-mix(in srgb,var(--accent) 22%,transparent);color:var(--accent-deep);font-weight:700}
.select-option:disabled{opacity:.4;cursor:not-allowed;background:transparent}
.select-option b{flex:none;font-size:14px}
.select-group{padding:9px 11px 5px;color:var(--muted);font-size:11px}
.settings-row .select-picker{flex:1;width:auto;min-width:0}.settings-row .select-trigger{font-size:13px;min-height:38px}
.filters .select-picker{width:auto;min-width:130px}.level-profession-field .select-trigger{height:44px}

/* 同一配方跨涨点颜色合并为一张卡片，阶段次数分别展示。 */
.route:has(>.route-card){padding-bottom:22px}
.route-card{row-gap:12px;margin-top:16px;padding:20px 16px;border:1px solid color-mix(in srgb,var(--accent) 45%,var(--line));border-left:4px solid var(--accent);border-radius:10px;background:var(--c-fdf8ea);box-shadow:0 3px 10px #00000008}
.route-card-heading{min-width:0}
.route-unit-cost{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 10px;margin-top:10px;font-size:13px;color:var(--muted)}
.route-unit-cost>strong{color:var(--accent-deep);font-weight:600}
.route-unit-cost>small{font-size:11px}
.route-stages{grid-column:2 / -1;display:grid;gap:8px;padding-top:10px;border-top:1px dashed var(--line);font-size:12px;color:var(--muted)}
.route-stage{display:grid;grid-template-columns:42px 85px minmax(0,1fr);align-items:baseline;gap:10px;line-height:1.6;font-variant-numeric:tabular-nums}
.route-stage-band{font-weight:600}
.route-stage strong{color:var(--text);font-weight:600}
.route-stages .mini{margin-top:4px}
@media(max-width:750px){.route-card{padding:16px 12px}.route-card>.route-materials{grid-row:2}.route-stage{grid-template-columns:32px 72px minmax(0,1fr);gap:6px}}

/* 后台路线搜索的进度反馈，页面导航仍然可用。 */
.level-loading{display:flex;flex-direction:column;align-items:center;gap:16px;padding:48px 24px;text-align:center}
.level-loading h2{line-height:1.5}
.level-loading p{margin:0;line-height:1.7;font-size:14px;color:var(--muted)}
.level-loading small{color:var(--muted);font-size:12px}
.level-loading progress{width:min(360px,100%);height:10px;border:0;border-radius:10px;overflow:hidden;appearance:none;background:var(--line);accent-color:var(--accent)}
.level-loading progress::-webkit-progress-bar{background:var(--line);border-radius:10px}
.level-loading progress::-webkit-progress-value{background:var(--accent);border-radius:10px;transition:width .2s}
.level-loading progress::-moz-progress-bar{background:var(--accent);border-radius:10px}
.level-spinner{width:36px;height:36px;border:3px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:level-spin .8s linear infinite}
@keyframes level-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.level-spinner{animation:none}.level-loading progress::-webkit-progress-value{transition:none}}

/* 自由线路与替代配方选择。 */
.route-card{position:relative;padding-right:112px}
.route-replace{position:absolute;right:12px;top:12px;min-height:34px;padding:7px 12px;border-radius:8px;font-size:12px;font-weight:600;line-height:1.5;white-space:nowrap;transition:background .2s,border-color .2s}
.route-replace:hover{border-color:var(--accent)}
#route-picker{width:min(720px,calc(100vw - 32px));height:min(850px,90vh);max-height:90vh;display:flex;flex-direction:column;overflow:hidden;padding:24px;border:1px solid var(--line);border-radius:14px;background:var(--panel);color:var(--text);box-shadow:0 20px 70px #0004}
#route-picker:not([open]){display:none}
#route-picker::backdrop{background:#0006}
.route-picker-header{display:flex;align-items:center;justify-content:space-between;gap:16px}.route-picker-header h2{margin:0;font-size:20px}
#route-picker>p{font-size:13px;line-height:1.7;color:var(--muted)}
#route-picker label{display:flex;gap:8px;flex-direction:column;font-size:13px}#route-picker input{min-height:42px;width:100%}
#route-recipe-choices{display:grid;gap:10px;margin-top:16px;min-height:80px;flex:1;overflow:auto}
.route-recipe-choice{display:grid;gap:8px;width:100%;text-align:left;padding:14px;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--text)}
.route-recipe-choice:hover,.route-recipe-choice.selected{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--panel))}
.route-recipe-choice .route-materials{justify-content:flex-start}.route-recipe-choice small{color:var(--muted)}
#route-recipe-settings{flex-shrink:0;border-top:1px solid var(--line);margin-top:16px;padding-top:10px}#route-recipe-settings:empty{display:none}
#route-recipe-settings input{max-width:160px}
@media(max-width:650px){.level-strategies{flex-wrap:wrap}.level-strategy-switch{flex-wrap:wrap}.level-strategy-switch button{padding:9px 10px}.route-card{padding-top:58px;padding-right:12px}#route-picker{padding:16px}}

.source-pill[data-source-details]{cursor:help;border-bottom:1px dotted currentColor}
.source-pill[data-source-details]:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.recipe-source-tooltip{position:fixed;z-index:10000;max-width:min(460px,calc(100vw - 16px));max-height:calc(100vh - 16px);overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;padding:12px 16px;border:1px solid var(--line);border-radius:9px;background:var(--panel);color:var(--text);box-shadow:0 8px 28px #0003;font-size:13px;line-height:1.7;pointer-events:none}

/* 好生意：利润、加工路线与人工效率并列。 */
.business-page{max-width:1700px;margin:auto}.business-header{display:flex;justify-content:space-between;gap:24px;align-items:center;margin:4px 0 25px}.business-eyebrow{font-size:12px;letter-spacing:1px;color:var(--accent)}.business-header h1{font-size:30px;letter-spacing:-1px;margin:10px 0}.business-header h1>span{font-size:14px;margin-left:14px;border:1px solid var(--line);padding:5px 10px;border-radius:20px;vertical-align:middle}.business-header p,.business-header small{color:var(--muted);font-size:13px}.business-market-note{display:grid;gap:8px;text-align:right;font-size:12px;color:var(--muted)}.business-market-note b{color:var(--text)}.business-categories{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px}.business-categories button{background:var(--panel);border:1px solid var(--line);border-radius:10px;text-align:left;padding:18px;display:grid;gap:12px;color:var(--text)}.business-categories button.active{border-color:var(--accent);box-shadow:inset 0 3px var(--accent)}.business-categories small{color:var(--accent);font-size:11px}.business-categories b{font-size:16px;display:flex;justify-content:space-between;gap:8px}.business-categories em{font-style:normal;color:var(--accent)}.business-categories span{font-size:11px;color:var(--muted)}.business-settings{border:1px solid var(--line);border-radius:8px;margin-bottom:20px;background:var(--panel)}.business-settings summary{cursor:pointer;padding:15px 18px;font-size:13px}.business-settings summary>span{color:var(--muted);font-size:12px;margin-left:20px}.business-settings-grid{padding:5px 18px;display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.business-settings-grid label{display:grid;gap:8px;font-size:12px;color:var(--muted)}.business-settings-grid label>span{display:flex;gap:8px;align-items:center}.business-settings-grid input{width:100%;min-width:0}.business-settings input,.business-settings select,.business-toolbar input,.business-toolbar select{padding:8px 10px;border:1px solid var(--line);border-radius:6px;background:var(--bg);color:var(--text)}.business-settings>.business-note{padding:0 18px 12px}.business-toolbar{display:flex;gap:12px;align-items:center;margin:20px 0;font-size:12px;flex-wrap:wrap}.business-toolbar label{display:flex;gap:10px;align-items:center}.business-toolbar>input{flex:1;min-width:180px}.business-toolbar>span{color:var(--muted)}.business-layout{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(350px,1fr);align-items:start;gap:20px}.business-table-scroll{overflow:auto}.business-table{width:100%;font-size:12px}.business-table th{white-space:nowrap;font-size:11px;padding:15px 12px}.business-table td{padding:15px 12px;vertical-align:middle}.business-table td:first-child{padding:0;min-width:230px}.business-table td:first-child button{display:flex;gap:12px;align-items:center;width:100%;text-align:left;padding:18px 12px;background:transparent;border:0;color:var(--text)}.business-table td:first-child button span{display:grid;gap:6px}.business-table b{font-size:13px}.business-table small{display:block;color:var(--muted);font-size:10px;margin-top:5px}.business-table em{font-size:10px;color:var(--accent);font-style:normal}.business-table .selected{background:color-mix(in srgb,var(--accent) 8%,transparent)}.business-positive{color:var(--accent)}.business-table .money{white-space:nowrap;font-size:12px}.business-table .money i{font-size:9px}.business-detail{padding:22px;overflow:hidden}.business-detail-head h2{font-size:22px;margin:10px 0}.business-detail-head p{font-size:12px;color:var(--muted);line-height:1.6}.business-detail-profit{padding:22px 0;border-bottom:1px solid var(--line);display:grid;gap:9px}.business-detail-profit>span{font-size:12px;color:var(--muted)}.business-detail-profit strong{font-size:25px;color:var(--accent)}.business-detail-profit small{font-size:11px;color:var(--muted)}.business-ledger{display:grid;gap:14px;padding:20px 0;font-size:12px}.business-ledger>div{display:flex;justify-content:space-between;gap:12px}.business-ledger .business-capital{padding-top:15px;border-top:1px dashed var(--line);color:var(--muted)}.business-detail h3{font-size:13px;margin:20px 0 14px}.business-steps{list-style:none;counter-reset:step;padding:0}.business-steps li{counter-increment:step;position:relative;padding:0 0 18px 30px;border-left:1px solid var(--line);margin-left:9px}.business-steps li:before{content:counter(step);position:absolute;left:-10px;top:0;font-size:10px;border:1px solid var(--accent);background:var(--panel);color:var(--accent);border-radius:50%;width:19px;height:19px;text-align:center;line-height:18px}.business-steps b{display:block;font-size:12px}.business-steps span{font-size:11px;color:var(--muted);display:block;margin-top:7px}.business-time{border:1px solid var(--line);border-radius:8px;padding:14px;display:grid;gap:10px;font-size:12px}.business-time small,.business-note{font-size:11px;color:var(--muted);line-height:1.8}.business-mini-table{width:100%;font-size:11px}.business-mini-table td,.business-mini-table th{padding:10px 5px}.business-mini-table .money{font-size:11px;white-space:nowrap}.business-mini-table .money i{font-size:9px}.business-mini-table small{display:block;margin-top:5px;color:var(--muted);font-size:9px}.business-mini-table .item-with-icon{cursor:pointer}.business-rule-panel{margin-top:24px;border:1px solid var(--line);padding:18px;border-radius:8px;background:var(--panel);font-size:12px}.business-rule-panel summary{cursor:pointer}.business-note a{color:var(--accent)}.business-rule-panel table{font-size:11px;width:100%}.business-rule-panel td{padding:10px}.business-list .empty{padding:70px 25px;line-height:1.8}.business-list .empty h2{font-size:18px}.business-list .empty p{font-size:13px}.business-list .empty small{font-size:11px}
@media(max-width:1250px){.business-layout{grid-template-columns:1fr}.business-detail{max-width:100%}.business-header{align-items:start}.business-categories{grid-template-columns:repeat(2,1fr)}}@media(max-width:700px){.business-header{display:block}.business-market-note{text-align:left;margin-top:15px}.business-header h1{font-size:23px}.business-settings-grid{grid-template-columns:repeat(2,1fr)}.business-settings summary>span{display:block;margin:8px 0 0}.business-categories button{padding:12px}.business-categories b{font-size:13px}}
.business-toolbar>label{flex:0 0 auto;white-space:nowrap}.business-toolbar label .select-picker{width:175px}.business-toolbar>.select-picker{width:190px;flex:0 0 190px}.business-toolbar>.select-picker .select-trigger{font-size:12px}.business-toolbar>input{min-width:180px}.business-table button:focus-visible{outline-offset:-3px}
.business-detail-head{position:relative;padding-right:115px}.business-open-craft{position:absolute;right:0;top:0;white-space:nowrap;font-size:12px;padding:9px 12px}
.recipe-manufacturing-total{display:grid;gap:5px;text-align:right;white-space:nowrap}.recipe-manufacturing-total>span{font-size:11px;color:var(--muted)}.recipe-manufacturing-total>strong{font-size:16px;color:var(--accent)}.craft-plan-panel .recipe-preview-actions{gap:20px;flex-wrap:wrap}
.craft-plan-panel .recipe-fixed-detail{align-self:stretch;grid-template-rows:auto auto minmax(56px,1fr)}.craft-plan-panel .recipe-manufacturing-total{grid-column:1/-1;grid-row:3;justify-self:end;align-self:end;padding:12px 0}

.level-purchases .purchase-total{display:grid;gap:8px;min-width:210px}
.route-cost{display:flex;justify-content:space-between;align-items:baseline;gap:18px}
.route-cost>span{font-size:12px;color:var(--muted)}
.purchase-total .original strong{font-size:14px;color:var(--muted);font-weight:500}
.purchase-total .actual strong{font-size:20px}
.level-inventory-note{font-size:12px;line-height:1.7;margin:16px 24px 4px}
.level-purchases .level-owned{width:68px;text-align:right;padding:8px}
.level-purchases td:nth-child(4){font-weight:500;color:var(--text)}
.level-purchases table{min-width:600px}

.skill-cap-reminder{display:flex;align-items:flex-start;gap:12px;border:1px solid #c57833;border-left:4px solid #bb6328;border-radius:8px;padding:14px 16px;background:color-mix(in srgb,#eeac65 18%,var(--panel));color:var(--text)}
.skill-cap-icon{display:grid;place-items:center;flex:none;width:24px;height:24px;border-radius:50%;background:#b65f25;color:#fff;font-weight:800}
.skill-cap-reminder strong{font-size:14px;color:#994714}
.skill-cap-reminder p{font-size:13px;line-height:1.7;margin:6px 0;color:var(--text)}
.skill-cap-reminder small{font-size:12px;color:var(--muted)}
.route-card>.skill-cap-reminder{grid-column:1/-1;margin-right:-92px}
@media(max-width:650px){.route-card>.skill-cap-reminder{margin-right:0}}

/* 专业大全习得成本：分别显示学费、商人价和当前市场图纸价。 */
.learning-cost-cell{min-width:165px}
.learning-costs{display:grid;gap:8px;font-size:12px}
.learning-cost-line{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 10px}
.learning-cost-line>span{color:var(--muted)}
.learning-cost-line>strong{color:var(--accent-deep);font-weight:600;white-space:nowrap}
.learning-costs small{display:block;font-size:11px;color:var(--muted);line-height:1.5}

.route-learning-cost{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 10px;margin-top:10px;font-size:12px;color:var(--muted)}
.route-learning-cost>strong{color:var(--accent-deep)}
.route-learning-cost>small{font-size:11px}
.route-learning-cost>label{display:flex;align-items:center;gap:5px;flex-basis:100%;cursor:pointer}
.route-learning-cost input{width:14px;height:14px;accent-color:var(--accent)}
.level-learning-summary{padding:18px 24px;border-bottom:1px solid var(--line)}
.level-learning-summary h3{font-size:15px;margin:0 0 8px}
.level-learning-summary>p{line-height:1.7}
.level-learning-row{display:grid;grid-template-columns:minmax(100px,1fr) minmax(120px,2fr) auto;gap:12px;font-size:12px;margin-top:12px;align-items:baseline}
.level-learning-row>span:nth-child(2){color:var(--muted)}
.level-learning-row>strong{color:var(--accent-deep)}
.level-known-recipes{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:0 24px 16px;font-size:12px;color:var(--muted)}
.level-known-recipes button{font-size:12px;padding:6px 9px}
@media(max-width:650px){.level-learning-row{grid-template-columns:1fr auto}.level-learning-row>span:nth-child(2){grid-row:2;grid-column:1/-1}.level-learning-summary{padding:16px}}

.level-fishing-list{padding:18px 24px;border-bottom:1px solid var(--line);overflow-x:auto}
.level-fishing-list h3{font-size:15px;margin:0 0 8px}
.level-fishing-list>p{line-height:1.7}
.level-purchases .level-fishing-list table{min-width:420px;width:100%}
.level-fishing-list [data-catch-quantity]{font-weight:700;color:var(--accent);white-space:nowrap}
@media(max-width:650px){.level-fishing-list{padding:16px}}

/* Site registration stays visible across desktop and mobile pages. */
main>footer{flex-wrap:wrap;gap:12px}
main>footer .icp-link{color:inherit;text-decoration:none;white-space:nowrap}
main>footer .icp-link:hover{text-decoration:underline}
