.planner{--node:52px;margin-top:1.25rem}.planner-toolbar{border:1px solid var(--line);background:var(--surface);border-radius:.75rem;flex-wrap:wrap;align-items:center;gap:.75rem 1rem;padding:.75rem 1rem;display:flex}.planner-field{color:var(--fg-2);align-items:center;gap:.4rem;font-size:.85rem;display:flex}.planner-field select{background:var(--surface-2);color:var(--fg);border:1px solid var(--line);border-radius:.5rem;padding:.3rem .5rem}.planner-check input{accent-color:var(--ember)}.planner-points{color:var(--fg-2);margin-left:auto;font-size:.85rem}.planner-points strong{color:var(--ember-soft);font-size:1.15rem}.planner-points.over strong{color:#e07a5f}.planner-actions{gap:.5rem;display:flex}.pbtn{border:1px solid var(--line);background:var(--surface-2);color:var(--fg-2);cursor:pointer;border-radius:.5rem;padding:.4rem .85rem;font-size:.85rem;font-weight:600}.pbtn:hover:not(:disabled){color:var(--fg);border-color:color-mix(in srgb, var(--ember) 40%, var(--line))}.pbtn:disabled{opacity:.45;cursor:default}.pbtn.primary{background:var(--ember);border-color:var(--ember);color:#1b1207}.pbtn.primary:hover:not(:disabled){background:var(--ember-soft)}.compare-legend{color:var(--fg-3);flex-wrap:wrap;gap:1rem;margin:.75rem 0 0;font-size:.8rem;display:flex}.compare-legend i{color:var(--ember-soft);margin-right:.25rem;font-style:normal;font-weight:700}.compare-legend a{color:var(--ember-soft);text-decoration:underline}.tree-tabs{flex-wrap:wrap;gap:.5rem;margin-top:.9rem;display:flex}.tree-tabs button{border:1px solid var(--line);background:var(--surface);color:var(--fg-2);cursor:pointer;border-radius:.6rem;padding:.45rem .9rem;font-size:.85rem;font-weight:600}.tree-tabs button b{color:var(--tree,var(--fg-3));margin-left:.3rem}.tree-tabs button.active{color:var(--fg);border-color:var(--tree,var(--ember));box-shadow:inset 0 0 0 1px var(--tree,var(--ember))}.planner-howto{color:var(--fg-3);border:1px solid var(--line);background:color-mix(in srgb, var(--ember) 5%, transparent);border-radius:8px;margin-top:.7rem;padding:.45rem .7rem;font-size:.78rem}.planner-howto b{color:var(--fg-2)}.planner-howto .spark{color:var(--ember-soft)}.planner-status{color:var(--fg-3);min-height:1.1em;margin:.45rem 0 0;font-size:.75rem}.layout-toggle{border:1px solid var(--line);border-radius:6px;margin-left:auto;display:inline-flex;overflow:hidden}.layout-toggle button{color:var(--fg-3);padding:5px 10px;font-size:11px;font-weight:600}.layout-toggle button.active{background:color-mix(in srgb, var(--ember) 18%, transparent);color:var(--fg)}.planner-main{grid-template-columns:1fr;gap:1rem;margin-top:.9rem;display:grid}@media (min-width:1024px){.planner-main{grid-template-columns:minmax(0,1fr) 300px}}.planner-canvas{border:1px solid var(--line);background:radial-gradient(1200px 800px at 50% 40%, color-mix(in srgb, var(--tree,var(--core)) 7%, transparent), transparent), var(--surface);touch-action:none;cursor:grab;border-radius:.75rem;height:clamp(460px,70vh,820px);position:relative;overflow:hidden}.planner-canvas:active{cursor:grabbing}.planner-world{transform-origin:0 0;will-change:transform;position:absolute;inset:0}.planner-links{position:absolute;top:0;left:0;overflow:visible}.planner-links line{stroke:color-mix(in srgb, var(--fg-3) 30%, transparent);stroke-width:3px}.planner-links line.on{stroke:color-mix(in srgb, var(--ember) 65%, transparent);stroke-width:4px}.pnode{width:var(--node);flex-direction:column;align-items:center;gap:3px;display:flex;position:absolute}.pnode button{width:var(--node);height:var(--node);border:2px solid color-mix(in srgb, var(--tree) 55%, var(--line));background:var(--surface-2);cursor:pointer;border-radius:50%;place-items:center;padding:0;transition:transform 80ms;display:grid;position:relative}.pnode button:hover{transform:scale(1.08)}.pnode-icon{image-rendering:auto;pointer-events:none;background-size:512px 320px;border-radius:8px;width:40px;height:40px}.pnode-icon.big{width:48px;height:48px}.pnode-glyph{color:var(--tree,var(--core));place-items:center;font-size:1.2rem;display:grid}.pnode-rank{color:var(--fg);background:var(--surface);border:1px solid var(--line);pointer-events:none;border-radius:999px;padding:0 5px;font-size:10px;font-weight:700;position:absolute;bottom:-6px;left:50%;transform:translate(-50%)}.pnode-diff{color:#14100d;background:var(--ember-soft);pointer-events:none;border-radius:50%;place-items:center;width:18px;height:18px;font-size:11px;font-weight:800;display:grid;position:absolute;top:-7px;right:-7px}.pnode-name{text-align:center;color:var(--fg-2);pointer-events:none;text-shadow:0 1px 3px #000c;max-width:92px;font-size:10px;line-height:1.15}.planner-canvas.zoomed-out .pnode-name,.planner-canvas.zoomed-out .pnode-rank,.planner-canvas.zoomed-out .pnode-diff{display:none}.planner-canvas.zoomed-out .pnode button{border-width:1px}.pnode.learned button{border-color:var(--tree);box-shadow:0 0 0 2px color-mix(in srgb, var(--tree) 60%, transparent)}.pnode.maxed button{border-color:var(--ember);box-shadow:0 0 0 2px var(--ember);background:color-mix(in srgb, var(--ember) 14%, #1b1207)}.pnode.locked button{opacity:.55;cursor:not-allowed}.pnode.sel button{outline:2px solid var(--fg);outline-offset:2px}.pnode.dim button{opacity:.35}.pnode.root button{border-color:var(--ember);background:color-mix(in srgb, var(--ember) 12%, #1b1207)}.pnode.start-here button{border-color:var(--ember)}.pnode.start-here button:after{content:"";border:2px solid color-mix(in srgb, var(--ember) 80%, transparent);pointer-events:none;will-change:transform, opacity;border-radius:50%;animation:1.9s ease-in-out infinite sparkPulse;position:absolute;inset:-3px}.planner.interacting .pnode.start-here button:after{animation-play-state:paused}.pnode.start-here .pnode-name{color:var(--ember-soft);font-weight:700}@keyframes sparkPulse{0%,to{opacity:.55;transform:scale(1)}50%{opacity:.95;transform:scale(1.55)}}@media (prefers-reduced-motion:reduce){.pnode.start-here button:after{will-change:auto;opacity:.8;animation:none;transform:none}}.planner-zoom{flex-direction:column;gap:4px;display:flex;position:absolute;bottom:10px;right:10px}.planner-zoom button{border:1px solid var(--line);background:var(--surface);width:34px;height:34px;color:var(--fg-2);cursor:pointer;border-radius:.5rem;font-size:15px}.pnode-detail{border:1px solid var(--line);background:var(--surface);border-radius:.75rem;align-self:start;padding:1rem;position:sticky;top:1rem}.pnode-empty h3{margin:.3rem 0 .5rem;font-size:1.05rem;font-weight:700}.pnode-empty p{color:var(--fg-2);font-size:.85rem}.pnode-empty .hint b{color:var(--fg)}.pdetail-head{align-items:flex-start;gap:.7rem;display:flex}.pdetail-head h3{font-size:1.05rem;font-weight:700}.pdetail-head .pbtn{margin-left:auto;padding:.25rem .5rem}.pdetail-rank{color:var(--fg-2);align-items:center;gap:.6rem;margin:.75rem 0 .5rem;font-size:.85rem;display:flex}.rank-pips{gap:3px;display:inline-flex}.rank-pips i{border:1px solid var(--line);border-radius:50%;width:10px;height:10px;display:inline-block}.rank-pips i.filled{background:var(--ember);border-color:var(--ember)}.pdetail-desc{color:var(--fg-2);white-space:pre-line;font-size:.85rem;line-height:1.5}.pdetail-vals p{color:var(--fg-2);margin-top:.35rem;font-size:.82rem}.pdetail-vals b{color:var(--fg)}.cost-note{color:var(--fg-3)}.pdetail-change{border-top:1px dashed var(--line);color:var(--fg-2);margin-top:.75rem;padding-top:.6rem;font-size:.8rem}.pdetail-flags{color:var(--fg-3);margin-top:.6rem;font-size:.75rem}.pdetail-flags a{color:var(--ember-soft)}.pdetail-req.ok{color:#6fc27b;margin-top:.6rem;font-size:.8rem}.pdetail-req.locked{border:1px solid var(--line);border-left:3px solid var(--ember);background:color-mix(in srgb, var(--ember) 7%, transparent);border-radius:8px;margin-top:.6rem;padding:.6rem .75rem;font-size:.8rem}.pdetail-req.locked p{margin:.2rem 0}.pdetail-req.locked ul{flex-wrap:wrap;gap:.35rem;margin:.4rem 0 .1rem;padding:0;list-style:none;display:flex}.req-link{border:1px solid var(--line);color:var(--fg-2);border-radius:999px;padding:2px 9px;font-size:.75rem}.req-link:hover{border-color:var(--ember);color:var(--ember-soft)}.pdetail-actions{gap:.5rem;margin-top:.9rem;display:flex}.pdetail-actions .pbtn{flex:1}.share-bar{border:1px solid var(--line);background:var(--surface);border-radius:.75rem;flex-wrap:wrap;align-items:center;gap:.75rem 1rem;margin-top:1rem;padding:.9rem 1rem;display:flex}.share-note{color:var(--fg-3);font-size:.8rem}.share-row{flex:320px;gap:.5rem;min-width:0;display:flex}.share-row input{background:var(--surface-2);border:1px solid var(--line);min-width:0;color:var(--fg-2);border-radius:.5rem;flex:1;padding:.45rem .6rem;font-size:.8rem}.pdialog-backdrop{z-index:50;background:#0009;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.pdialog{border:1px solid var(--line);background:var(--surface);width:min(560px,100%);max-height:85vh;color:var(--fg);border-radius:.9rem;padding:1.25rem;overflow:auto}.pdialog-head{align-items:flex-start;gap:1rem;display:flex}.pdialog-head h2{font-size:1.2rem;font-weight:700}.pdialog-head .pbtn{margin-left:auto}.pdialog-intro{color:var(--fg-3);margin:.5rem 0 .9rem;font-size:.82rem}.pdialog-form{gap:.5rem;display:flex}.pdialog-form input{background:var(--surface-2);border:1px solid var(--line);color:var(--fg);border-radius:.5rem;flex:1;padding:.45rem .65rem}.pdialog-msg{color:#6fc27b;margin-top:.5rem;font-size:.8rem}.pdialog-list{gap:.4rem;margin-top:.9rem;display:grid}.pdialog-empty{color:var(--fg-3);font-size:.82rem}.pdialog-row{border:1px solid var(--line);border-radius:.6rem;justify-content:space-between;align-items:center;gap:.75rem;padding:.5rem .75rem;display:flex}.pdialog-row a{color:var(--ember-soft);font-weight:600;text-decoration:none}.pdialog-row a:hover{text-decoration:underline}.pdialog-row small{color:var(--fg-3);font-size:.72rem;display:block}.pdialog-backup{border-top:1px dashed var(--line);margin-top:1.1rem;padding-top:.9rem}.pdialog-backup h3{font-size:.9rem;font-weight:700}.pdialog-backup p{color:var(--fg-3);margin:.25rem 0 .6rem;font-size:.78rem}.pdialog-backup-row{flex-wrap:wrap;gap:.5rem;display:flex}.eyebrow{letter-spacing:.08em;color:var(--fg-3);text-transform:uppercase;font-size:.68rem;font-weight:700}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.req-link.req-ok{border-color:color-mix(in srgb, #6fc27b 45%, var(--line))}.chip-ok{color:#6fc27b}.chip-key{white-space:nowrap}
