.lab-toolbar-cta .optimizer-launch { border-color: #d4b35c; color: #ffe7a1; }
.optimizer-applied-notice { padding: 14px 18px; border: 1px solid #d4b35c; border-radius: 8px; background: #253223; color: #ffebaa; font-size: 16px; line-height: 1.5; }
.optimizer-dialog .optimizer-apply { width: 100%; margin-top: 16px; border-color: #edce7e; color: #ffeba8; }
.optimizer-dialog:not([open]) { display: none !important; }
.optimizer-dialog {
  --op-gold: #edce7e;
  max-width: none;
  --op-muted: #b6c8c2;
  color: #eff4e9;
  width: min(1100px, calc(100% - 24px));
  max-height: 92vh;
  max-height: 92dvh;
  padding: 0;
  border: 1px solid #9b864d;
  border-radius: 16px;
  background: radial-gradient(ellipse at top right, #264b3b77, transparent 42rem), #07191f;
  box-shadow: 0 30px 100px #000a;
  font: 400 17px/1.55 'Source Sans 3', sans-serif;
  overflow-y: auto;
  overscroll-behavior: contain;
}
.optimizer-dialog::backdrop { background: #020b12d9; }
html:has(.optimizer-dialog[open]) { overflow: hidden; }
.optimizer-dialog * { box-sizing: border-box; }
.optimizer-dialog [hidden] { display: none !important; }
.optimizer-dialog button, .optimizer-dialog input, .optimizer-dialog select { font: inherit; }
.optimizer-dialog button, .optimizer-dialog select, .optimizer-dialog input { min-height: 44px; }
.optimizer-dialog button, .optimizer-dialog select, .optimizer-dialog input[type=number] {
  color: #f6efd7; background: #0c292d; border: 1px solid #537168; border-radius: 7px; padding: 8px 12px;
}
.optimizer-dialog button { cursor: pointer; font-weight: 700; }
.optimizer-dialog button:disabled { opacity: .5; cursor: not-allowed; }
.optimizer-dialog :focus-visible { outline: 3px solid var(--op-gold); outline-offset: 3px; }
.optimizer-heading { display: flex; align-items: start; justify-content: space-between; gap: 20px; padding: 25px 28px 18px; border-bottom: 1px solid #39574d; }
.optimizer-heading h2 { font: 700 clamp(22px, 3vw, 30px)/1.3 Cinzel, Georgia, serif; color: var(--op-gold); margin: 6px 0; }
.optimizer-heading > div { min-width: 0; }
.optimizer-heading h2 { overflow-wrap: anywhere; }
.optimizer-heading > button { flex: 0 0 auto; }
.optimizer-heading p { margin: 0; color: var(--op-muted); }
.optimizer-eyebrow { font-weight: 800; letter-spacing: .12em; text-transform: uppercase; font-size: 12px; color: #b9e8a4; }
.optimizer-content { padding: 24px 28px; }
.optimizer-notice { padding: 16px 18px; border-left: 3px solid var(--op-gold); background: #57452044; margin: 0 0 24px; }
.optimizer-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; }
.optimizer-dialog fieldset { min-width: 0; margin: 0; border: 1px solid #476353; border-radius: 10px; padding: 18px; }
.optimizer-dialog legend { padding: 0 8px; font-weight: 800; color: var(--op-gold); }
.optimizer-slots { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.optimizer-check { display: flex; align-items: center; gap: 10px; padding: 6px; cursor: pointer; }
.optimizer-check input { width: 20px; min-height: 20px; height: 20px; accent-color: #d9c275; flex: 0 0 auto; }
.optimizer-field { display: grid; min-width: 0; gap: 8px; margin-bottom: 16px; font-weight: 700; }
.optimizer-field select { width: 100%; min-width: 0; }
.optimizer-hint { color: var(--op-muted); font-size: 14px; margin: 10px 0 0; }
.optimizer-targets { margin-top: 22px; }
.optimizer-target { display: grid; grid-template-columns: minmax(120px, 1.4fr) 1fr 1fr 44px; gap: 10px; margin: 14px 0; align-items: end; }
.optimizer-target label { display: grid; gap: 6px; font-size: 14px; }
.optimizer-target input, .optimizer-target select { width: 100%; min-width: 0; }
.optimizer-ack { margin: 22px 0; align-items: start; padding: 14px; border: 1px solid #54694c; border-radius: 8px; background: #1c3329; }
.optimizer-ack input { margin-top: 3px; }
.optimizer-actions { display: flex; gap: 12px; flex-wrap: wrap; }
.optimizer-dialog .optimizer-run { color: #182417; background: linear-gradient(135deg, #f2db9c, #b99a48); border-color: #ffe4a0; }
.optimizer-status { min-height: 30px; margin: 20px 0 0; overflow-wrap: anywhere; }
.optimizer-error { color: #ffd0c7; }
.optimizer-results { margin-top: 24px; }
.optimizer-results h3 { color: var(--op-gold); font: 700 22px/1.4 Cinzel, Georgia, serif; }
.optimizer-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.optimizer-card { min-width: 0; border: 1px solid #8b784b; border-radius: 10px; padding: 18px; background: linear-gradient(150deg, #14342e, #071922); }
.optimizer-card h4 { margin: 0 0 8px; color: var(--op-gold); font: 700 19px Georgia, serif; }
.optimizer-badge { color: #f4d89b; font-size: 13px; font-weight: 800; text-transform: uppercase; }
.optimizer-card dl { display: grid; grid-template-columns: 1fr auto; gap: 6px 12px; margin: 16px 0; }
.optimizer-card dd { margin: 0; font-weight: 800; color: #c4ecaa; }
.optimizer-card ul { padding-left: 18px; font-size: 15px; }
.optimizer-card li { margin-bottom: 8px; overflow-wrap: anywhere; }
.optimizer-weights { margin-top: 20px; color: var(--op-muted); font-size: 14px; }
.optimizer-summary { color: #d5e8cc; font-size: 16px; }
.optimizer-slots + button { margin-top: 12px; }
.optimizer-accessory-title { margin: 16px 0 8px; color: var(--op-gold); font-weight: 800; border-top: 1px solid #476353; padding-top: 12px; }
.optimizer-select-actions { margin-top: 14px; }
.optimizer-select-actions button { max-width: 100%; white-space: normal; text-align: left; }
.optimizer-point-plan { margin: 14px 0; padding: 10px 12px; border: 1px solid #537168; border-radius: 8px; background: #051b22; font-size: 14px; }
.optimizer-point-plan strong { color: var(--op-gold); }
.optimizer-point-plan p { margin: 6px 0 0; overflow-wrap: anywhere; }
.optimizer-exclusions { margin-top: 20px; padding: 14px; border: 1px solid #9b864d; border-radius: 8px; }
.optimizer-exclusions ul { padding-left: 18px; }
.optimizer-exclusions li { margin: 10px 0; overflow-wrap: anywhere; }
.optimizer-dialog [data-exclude], .optimizer-dialog [data-allow] { display: block; margin: 6px 0 12px; font-size: 14px; }
@media (max-width: 800px) { .optimizer-grid, .optimizer-cards { grid-template-columns: 1fr; } }
@media (max-width: 480px) {
  .optimizer-heading { padding: 20px 16px 14px; gap: 10px; }
  .optimizer-content { padding: 20px 16px; }
  .optimizer-dialog fieldset { padding: 14px 12px; }
  .optimizer-target { grid-template-columns: 1fr 1fr 44px; }
  .optimizer-target label:first-child { grid-column: 1/-1; }
  .optimizer-slots { grid-template-columns: 1fr 1fr; }
}

/* Atelier presentation: scoped to the experimental builder, never the global Forge. */
.optimizer-dialog {
  --op-gold: #f0d390;
  --op-muted: #a7bcc5;
  width: min(1240px, calc(100% - 32px));
  border-color: #a48b52;
  border-radius: 20px;
  background: radial-gradient(ellipse at 100% 0, #24495580, transparent 52%),
    repeating-linear-gradient(135deg, #fff1 0, #fff1 1px, transparent 1px, transparent 70px), #08161f;
  box-shadow: 0 0 0 5px #d5bc6912, 0 36px 120px #000d;
  font-size: 16px;
}
.optimizer-dialog::backdrop { background: #020a12e8; backdrop-filter: blur(5px); }
.optimizer-icon { width: 24px; height: 24px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; flex: 0 0 auto; }
.optimizer-heading {
  padding: 32px 34px 26px;
  background: radial-gradient(ellipse at 90% 0, #b7903b29, transparent 70%), linear-gradient(120deg, #152d38, #0c1d28);
  border-bottom: 1px solid #bda26166;
  position: relative;
}
.optimizer-heading::after { content: ''; position: absolute; bottom: -1px; left: 34px; width: 110px; height: 3px; background: var(--op-gold); }
.optimizer-heading h2 { font-size: clamp(25px, 3.1vw, 38px); letter-spacing: -.025em; margin: 10px 0 14px; }
.optimizer-eyebrow { color: #d3bd84; letter-spacing: .18em; font-size: 11px; }
.optimizer-character { display: inline-block; padding: 4px 13px; border: 1px solid #748e9855; border-radius: 30px; background: #06151e88; font-size: 14px; }
.optimizer-content { padding: 26px 34px 32px; }
.optimizer-notice { border: 1px solid #a48b524d; border-left: 3px solid #c3a56a; background: #c6a34a0d; color: #ddd4ba; font-size: 14px; border-radius: 4px 10px 10px 4px; }
.optimizer-grid { grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 24px; align-items: stretch; }
.optimizer-dialog fieldset { padding: 22px; background: linear-gradient(140deg, #132a36e8, #081922f2); border: 1px solid #3d5968; border-radius: 12px; box-shadow: 0 8px 24px #0002; }
.optimizer-dialog legend { font: 700 16px/1.5 Cinzel, Georgia, serif; padding: 0 10px; letter-spacing: .015em; }
.optimizer-slots { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.optimizer-slots > .optimizer-check { position: relative; padding: 12px 10px; min-height: 54px; border: 1px solid #324c59; border-radius: 7px; background: #061722; transition: border-color .15s, background .15s; font-size: 14px; font-weight: 700; }
.optimizer-slots > .optimizer-check:has(input:checked) { color: #fff0ba; border-color: #bc9c57; background: linear-gradient(120deg, #55472877, #1d323b); box-shadow: inset 2px 0 #e9c77f; }
.optimizer-slots > .optimizer-check:hover { border-color: #cfb379; }
.optimizer-slots .optimizer-icon { color: #97aeb8; width: 22px; height: 22px; }
.optimizer-slots :has(input:checked) > .optimizer-icon { color: #f4d890; }
.optimizer-slots input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.optimizer-slots > label:focus-within { outline: 3px solid #ffe6a5; outline-offset: 3px; }
.optimizer-accessories { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.optimizer-accessories > .optimizer-check { flex-direction: column; text-align: center; gap: 5px; font-size: 12px; }
.optimizer-accessory-title { color: #aac2cd; font-size: 11px; letter-spacing: .13em; text-transform: uppercase; border-color: #34505f; margin-top: 20px; padding-top: 16px; }
.optimizer-selection { color: #f0d390; font-weight: 600; }
.optimizer-rules { margin-top: 14px; color: var(--op-muted); font-size: 13px; }
.optimizer-rules summary { cursor: pointer; }
.optimizer-rules p { padding-left: 12px; border-left: 1px solid #647480; }
.optimizer-dialog select, .optimizer-dialog input[type=number] { background: #04131c; border-color: #456170; color-scheme: dark; min-height: 48px; }
.optimizer-field { color: #dee7e9; font-size: 14px; margin-bottom: 17px; }
.optimizer-field:not(:first-of-type) { margin-top: 22px; }
.optimizer-hint { line-height: 1.6; font-size: 13px; }
.optimizer-dialog button { background: linear-gradient(160deg, #223b47, #132933); border-color: #546b75; font-size: 14px; }
.optimizer-dialog button:hover:not(:disabled) { border-color: var(--op-gold); color: #fff0bd; }
.optimizer-dialog .optimizer-run, .optimizer-dialog .optimizer-apply { background: linear-gradient(110deg, #f4dca0, #c4a35c); color: #17222a; border: 1px solid #ffedbd; box-shadow: 0 4px 18px #e7b55116; }
.optimizer-dialog .optimizer-run:hover:not(:disabled), .optimizer-dialog .optimizer-apply:hover:not(:disabled) { color: #08161f; background: #ffe3a0; }
.optimizer-dialog .optimizer-run { min-width: 230px; padding: 13px 24px; }
.optimizer-dialog .optimizer-ack { background: #182e38; border-color: #49646d; color: #d0dfe2; font-size: 14px; }
.optimizer-targets { margin-top: 26px !important; }
.optimizer-target { padding: 14px; border: 1px solid #314e5f; border-radius: 9px; background: #06151f; }
.optimizer-status { border-top: 1px solid #39505b; padding-top: 20px; color: #e5d19e; }
.optimizer-status.optimizer-error { color: #ffb5a3; }
.optimizer-dialog input.optimizer-invalid,
.optimizer-dialog select.optimizer-invalid {
  border-color: #ff574d !important;
  background: #251316 !important;
  box-shadow: 0 0 0 2px rgba(255, 87, 77, .2), 0 0 18px rgba(255, 87, 77, .12);
}
.optimizer-field-error {
  display: block;
  margin-top: 2px;
  color: #ffb5a3;
  font-size: 12px;
  font-weight: 800;
  line-height: 1.35;
}
.optimizer-summary, .optimizer-weights { font-size: 13px; line-height: 1.7; }
.optimizer-cards { gap: 18px; align-items: start; }
.optimizer-card { border-radius: 13px; border-color: #536777; padding: 20px 16px; background: linear-gradient(150deg, #183443, #081a27 65%); }
.optimizer-card:first-child { border-color: #d5b674; box-shadow: 0 0 30px #e6bd5710; }
.optimizer-card-heading { display: flex; gap: 9px; align-items: center; color: var(--op-gold); }
.optimizer-card h4 { margin: 0; font: 700 18px/1.3 Cinzel, Georgia, serif; }
.optimizer-badge { display: inline-block; font-size: 10px; letter-spacing: .08em; color: #aebbc4; margin: 10px 0 0; }
.optimizer-vitals { display: grid; grid-template-columns: 1.4fr 1fr 1fr; gap: 6px; margin: 18px 0; }
.optimizer-vitals > div { display: grid; justify-items: center; gap: 2px; padding: 12px 4px; border: 1px solid #456171; border-radius: 8px; background: #071823; }
.optimizer-vitals strong { font-size: 24px; color: #fff0c1; line-height: 1.2; }
.optimizer-vitals span { font-size: 11px; color: #adc1ca; }
.optimizer-vitals .optimizer-icon { width: 17px; height: 17px; color: #c0a778; }
.optimizer-vitals > div:first-child .optimizer-icon { color: #eb8c89; }
.optimizer-card dl { font-size: 13px; padding: 14px 0; border-block: 1px solid #3d566366; gap: 5px 12px; }
.optimizer-card dd { color: #ece4c6; font-variant-numeric: tabular-nums; }
.optimizer-stat-details { padding: 10px 0; border-block: 1px solid #3d566366; font-size: 13px; }
.optimizer-stat-details summary { color: #e2ca93; cursor: pointer; min-height: 30px; display: list-item; }
.optimizer-score { display: inline-block; padding: 5px 10px; margin: 0 0 12px; color: #f3d69a; background: #cfb26510; border: 1px solid #99834f55; border-radius: 5px; font-weight: 700; font-size: 13px; }
.optimizer-advanced, .optimizer-lookup, .optimizer-required { margin: 22px 0; padding: 20px; border: 1px solid #456170; border-radius: 10px; background: #102631; }
.optimizer-advanced > summary { cursor: pointer; font-family: Cinzel, Georgia, serif; font-weight: 700; color: var(--op-gold); min-height: 30px; }
.optimizer-filter-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 18px; margin-top: 20px; }
.optimizer-filter-grid .optimizer-field { margin: 0; }
.optimizer-filter-grid input[type=number] { width: 100%; min-width: 0; }
.optimizer-companion-kinds { min-width: 0; }
.optimizer-companion-kinds .optimizer-check { flex-wrap: wrap; }
.optimizer-dofus-options { margin-top: 20px; border-top: 1px solid #3c5563; padding-top: 16px; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; font-size: 13px; }
.optimizer-dofus-options label { min-width: 0; overflow-wrap: anywhere; }
.optimizer-dofus-options input { min-height: 20px; }
.optimizer-lookup input { width: 100%; min-width: 0; color: #f5ead1; background: #04131c; border: 1px solid #456170; border-radius: 7px; padding: 10px 12px; }
.optimizer-required ul { list-style: none; padding: 0; }
.optimizer-required li { display: flex; justify-content: space-between; gap: 12px; align-items: center; border-bottom: 1px solid #314d5c; padding: 10px 0; overflow-wrap: anywhere; }
.optimizer-target { grid-template-columns: minmax(140px, 1.6fr) repeat(3, minmax(80px, 1fr)) 44px; }
@media (max-width: 650px) {
  .optimizer-filter-grid, .optimizer-dofus-options { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .optimizer-companion-kinds { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 4px 10px; }
  .optimizer-target { grid-template-columns: 1fr 1fr 44px; }
  .optimizer-target > label:first-child { grid-column: 1/-1; }
  .optimizer-target > label:nth-child(4) { grid-column: 1/3; }
  .optimizer-target > button { grid-column: 3; grid-row: 3; }
  .optimizer-required li { flex-wrap: wrap; }
  .optimizer-advanced, .optimizer-lookup, .optimizer-required { padding: 15px 12px; }
}
.optimizer-card ul { list-style: none; padding: 0; margin: 16px 0; }
.optimizer-card .optimizer-gear { display: grid; grid-template-columns: 42px minmax(0, 1fr) 44px; gap: 8px; align-items: center; margin: 0; padding: 9px 0; border-bottom: 1px solid #3a536144; }
.optimizer-gear-art { position: relative; width: 42px; height: 46px; display: grid; place-items: center; background: #04141d; border: 1px solid #53677766; border-radius: 6px; color: #a0acb5; }
.optimizer-gear-art img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; background: #071823; border-radius: 6px; }
.optimizer-gear-info { min-width: 0; }
.optimizer-gear-info > summary { cursor: pointer; min-height: 44px; padding: 4px 12px 4px 0; position: relative; list-style: none; }
.optimizer-gear-info > summary::-webkit-details-marker { display: none; }
.optimizer-gear-info > summary::after { content: ''; position: absolute; right: 1px; top: 16px; width: 5px; height: 5px; border-right: 1px solid #c1b18b; border-bottom: 1px solid #c1b18b; transform: rotate(45deg); }
.optimizer-gear-info[open] > summary::after { transform: rotate(225deg); }
.optimizer-card .optimizer-gear-effects { margin: 8px 0; padding: 0; color: #b6c7cf; font-size: 12px; line-height: 1.6; }
.optimizer-card .optimizer-gear-effects li { margin: 0; }
.optimizer-gear-info small { display: block; font-size: 10px; color: #93acba; margin-bottom: 2px; }
.optimizer-gear-info strong { display: block; font-size: 12px; line-height: 1.35; font-weight: 600; color: #e8e3d1; }
.optimizer-dialog .optimizer-gear [data-exclude] { font-size: 0; margin: 0; width: 44px; height: 44px; padding: 0; border-color: transparent; background: transparent; color: #aa9d82; }
.optimizer-gear [data-exclude]::after { content: '×'; font-size: 22px; }
.optimizer-point-plan { background: #102630; border-color: #3f5965; font-size: 12px; }
@media (prefers-reduced-motion: no-preference) {
  .optimizer-dialog[open] { animation: atelier-open .23s ease-out; }
  @keyframes atelier-open { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }
}
@media (max-width: 900px) { .optimizer-grid { grid-template-columns: 1fr; } .optimizer-cards { grid-template-columns: 1fr; } }
@media (max-width: 480px) {
  .optimizer-dialog { width: calc(100% - 16px); border-radius: 12px; }
  .optimizer-heading { padding: 22px 16px; gap: 8px; }
  .optimizer-heading h2 { font-size: 25px; }
  .optimizer-heading > button { font-size: 12px; padding-inline: 8px; }
  .optimizer-content { padding: 20px 14px; }
  .optimizer-dialog fieldset { padding: 16px 12px; }
  .optimizer-dialog legend { font-size: 14px; }
  .optimizer-slots > .optimizer-check { padding: 10px 8px; gap: 8px; font-size: 12px; }
  .optimizer-accessories > .optimizer-check { font-size: 10px; }
  .optimizer-target { padding: 10px; gap: 8px; }
  .optimizer-ack { padding: 12px; }
  .optimizer-dialog .optimizer-run { width: 100%; }
}
