/* Campaign and branching research. Load after style.css and ux.css. */
.campaign-panel{
  --campaign-accent:#74885d;
  background:#eef3e6;border:1px solid #cbd8ba;border-radius:11px;
  padding:18px 21px;margin:0 0 18px;color:#536b3e;
}
.campaign-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}
.campaign-heading>div{min-width:0}
.campaign-heading .eyebrow{color:#7d8f69;font-size:9px;letter-spacing:1.25px;line-height:1.5}
.campaign-heading h2{font-size:23px;line-height:1.2;color:#3e5730;margin:4px 0 6px}
.campaign-heading p{font-size:12px;line-height:1.55;color:#6d7e5c;max-width:780px}
.campaign-count{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-width:70px;flex-shrink:0;background:#fffef8;border:1px solid #d7e2c9;border-radius:9px;padding:11px 13px;font-family:var(--display);font-size:24px;color:#5e7a47;line-height:1.15}
.campaign-count small,.campaign-count span{font-family:var(--font);font-size:10px;font-weight:500;color:#849671;letter-spacing:.4px;white-space:nowrap}
.campaign-progress{height:6px;background:#dfe8d2;border-radius:10px;overflow:hidden;margin-top:14px}
.campaign-progress>i{display:block;height:100%;max-width:100%;background:#94af75;border-radius:10px;transition:width .3s ease}
.campaign-items{display:flex;flex-wrap:wrap;gap:7px 9px;margin-top:12px}
.campaign-item{display:inline-flex;align-items:center;gap:6px;min-height:29px;padding:5px 8px;background:#f7f9f1;border:1px solid #dce4d1;border-radius:6px;color:#839273;font-size:11px;line-height:1.35}
.campaign-item>.icon{width:13px;height:13px;flex-shrink:0;color:#a5b396}
.campaign-item.met{color:#4c6b35;background:#e1edcf;border-color:#c0d4a8}
.campaign-item.met>.icon{color:#6f914d}
.campaign-item strong{font-weight:600}
.campaign-actions{display:flex;align-items:center;justify-content:flex-end;gap:9px;flex-wrap:wrap;margin-top:13px}
.campaign-actions button{min-height:34px;font-size:11px;padding:7px 11px;border:1px solid #bfcea9;border-radius:6px;background:#fffef9;color:#5c7745}
.campaign-panel.complete{background:#edf5dd;border-color:#b1cb8b}

.research-shell{min-width:0;--research-ink:#4e6042;--research-muted:#7a896e;--research-line:#dce2d2}
.research-shell>h2{font-size:27px;color:#415935;margin:8px 0 9px}
.research-shell>p{font-size:12px;line-height:1.6;color:#758566;max-width:850px}
.research-overview{display:grid;grid-template-columns:minmax(140px,1fr) minmax(140px,1fr) minmax(280px,2.25fr);gap:13px;margin-bottom:18px;align-items:stretch}
.research-wallet{display:flex;flex-direction:column;justify-content:center;gap:5px;min-width:0;border:1px solid #dce3d0;border-radius:10px;padding:17px 19px;background:#fffef9}
.research-wallet>small,.research-wallet>span:first-child{font-size:11px;color:#7a8a6c;line-height:1.35}
.research-wallet>strong{font-family:var(--display);font-size:29px;line-height:1.15;font-weight:500;letter-spacing:-.7px;color:#4c6937}
.research-wallet>span:last-child{font-size:11px;line-height:1.45;color:#92a080}
.research-wallet .icon{width:17px;height:17px;margin-right:4px;vertical-align:-4px;color:#8ba171}
.research-wallet.rp{background:#f7f3fc;border-color:#e1d8eb}
.research-wallet.rp>strong{color:#86709b}
.research-wallet.rp .icon{color:#a38cb7}
.active-project{min-width:0;padding:16px 19px;border:1px solid #cfc0e1;border-radius:10px;background:#eee8f5;display:flex;flex-direction:column;justify-content:center}
.active-project .eyebrow{font-size:9px;color:#9680aa;letter-spacing:1.1px;line-height:1.5;margin-bottom:5px}
.active-project>strong{font-family:var(--display);font-size:20px;line-height:1.25;letter-spacing:-.5px;color:#715487}
.active-project>p{font-size:11px;line-height:1.5;color:#8d78a1;margin-top:5px}
.active-project .icon{height:15px;width:15px;vertical-align:-3px;margin-right:5px}
.active-project.empty{border-style:dashed;border-color:#d8dfcc;background:#f4f6ed}
.active-project.empty .eyebrow{color:#8b9b7a}
.active-project.empty>strong{color:#6a7e56;font-size:19px}
.active-project.empty>p{color:#899878}
.active-project>button{align-self:flex-start;margin-top:9px;min-height:32px;border:1px solid #cbbadd;border-radius:5px;padding:6px 9px;font-size:11px;color:#806195;background:#fbf8fe}
.research-workbar{height:7px;background:#ded3e9;border-radius:6px;overflow:hidden;margin-top:12px}
.research-workbar>i{display:block;height:100%;max-width:100%;min-width:0;background:#a28ab8;border-radius:6px;transition:width .3s ease}
.research-work-label{display:flex;justify-content:space-between;align-items:baseline;gap:10px;font-size:11px;color:#8d78a0;line-height:1.4;margin-top:7px}
.research-work-label>strong{color:#7c6192;font-weight:600;white-space:nowrap}
.research-explainer{display:flex;align-items:flex-start;gap:9px;padding:11px 14px;background:#f5f2e8;border:1px solid #e5decb;border-radius:8px;color:#8d8268;font-size:12px;line-height:1.55;margin-bottom:17px}
.research-explainer>.icon{width:17px;height:17px;margin-top:1px;flex-shrink:0;color:#ac9d79}
.research-explainer strong{color:#7e7256;font-weight:600}
.research-branches{display:flex;align-items:stretch;gap:7px;overflow-x:auto;scrollbar-width:thin;scrollbar-color:#bccba9 transparent;padding:2px 2px 8px;margin:0 0 13px;scroll-padding:2px;max-width:100%}
.research-branches>button{min-height:42px;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:10px 13px;border:1px solid #dce2d1;background:#f7f8f0;border-radius:7px;color:#849374;font-size:12px;line-height:1.2;white-space:nowrap;flex-shrink:0}
.research-branches>button>.icon{width:16px;height:16px;color:#9dac8b}
.research-branches>button>small{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 4px;border-radius:5px;background:#e8eddf;color:#8a9b77;font-size:10px;margin-left:2px}
.research-branches>button:hover{border-color:#b1c294;background:#f0f4e7;color:#637c4d}
.research-branches>button.active,.research-branches>button[aria-pressed="true"],.research-branches>button[aria-selected="true"]{background:#e6efd8;border-color:#a5bd86;color:#56733b;box-shadow:inset 0 0 0 .5px #a5bd86}
.research-branches>button.active>.icon,.research-branches>button[aria-pressed="true"]>.icon{color:#7d9a5e}
.research-branches>button.active>small,.research-branches>button[aria-pressed="true"]>small{color:#647e47;background:#d5e5c0}
.research-section-heading{display:flex;justify-content:space-between;align-items:center;gap:13px;margin:1px 0 15px}
.research-section-heading h3{font-size:21px;line-height:1.3;color:#50673f}
.research-section-heading p{font-size:12px;line-height:1.5;color:#8c9b7b;margin-top:4px}
.research-section-heading>span{font-size:11px;color:#8a997a;white-space:nowrap}
.research-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px;align-items:stretch;min-width:0}
.research-node{--node-accent:#91a67c;--node-soft:#eef3e6;--node-line:#d7e2c8;position:relative;display:flex;flex-direction:column;min-width:0;padding:18px 19px 16px;background:#fffef9;border:1px solid #dce3d1;border-radius:10px;overflow-wrap:anywhere;transition:border-color .15s ease,box-shadow .15s ease}
.research-node[data-branch="switches"]{--node-accent:#a08ab9;--node-soft:#f1eaf8;--node-line:#e2d5ed}
.research-node[data-branch="acoustics"]{--node-accent:#8ba995;--node-soft:#eaf2eb;--node-line:#d4e3d5}
.research-node[data-branch="materials"]{--node-accent:#c4a17e;--node-soft:#f8efe4;--node-line:#ecddc6}
.research-node[data-branch="formats"]{--node-accent:#91a876;--node-soft:#eff4e6;--node-line:#dce5c8}
.research-node[data-branch="electronics"]{--node-accent:#8d9fbd;--node-soft:#ecf0f8;--node-line:#d9e0ed}
.research-node[data-branch="firmware"]{--node-accent:#b78f9a;--node-soft:#f6eaf0;--node-line:#ecd8e0}
.research-node-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:14px;min-height:35px}
.research-node-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:37px;height:37px;border:1px solid var(--node-line);border-radius:9px;background:var(--node-soft);color:var(--node-accent);transform:rotate(-4deg)}
.research-node-icon>.icon{width:20px;height:20px;stroke-width:1.5}
.research-status{font-size:10px;font-weight:600;line-height:1.2;padding:5px 7px;border:1px solid #dfe5d6;background:#f5f7ee;color:#91a07f;border-radius:5px;max-width:calc(100% - 50px);text-align:right}
.research-status .icon{width:11px;height:11px;margin-right:3px;vertical-align:-2px}
.research-node>h3{font-size:21px;line-height:1.2;letter-spacing:-.55px;color:#526d3e;margin:0 0 8px}
.research-node>p{font-size:12px;line-height:1.55;color:#849674;margin:0 0 15px}
.research-node .eyebrow{font-size:9px;color:var(--node-accent);letter-spacing:1.1px;margin-bottom:6px;line-height:1.45}
.research-costs{display:flex;flex-wrap:wrap;align-items:center;gap:7px 13px;padding:11px 0;border-top:1px solid #e6ebdf;border-bottom:1px solid #e6ebdf;margin-top:auto;color:#8c9b7d;font-size:11px;line-height:1.4}
.research-costs>span{display:inline-flex;align-items:baseline;gap:5px;max-width:100%}
.research-costs strong{font-family:var(--display);font-size:16px;font-weight:500;letter-spacing:-.35px;color:#627c4c;white-space:nowrap}
.research-costs .icon{height:13px;width:13px;vertical-align:-2px;color:#a0ae90}
.research-costs .missing,.research-costs .insufficient,.research-costs [data-met="false"]{color:#b48a6a}
.research-costs .missing strong,.research-costs .insufficient strong,.research-costs [data-met="false"] strong{color:#a87c58}
.research-prereqs{display:flex;flex-direction:column;gap:6px;margin:12px 0 0;color:#8a997b;font-size:11px;line-height:1.4}
.research-prereqs:empty{display:none}
.research-prereqs>strong,.research-prereqs>small{font-size:10px;font-weight:500;color:#9ba78f;letter-spacing:.2px}
.research-prereqs>span,.research-prereqs>li{display:flex;gap:6px;align-items:flex-start;line-height:1.4;list-style:none}
.research-prereqs>span>.icon,.research-prereqs>li>.icon{height:12px;width:12px;margin-top:2px;flex-shrink:0;color:#a8b39c}
.research-prereqs>.met{color:#6b8853}
.research-prereqs>.met>.icon{color:#8aa86c}
.research-unlocks{display:flex;align-items:flex-start;flex-wrap:wrap;gap:5px 6px;margin:12px 0 0;font-size:11px;line-height:1.4;color:#89997a}
.research-unlocks>strong,.research-unlocks>small{display:block;flex-basis:100%;font-size:10px;font-weight:500;color:#9ba98e;letter-spacing:.2px;margin-bottom:1px}
.research-unlocks>span{display:inline-flex;align-items:center;gap:4px;padding:4px 6px;border:1px solid var(--node-line);border-radius:4px;background:var(--node-soft);color:var(--node-accent);font-size:10px;line-height:1.4;max-width:100%;overflow-wrap:anywhere}
.research-unlocks>span>.icon{height:11px;width:11px;flex-shrink:0}
.research-node-footer{display:flex;flex-direction:column;gap:7px;margin-top:16px;padding-top:0}
.research-node-footer>button{display:flex;align-items:center;justify-content:center;gap:7px;min-height:38px;width:100%;padding:9px 11px;border:1px solid #bfcea9;border-radius:6px;background:#eef4e3;color:#708956;font-size:12px;font-weight:600;line-height:1.35}
.research-node-footer>button>.icon{height:15px;width:15px;flex-shrink:0}
.research-node-footer>button:hover:not(:disabled){border-color:#9cb77b;background:#e1edcf;color:#5e7b40}
.research-node-footer>button:disabled,.research-node-footer>button[aria-disabled="true"]{background:#f2f4eb;border-color:#e0e6d6;color:#a1ad92;cursor:not-allowed}
.research-node-footer>small{font-size:11px;text-align:center;line-height:1.4;color:#9ba78e}
.research-node[data-status="affordable"]{border-color:#a6bf86;box-shadow:0 3px 10px #5d783111}
.research-node[data-status="affordable"] .research-status{color:#718d50;border-color:#ccddb4;background:#eef5e3}
.research-node[data-status="affordable"] .research-node-footer>button{background:#d9efb4;border-color:#b4ce8f;color:#537339;box-shadow:0 2px 0 #c5dca2}
.research-node[data-status="affordable"] .research-node-footer>button:hover:not(:disabled){background:#ceE89f;border-color:#a1bc7a}
.research-node[data-status="active"]{background:#fcf9ff;border-color:#c3afd6;box-shadow:inset 0 3px 0 #c7b1dc,0 4px 12px #80639409}
.research-node[data-status="active"] .research-status{background:#eee5f6;border-color:#d8c6e7;color:#9679ad}
.research-node[data-status="active"]>h3{color:#88679f}
.research-node[data-status="active"] .research-node-footer>button{background:#f1eaf8;border-color:#dfd2e9;color:#a58ab9}
.research-node[data-status="active"] .research-workbar{margin-top:14px}
.research-node[data-status="done"]{background:#f5f8ef;border-color:#cfddbd}
.research-node[data-status="done"] .research-status{background:#e3eed3;border-color:#c8dab0;color:#849e64}
.research-node[data-status="done"]>h3{color:#7d9564}
.research-node[data-status="done"] .research-node-icon{background:#e8f0dd;border-color:#d2dfbf;color:#92aa75}
.research-node[data-status="done"] .research-node-footer>button{background:#edf4e3;border-color:#dce7ce;color:#a1b48b}
.research-node[data-status="locked"]{background:#f8f8f2;border-style:dashed;border-color:#dbe1d1}
.research-node[data-status="locked"]>h3{color:#899a78}
.research-node[data-status="locked"]>p{color:#98a58a}
.research-node[data-status="locked"] .research-node-icon{background:#f1f3e9;border-color:#e1e5d6;color:#aab69a;transform:none}
.research-node[data-status="locked"] .research-status{color:#a5b095;background:#f3f4ec;border-color:#e2e6d9}
.research-node[data-status="locked"] .research-costs strong{color:#91a17e}
.research-node[data-status="locked"] .research-unlocks>span{background:#f0f3e8;border-color:#e1e7d5;color:#a0ad91}
.research-empty{grid-column:1/-1;min-height:180px;border:1px dashed #cedabd;border-radius:10px;background:#f6f8ef;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:28px;text-align:center;color:#91a07e}
.research-empty>.icon{height:35px;width:35px;color:#afbf9c;margin-bottom:12px}
.research-empty h3{font-size:23px;color:#7d9464;margin-bottom:8px}
.research-empty p{font-size:12px;line-height:1.55;max-width:450px}
.research-next-hint{display:flex;align-items:flex-start;gap:9px;padding:12px 14px;border:1px solid #d6e3c4;border-radius:8px;background:#eff5e5;color:#82986a;font-size:12px;line-height:1.55;margin:17px 0}
.research-next-hint>.icon{width:18px;height:18px;margin-top:1px;flex-shrink:0;color:#9bb57e}
.research-next-hint strong{color:#6c8950}
.research-next-hint button{font-size:11px;text-decoration:underline;text-underline-offset:3px;min-height:26px;color:#718c55}

.specialization-heading{display:flex;justify-content:space-between;align-items:center;gap:14px;margin:26px 0 13px}
.specialization-heading h3{font-size:24px;color:#617b4c}
.specialization-heading p{font-size:12px;line-height:1.5;color:#92a080;margin-top:5px}
.specialization-heading>span{font-size:11px;color:#9aa78b}
.specialization-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:16px 0 22px}
.specialization-card{display:flex;flex-direction:column;align-items:flex-start;min-width:0;padding:19px;border:1px solid #dce3d1;border-radius:10px;background:#fffef9;color:#8d9d7b;position:relative}
.specialization-card>.icon,.specialization-card>.specialization-icon{display:flex;align-items:center;justify-content:center;width:36px;height:36px;color:#97ac7d;margin-bottom:12px}
.specialization-icon>.icon{width:28px;height:28px}
.specialization-card h3{font-size:22px;line-height:1.25;color:#6f8955;margin-bottom:7px}
.specialization-card p{font-size:12px;line-height:1.55;color:#93a181;margin-bottom:13px}
.specialization-card>strong{font-size:11px;line-height:1.5;color:#9a85aa;background:#f2edf7;border:1px solid #e5daee;border-radius:5px;padding:5px 8px;margin-bottom:14px}
.specialization-card button{margin-top:auto;min-height:36px;padding:8px 11px;border:1px solid #d2debf;border-radius:6px;background:#f0f5e7;color:#839b68;font-size:12px;line-height:1.4;width:100%;display:flex;align-items:center;justify-content:center;gap:6px}
.specialization-card button>.icon{width:14px;height:14px}
.specialization-card button:hover:not(:disabled){background:#e3efd2;border-color:#b7cf98;color:#6d8d4e}
.specialization-card button:disabled{background:#f5f7ee;color:#a1ae91;border-color:#e1e7d6}
.specialization-card.selected{background:#f0f6e6;border-color:#abc58a;box-shadow:inset 0 0 0 .5px #abc58a}
.specialization-card.selected:after{content:'✓';position:absolute;top:17px;right:16px;border-radius:50%;width:23px;height:23px;display:flex;align-items:center;justify-content:center;background:#dcecc4;border:1px solid #bbd39a;color:#799955;font-size:13px}
.specialization-card.selected button{background:#e1efcd;border-color:#bed6a0;color:#88a468}
.campaign-note{font-size:11px;line-height:1.6;color:#9aa68d;margin:14px 0}

/* Markup integrations: prerequisites are links to other research cards. */
.research-prereqs>button{display:flex;align-items:center;gap:7px;min-height:33px;width:100%;padding:6px 8px;border:1px solid #e0dfd3;border-radius:5px;background:#f6f4ec;color:#a18d6c;font-size:11px;line-height:1.4;text-align:left;text-decoration:underline;text-decoration-color:#c9b99b;text-underline-offset:3px}
.research-prereqs>button>.icon{width:12px;height:12px;flex-shrink:0;color:#b5a282}
.research-prereqs>button:after{content:'↗';margin-left:auto;padding-left:7px;font-size:13px;line-height:1;color:#b7a482;text-decoration:none}
.research-prereqs>button:hover{background:#eee9da;border-color:#d0c3a7;color:#8e7957}
.research-prereqs>button.met{border-color:#d8e2c9;background:#f0f5e7;color:#809866;text-decoration-color:#bfd1a8}
.research-prereqs>button.met>.icon{color:#9cb77e}
.research-prereqs>button.met:after{color:#a1b88a}
.research-prereqs>button.met:hover{background:#e8f0dc;border-color:#c4d6ac;color:#6e8d50}
.research-work-label{flex-wrap:wrap;gap:5px 12px}
.research-work-label .text-button{min-height:32px;padding:6px 3px;margin-left:auto;font-size:11px;line-height:1.35;color:#9276a6;text-decoration:underline;text-decoration-color:#baa3cc;text-underline-offset:3px;border-radius:4px}
.research-work-label .text-button:hover{color:#7a5b91;background:#e5d8ee;text-decoration-color:#a98dbd}
.campaign-next{font-size:11px;line-height:1.5;color:#879874;margin-top:11px;padding-top:9px;border-top:1px solid #dbe5cf}
.campaign-panel.compact{display:grid;grid-template-columns:minmax(200px,1fr) minmax(0,1.7fr);gap:7px 20px;padding:12px 16px;margin-bottom:16px;background:#f0f4e9}
.campaign-panel.compact .campaign-heading{grid-column:1;grid-row:1/3;gap:13px}
.campaign-panel.compact .campaign-heading .eyebrow{font-size:8px;letter-spacing:1px}
.campaign-panel.compact .campaign-heading h2{font-size:20px;line-height:1.2;margin:3px 0 0}
.campaign-panel.compact .campaign-heading p{display:none}
.campaign-panel.compact .campaign-count{min-width:51px;padding:7px 8px;font-size:22px;gap:2px;border-radius:6px}
.campaign-panel.compact .campaign-count small{font-size:8px}
.campaign-panel.compact .campaign-progress{grid-column:2;grid-row:1;height:4px;margin:0;align-self:end}
.campaign-panel.compact .campaign-items{grid-column:2;grid-row:2;margin:0;gap:5px 6px;align-self:start}
.campaign-panel.compact .campaign-item{min-height:26px;padding:4px 6px;font-size:10px}
.campaign-panel.compact .campaign-item>.icon{width:11px;height:11px}
.campaign-panel.compact .campaign-next{grid-column:1/-1;margin:0;padding-top:6px;font-size:10px;line-height:1.4}
.migration-note{display:flex;align-items:flex-start;gap:8px;margin:0 0 17px;padding:11px 14px;border:1px solid #e3d6b8;border-radius:8px;background:#f7f1e3;color:#a08b63;font-size:12px;line-height:1.55}
.migration-note>.icon{width:16px;height:16px;margin-top:2px;flex-shrink:0;color:#b5a075}
.research-node-footer>.unlocked-text{display:flex;align-items:center;justify-content:center;gap:6px;min-height:34px;padding:7px 10px;border:1px solid #d9e5c8;border-radius:6px;background:#ebf3de;color:#91a876;font-size:11px;line-height:1.4}
.research-node-footer>.unlocked-text>.icon{width:13px;height:13px}
.research-node-footer>strong{display:flex;justify-content:center;align-items:center;min-height:34px;padding:7px 10px;border:1px solid #e0d2ea;border-radius:6px;background:#f1eaf7;color:#a086b3;font-family:var(--display);font-size:16px;font-weight:500;line-height:1.4}
.research-node[data-status="available"]{border-color:#b4c995;box-shadow:0 3px 10px #5d78310b}
.research-node[data-status="available"] .research-status{color:#809c5d;border-color:#d0e1b9;background:#edf5e1}
.research-node[data-status="available"] .research-node-footer>button{background:#dcefb9;border-color:#b5cf90;color:#637f46;box-shadow:0 2px 0 #c9dda9}
.research-node[data-status="available"] .research-node-footer>button:hover:not(:disabled){background:#d0e9a6;border-color:#a6c17e}
.sale-progress{display:flex;flex-direction:column;gap:6px;margin:0 0 19px;text-align:left}
.sale-progress>span{display:flex;align-items:flex-start;gap:7px;padding:8px 10px;border:1px solid #e0d6eb;border-radius:6px;background:#f3edf9;color:#a18ab5;font-size:11px;line-height:1.5}
.sale-progress>span>.icon{height:14px;width:14px;margin-top:1px;flex-shrink:0;color:#b19cc3}
.research-wallet>strong>span{font-family:var(--font);font-size:13px;color:#aa94bb;margin-left:2px;font-weight:500;letter-spacing:0}
.specializations{margin-top:25px}
.research-shell .section-heading .count{width:auto;min-width:31px;padding:0 6px;border-radius:5px;white-space:nowrap}
.research-node>p{color:#738165}
.research-node[data-status="locked"]>p{color:#849076}
.research-node[data-status="locked"]>h3{color:#75886a}
.research-node-footer>small{color:#839174}
.research-prereqs{color:#7a8b6a}
.research-work-label{color:#8a709f}
.campaign-heading p{color:#6c7f5b}
.research-wallet>span:last-child{color:#7f9070}

@media(min-width:1500px){
  .research-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
  .research-node{padding:18px 17px 16px}
  .research-overview{grid-template-columns:minmax(170px,1fr) minmax(170px,1fr) minmax(350px,2.6fr)}
}
@media(max-width:1120px){
  .research-overview{grid-template-columns:minmax(130px,1fr) minmax(130px,1fr) minmax(240px,2fr);gap:11px}
  .research-wallet{padding:15px 16px}
  .research-wallet>strong{font-size:26px}
  .active-project{padding:15px 16px}
  .active-project>strong{font-size:19px}
  .research-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
  .research-node{padding:16px}
  .research-node>h3{font-size:20px}
  .research-node>p{font-size:12px}
  .research-costs{gap:6px 9px}
  .research-costs strong{font-size:15px}
  .research-branches>button{font-size:11px;padding:9px 11px}
  .specialization-grid{gap:12px}
  .specialization-card{padding:17px}
  .specialization-card h3{font-size:21px}
}
@media(max-width:860px){
  .research-overview{grid-template-columns:1fr 1fr;gap:10px}
  .research-overview>.active-project{grid-column:1/-1;padding:15px 18px}
  .research-wallet{padding:13px 17px;gap:4px}
  .research-wallet>strong{font-size:25px}
  .research-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}
  .research-node{padding:18px}
  .research-node>h3{font-size:22px}
  .research-node>p{font-size:12px}
  .research-branches{gap:6px;margin-bottom:11px}
  .research-branches>button{min-height:40px;padding:9px 12px;font-size:12px}
  .research-section-heading h3{font-size:21px}
  .campaign-panel{padding:16px 18px}
  .campaign-heading h2{font-size:22px}
  .campaign-count{min-width:65px;font-size:24px;padding:10px 12px}
  .specialization-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:11px}
  .specialization-card{padding:16px 14px}
  .specialization-card h3{font-size:20px}
  .specialization-card p{font-size:12px}
  .specialization-card>strong{padding:5px 6px;font-size:10px}
  .campaign-panel.compact{grid-template-columns:minmax(180px,1fr) minmax(0,1.5fr);gap:7px 14px;padding:12px 14px}
  .campaign-panel.compact .campaign-heading h2{font-size:19px}
  .campaign-panel.compact .campaign-count{min-width:47px;font-size:21px}
}
@media(max-width:620px){
  .campaign-panel{padding:14px;margin-bottom:15px;border-radius:9px}
  .campaign-heading{gap:11px;align-items:flex-start}
  .campaign-heading .eyebrow{font-size:8px;letter-spacing:1px}
  .campaign-heading h2{font-size:21px;line-height:1.2;margin:4px 0 7px}
  .campaign-heading p{font-size:11px;line-height:1.5}
  .campaign-count{min-width:55px;padding:9px 8px;font-size:23px;margin-top:1px;border-radius:7px}
  .campaign-count small,.campaign-count span{font-size:8px;letter-spacing:0}
  .campaign-progress{height:5px;margin-top:12px}
  .campaign-items{gap:6px;margin-top:10px}
  .campaign-item{font-size:10px;min-height:27px;padding:4px 6px;gap:4px}
  .campaign-item>.icon{height:11px;width:11px}
  .campaign-actions{justify-content:stretch;margin-top:11px}
  .campaign-actions button{flex:1;min-height:35px;font-size:11px}
  .research-shell>h2{font-size:24px}
  .research-shell>p{font-size:12px;line-height:1.55}
  .research-overview{gap:9px;margin-bottom:13px;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .research-wallet{padding:13px 14px;gap:4px;border-radius:8px}
  .research-wallet>small,.research-wallet>span:first-child{font-size:11px}
  .research-wallet>strong{font-size:25px}
  .research-wallet>span:last-child{font-size:10px;line-height:1.4}
  .research-overview>.active-project{padding:14px 15px;border-radius:8px}
  .active-project .eyebrow{font-size:8px;letter-spacing:1px;margin-bottom:4px}
  .active-project>strong{font-size:20px}
  .active-project>p{font-size:11px;line-height:1.5}
  .research-workbar{height:7px;margin-top:11px}
  .research-work-label{font-size:11px;gap:8px;margin-top:6px}
  .research-explainer{font-size:11px;padding:10px 12px;gap:7px;margin-bottom:13px;line-height:1.5}
  .research-explainer>.icon{height:15px;width:15px;margin-top:1px}
  .research-branches{gap:6px;padding-bottom:8px;margin:0 -1px 11px;scroll-snap-type:x proximity}
  .research-branches>button{min-height:39px;font-size:11px;padding:9px 11px;gap:6px;scroll-snap-align:start}
  .research-branches>button>.icon{height:15px;width:15px}
  .research-branches>button>small{height:18px;min-width:18px;font-size:9px;margin-left:0}
  .research-section-heading{align-items:flex-start;gap:10px;margin-bottom:12px}
  .research-section-heading h3{font-size:21px}
  .research-section-heading p{font-size:11px;line-height:1.5;margin-top:5px}
  .research-section-heading>span{font-size:10px;padding-top:4px}
  .research-grid{grid-template-columns:minmax(0,1fr);gap:12px}
  .research-node{padding:17px 18px;border-radius:9px}
  .research-node-top{margin-bottom:11px;min-height:33px}
  .research-node-icon{height:35px;width:35px;border-radius:8px}
  .research-node-icon>.icon{height:19px;width:19px}
  .research-status{font-size:10px;padding:5px 7px}
  .research-node .eyebrow{font-size:8px;letter-spacing:1px;margin-bottom:5px}
  .research-node>h3{font-size:23px;line-height:1.2;margin-bottom:7px}
  .research-node>p{font-size:12px;line-height:1.55;margin-bottom:13px}
  .research-costs{padding:10px 0;gap:7px 13px;font-size:11px}
  .research-costs strong{font-size:17px}
  .research-costs .icon{height:13px;width:13px}
  .research-prereqs{font-size:11px;line-height:1.45;gap:6px;margin-top:11px}
  .research-prereqs>strong,.research-prereqs>small{font-size:10px}
  .research-unlocks{margin-top:11px;gap:5px 6px;font-size:11px}
  .research-unlocks>strong,.research-unlocks>small{font-size:10px}
  .research-unlocks>span{font-size:11px;padding:4px 6px}
  .research-node-footer{margin-top:14px;gap:7px}
  .research-node-footer>button{min-height:40px;font-size:12px;padding:10px 11px}
  .research-node-footer>small{font-size:11px;line-height:1.45}
  .research-empty{min-height:170px;padding:25px 18px}
  .research-empty h3{font-size:23px}.research-empty p{font-size:12px}
  .research-next-hint{font-size:11px;line-height:1.5;padding:11px 12px;gap:7px;margin:13px 0}
  .research-next-hint>.icon{height:16px;width:16px}
  .specialization-heading{align-items:flex-start;margin:22px 0 12px;gap:10px}
  .specialization-heading h3{font-size:23px}
  .specialization-heading p{font-size:11px;line-height:1.5}
  .specialization-heading>span{font-size:10px;padding-top:4px}
  .specialization-grid{grid-template-columns:minmax(0,1fr);gap:11px;margin:13px 0 18px}
  .specialization-card{padding:17px 18px;border-radius:9px}
  .specialization-card>.icon,.specialization-card>.specialization-icon{width:32px;height:32px;margin-bottom:9px}
  .specialization-card h3{font-size:23px;margin-bottom:7px}
  .specialization-card p{font-size:12px;line-height:1.55;margin-bottom:12px}
  .specialization-card>strong{font-size:11px;padding:5px 8px;margin-bottom:13px}
  .specialization-card button{min-height:39px;padding:9px 10px;font-size:12px}
  .specialization-card.selected:after{top:17px;right:17px}
  .campaign-note{font-size:11px;line-height:1.55}
  .campaign-next{font-size:11px;line-height:1.5;margin-top:10px;padding-top:8px}
  .campaign-panel.compact{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;padding:12px 13px;margin-bottom:14px}
  .campaign-panel.compact .campaign-heading{grid-column:1;grid-row:auto;align-items:center;gap:11px}
  .campaign-panel.compact .campaign-heading h2{font-size:20px}
  .campaign-panel.compact .campaign-heading .eyebrow{font-size:8px}
  .campaign-panel.compact .campaign-count{padding:6px 8px;min-width:51px;font-size:21px}
  .campaign-panel.compact .campaign-progress{grid-column:1;grid-row:auto;height:4px}
  .campaign-panel.compact .campaign-items{grid-column:1;grid-row:auto;gap:5px}
  .campaign-panel.compact .campaign-item{font-size:10px;min-height:25px;padding:4px 6px}
  .campaign-panel.compact .campaign-next{grid-column:1;margin:0;padding-top:6px;font-size:10px}
  .research-prereqs>button{min-height:35px;padding:7px 8px;font-size:11px}
  .research-work-label .text-button{font-size:11px;min-height:32px;padding:5px 2px}
  .migration-note{font-size:11px;line-height:1.5;padding:10px 12px;margin-bottom:14px;gap:7px}
  .migration-note>.icon{height:15px;width:15px;margin-top:1px}
  .sale-progress{gap:6px;margin-bottom:18px}
  .sale-progress>span{font-size:11px;line-height:1.5;padding:8px 9px}
}
@media(max-width:370px){
  .campaign-panel{padding:12px}.campaign-heading h2{font-size:19px}
  .campaign-count{min-width:49px;padding:9px 6px;font-size:21px}
  .research-wallet{padding:12px}.research-wallet>strong{font-size:23px}
  .research-work-label{font-size:10px;gap:6px}
  .research-node{padding:16px}.research-node>h3{font-size:22px}
  .research-costs{gap:7px 10px}.research-costs strong{font-size:16px}
}
@media(prefers-reduced-motion:reduce){
  .campaign-progress>i,.research-workbar>i,.research-node{transition:none}
}

/* Keep long-session reading clear; pastel surfaces carry the softer colors. */
.research-node>p,.research-node[data-status="locked"]>p{
  color:#657557;font-size:12px;line-height:1.6;
}
.active-project>p{color:#795d8c;font-size:12px;line-height:1.55}
.active-project.empty>p{color:#677a53;font-size:12px}
.research-costs{color:#687b54;font-size:12px;line-height:1.5}
.research-costs strong{color:#526e3a}
.research-node[data-status="locked"] .research-costs strong{color:#738765}
.research-costs .missing,.research-costs .insufficient,.research-costs [data-met="false"]{color:#946d46}
.research-costs .missing strong,.research-costs .insufficient strong,.research-costs [data-met="false"] strong{color:#8d623c}
.research-prereqs{color:#667c50;font-size:12px;line-height:1.5}
.research-prereqs>span,.research-prereqs>li{line-height:1.5}
.research-prereqs>.met{color:#5c783f}
.research-prereqs>button{min-height:35px;color:#8c7049;font-size:12px;line-height:1.45;text-decoration-color:#b8a079}
.research-prereqs>button.met{color:#617e45;text-decoration-color:#a9c18d}
.research-work-label{color:#795a8f;font-size:12px;line-height:1.5}
.research-work-label>strong{color:#735184}
.research-work-label .text-button{color:#7c5a93;font-size:12px;text-decoration-color:#a68ab9}
.research-unlocks>span{color:#738557;font-size:12px;line-height:1.45}
.research-node[data-branch="switches"] .research-unlocks>span{color:#826398}
.research-node[data-branch="acoustics"] .research-unlocks>span{color:#607f6c}
.research-node[data-branch="materials"] .research-unlocks>span{color:#95724f}
.research-node[data-branch="electronics"] .research-unlocks>span{color:#667d9f}
.research-node[data-branch="firmware"] .research-unlocks>span{color:#956c7d}
.research-node[data-status="locked"] .research-unlocks>span{color:#7b8d69}
.research-node-footer>small{color:#687d52;font-size:12px;line-height:1.5}
.research-node-footer>.unlocked-text{color:#6e8b50;font-size:12px}
.research-node-footer>strong{color:#856499}
.research-wallet>span:last-child{color:#63784f;font-size:12px;line-height:1.5}
.research-wallet.rp>span:last-child{color:#7c628d}
.specialization-card p{color:#667951;font-size:12px;line-height:1.6}
.specialization-heading p,.research-section-heading p{color:#697e53;font-size:12px;line-height:1.55}
.research-explainer{color:#7b6e52;font-size:12px;line-height:1.55}
.research-next-hint{color:#687f4d;font-size:12px;line-height:1.55}
.research-footer{color:#74865f;font-size:12px;line-height:1.55}
.campaign-heading p{color:#60754c;font-size:12px;line-height:1.55}
.campaign-next{color:#657b4f;font-size:12px;line-height:1.5}
.campaign-note{color:#758660;font-size:12px;line-height:1.55}
.migration-note{color:#856b43;font-size:12px;line-height:1.55}
.sale-progress>span{color:#7c5e91;font-size:12px;line-height:1.5}

.order-research{display:flex;align-items:center;gap:5px;font-size:11px;line-height:1.4;color:#79668d;padding:5px 7px;border-radius:5px;background:#f0eaf5;margin:5px 0}.order-research .icon{width:13px;height:13px}.order-research.affinity{background:#e4edd9;color:#4f7038;font-weight:600}

.certificate-guide{border:1px solid #d8dfca;border-radius:9px;background:#fafbf5;margin:0 0 18px;padding:13px 16px;color:#5b7049}.certificate-guide summary{display:flex;gap:8px;align-items:center;cursor:pointer;font-weight:600;font-size:13px}.certificate-guide summary .icon{width:17px;height:17px}.certificate-guide summary span{margin-left:auto}.certificate-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:15px}.certificate-grid article{border:1px solid #dfe5d5;padding:12px;border-radius:7px;background:#fffef9}.certificate-grid strong{display:flex;align-items:center;gap:5px;font-size:14px}.certificate-grid strong .icon{width:14px;height:14px}.certificate-grid small{display:block;margin:5px 0;color:#778466}.certificate-grid p,.certificate-guide>p{font-size:12px;line-height:1.55;margin-top:8px;color:#60714f}.certificate-grid article.met{background:#e8f0dd;border-color:#b4c99b}.campaign-next .text-button{color:#596e46;text-decoration:underline;margin-left:8px;font-size:11px}@media(max-width:650px){.certificate-grid{grid-template-columns:1fr}.campaign-next .text-button{display:block;margin:6px 0 0}}

.configuration-panel{background:#f4f5ee;border:1px solid #d9dfcf;border-radius:8px;padding:11px 13px;margin:12px 0;color:#5f714d}.configuration-panel summary{cursor:pointer;font-size:13px;font-weight:600;display:flex;justify-content:space-between;gap:8px}.configuration-panel summary span{font-size:12px;font-weight:400;color:#677957}.configuration-panel p,.configuration-panel>small{display:block;font-size:12px;line-height:1.55;margin:10px 0;color:#647653}.configuration-controls{display:grid;grid-template-columns:1.3fr 1fr;gap:12px}.configuration-controls label{display:flex;flex-direction:column;gap:5px;font-size:12px}.configuration-controls select{width:100%;min-height:39px;border:1px solid #c6d0b8;border-radius:6px;background:#fffef8;color:#4e633c;padding:8px;font:inherit}@media(max-width:450px){.configuration-controls{grid-template-columns:1fr}.configuration-panel summary{flex-wrap:wrap}}
