.solver-container{--solver-accent:#c9a961;--solver-accent-bright:#d4b56f;--solver-accent-dim:#b89a5a;--solver-accent-glow:rgb(201 169 97 / 40%);--solver-cols:4;--solver-rows:4;--solver-cell-size:clamp(2.25rem, 12vw, 4.375rem);--solver-cell-gap:var(--space-xs);--solver-cell-radius:4px;--solver-cell-bg:#1e1e1e;--solver-cell-border:var(--color-border-subtle);--solver-cell-border-width:1px}.solver-container{display:flex;flex-direction:column;gap:var(--space-md);width:100%;max-width:100%;padding:var(--space-md);background:rgb(255 255 255 / 3%);border:2px solid var(--color-border-medium);border-radius:12px;box-shadow:0 4px 12px rgb(0 0 0 / 40%);color:var(--color-text-primary);box-sizing:border-box}.solver-container *,.solver-container ::after,.solver-container ::before{box-sizing:border-box}.solver-container>*{min-width:0;max-width:100%}@media (width >= 48.0625em){.solver-container{width:fit-content;min-width:22.5rem;padding:var(--space-lg)}}.solver-container.is-centered{align-items:center;text-align:center}.solver-only-page .content-container{border-bottom:none}.solver-only-page .solver-container{margin-inline:auto}.solver-title{margin:0;color:var(--color-text-secondary);font-size:var(--font-size-lg);font-weight:600;text-align:center}.solver-instructions{width:0;min-width:100%;margin:0;color:var(--color-text-muted);font-size:var(--font-size-sm);line-height:var(--line-height-loose);overflow-wrap:break-word;word-break:break-word}.solver-container h3{margin:var(--space-md) 0;color:var(--color-text-primary);font-size:var(--font-size-lg);font-weight:600}.solver-container h4{margin:var(--space-md) 0 var(--space-sm);color:var(--color-text-secondary);font-size:var(--font-size-base);font-weight:600}.btn--solver{padding:var(--space-sm) var(--space-lg);border-color:var(--solver-accent);color:var(--solver-accent);font-size:var(--font-size-base);font-weight:600;background:0 0;transition:color .15s ease,border-color .15s ease,background-color .15s ease}.btn--solver:not(:disabled):hover{color:var(--solver-accent-bright);border-color:var(--solver-accent-bright);background:0 0}.btn--solver.is-active{background:var(--solver-accent);border-color:var(--solver-accent);color:var(--color-bg-primary);font-weight:700}.btn--solver.is-active:not(:disabled):hover{background:var(--solver-accent-bright);border-color:var(--solver-accent-bright);color:var(--color-bg-primary)}.btn--solver.is-disabled,.btn--solver:disabled{opacity:.4;cursor:not-allowed}.solver-controls{display:flex;flex-wrap:wrap;gap:var(--space-sm);justify-content:space-around}.solver-controls.is-left{justify-content:flex-start}.solver-controls.is-centered{justify-content:center}.solver-controls.is-distributed{justify-content:space-around}.solver-toggle{display:inline-flex;align-items:center;gap:var(--space-xs);color:var(--color-text-secondary);font-size:var(--font-size-sm);cursor:pointer;user-select:none}.solver-toggle input[type=checkbox]{width:1rem;height:1rem;accent-color:var(--solver-accent);cursor:pointer}.solver-form-row{display:flex;flex-direction:column;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);background:var(--color-bg-secondary);border:1px solid var(--color-border-subtle);border-radius:8px}.solver-form-row label{color:var(--color-text-secondary);font-size:var(--font-size-sm);font-weight:500}.solver-color-dot{display:inline-block;width:.75em;height:.75em;border-radius:50%;margin-right:.4em;vertical-align:middle;background:var(--dot-color,currentColor)}.solver-text--green{color:var(--color-tip-text)}.solver-text--pink{color:#e08bbf}.solver-text--red{color:var(--color-no-return-text)}.solver-text--gold{color:var(--solver-accent)}.solver-container input[type=number],.solver-container input[type=text]{width:100%;padding:var(--space-sm) var(--space-md);background-color:var(--color-bg-tertiary);color:var(--color-text-primary);border:1px solid var(--color-border-medium);border-radius:4px;font-size:var(--font-size-base);transition:border-color .15s ease,background-color .15s ease}.solver-container select{width:100%;background-color:var(--color-bg-tertiary);color:var(--color-text-primary);border:1px solid var(--color-border-medium);border-radius:4px;font-size:var(--font-size-base);transition:border-color .15s ease,background-color .15s ease}.solver-container input:focus,.solver-container select:focus{outline:0;border-color:var(--solver-accent);background-color:var(--color-bg-secondary)}@media (width >= 48.0625em){.solver-form-row{flex-direction:row;align-items:center}.solver-form-row label{flex:0 0 auto}.solver-form-row input,.solver-form-row select{flex:1}}.solver-grid-wrapper{display:flex;justify-content:center;width:100%;overflow-x:auto}.solver-grid-wrapper.is-fit{overflow-x:visible}.solver-grid{display:grid;grid-template-columns:repeat(var(--solver-cols),var(--solver-cell-size));grid-template-rows:repeat(var(--solver-rows),var(--solver-cell-size));gap:var(--solver-cell-gap)}.solver-grid.is-framed{--solver-frame-bg:#111;--solver-frame-border:var(--color-border-medium);--solver-frame-padding:var(--space-xs);--solver-frame-border-width:3px;padding:var(--solver-frame-padding);background:var(--solver-frame-bg);border:var(--solver-frame-border-width) solid var(--solver-frame-border);border-radius:5px}.solver-cell{display:flex;align-items:center;justify-content:center;width:var(--solver-cell-size);height:var(--solver-cell-size);background:var(--solver-cell-bg);border:var(--solver-cell-border-width) solid var(--solver-cell-border);border-radius:var(--solver-cell-radius);color:var(--color-text-primary);font-size:var(--font-size-base);cursor:pointer;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease;user-select:none;-webkit-tap-highlight-color:transparent}.solver-cell:focus-visible{outline:2px solid var(--solver-accent);outline-offset:2px}.solver-cell.is-locked,.solver-cell[aria-disabled=true]{cursor:default}.solver-symbol-select{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.solver-symbol-select.is-grid{--symbol-size:clamp(3.5rem, 18vw, 5rem);--symbol-cols:auto-fit;display:grid;grid-template-columns:repeat(var(--symbol-cols),minmax(0,var(--symbol-size)));gap:var(--space-sm);width:100%;max-width:31.25rem;margin:0 auto}.solver-symbol-select button{padding:var(--space-xs);background-color:var(--color-bg-tertiary);border:2px solid var(--color-border-medium);border-radius:8px;cursor:pointer;transition:border-color .15s ease,background-color .15s ease,box-shadow .15s ease,opacity .15s ease}.solver-symbol-select button:hover:not(:disabled){background-color:var(--color-bg-secondary);border-color:var(--solver-accent)}.solver-symbol-select button:disabled{opacity:.4;cursor:not-allowed;border-color:var(--color-border-subtle)}.solver-symbol-select button.is-selected{border-color:var(--solver-accent);box-shadow:0 0 8px var(--solver-accent-glow)}.solver-symbol-select button.is-placed{opacity:.5}.solver-symbol-select img{display:block;width:100%;height:auto;aspect-ratio:1;object-fit:contain}.solver-symbol-select:not(.is-grid) img{width:var(--solver-cell-size);height:var(--solver-cell-size)}.solver-letter-grid{--letter-half-size:clamp(2.75rem, 12vw, 3.125rem);--letter-cell-size:calc(var(--letter-half-size) * 2);display:grid;grid-template-columns:repeat(auto-fit,var(--letter-cell-size));gap:var(--space-md);justify-content:center;width:100%;max-width:calc(var(--letter-cell-size) * 4 + var(--space-md) * 3);margin-inline:auto}.solver-letter-cell{display:flex;align-items:stretch;padding:0;background:var(--color-bg-tertiary);border:2px solid var(--color-border-medium);border-radius:4px;overflow:hidden;color:var(--color-text-primary);cursor:pointer;transition:border-color .15s ease,opacity .15s ease,box-shadow .15s ease;-webkit-tap-highlight-color:transparent}.solver-letter-cell.is-disabled,.solver-letter-cell:disabled{opacity:.35;cursor:not-allowed}.solver-letter-cell.is-selected{border-color:var(--solver-accent);box-shadow:0 0 0 1px var(--solver-accent),0 0 8px var(--solver-accent-glow)}.solver-letter-cell.is-static{cursor:default}.solver-letter-cell.is-static:hover{border-color:var(--color-border-medium)}.solver-letter-cell__letter{width:var(--letter-half-size);height:var(--letter-half-size);display:flex;align-items:center;justify-content:center;font-size:1.5rem;font-weight:700;color:var(--color-text-primary)}.solver-letter-cell__image{display:block;width:var(--letter-half-size);height:var(--letter-half-size);object-fit:contain}.solver-image-row{display:flex;flex-wrap:wrap;gap:var(--space-sm);justify-content:center}.solver-image-row img{display:block;width:var(--solver-cell-size);height:var(--solver-cell-size);object-fit:contain;border-radius:4px}.solver-stack{display:flex;flex-direction:column;gap:var(--space-sm)}.solver-swatch-row{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.solver-color-swatch{width:2rem;height:2rem;padding:0;background:var(--swatch-color,var(--color-bg-tertiary));border:2px solid var(--color-border-medium);border-radius:4px;cursor:pointer;opacity:.35;transition:opacity .15s ease,border-color .15s ease,box-shadow .15s ease;-webkit-tap-highlight-color:transparent}.solver-color-swatch:hover:not(:disabled){opacity:.7;border-color:var(--color-text-muted)}.solver-color-swatch.is-selected{opacity:1;border-color:var(--solver-accent);box-shadow:0 0 0 2px var(--solver-accent),0 0 8px var(--solver-accent-glow)}.solver-color-swatch.is-selected:hover{opacity:1}.solver-color-swatch:focus-visible{opacity:1;outline:2px solid var(--solver-accent);outline-offset:2px}.solver-slot-row{display:flex;flex-direction:column;gap:var(--space-xs)}.solver-slot-row__label{color:var(--color-text-secondary);font-size:var(--font-size-sm);font-weight:500}@media (width >= 30em){.solver-slot-row{flex-direction:row;align-items:center;gap:var(--space-md)}.solver-slot-row__label{flex:0 0 auto;min-width:4.5rem}}.solver-step-label{margin:var(--space-sm) 0 0;color:var(--solver-accent);font-size:var(--font-size-sm);font-weight:600;text-transform:uppercase;letter-spacing:.05em}.solver-text-picker{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-xs)}.solver-text-picker button{padding:var(--space-xs) var(--space-md);background-color:var(--color-bg-tertiary);border:1.5px solid var(--color-border-medium);border-radius:4px;color:var(--color-text-primary);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;transition:border-color .15s ease,background-color .15s ease,opacity .15s ease,box-shadow .15s ease}.solver-text-picker button:hover:not(:disabled){border-color:var(--solver-accent)}.solver-text-picker button:disabled{opacity:.4;cursor:not-allowed}.solver-text-picker button.is-selected{border-color:var(--solver-accent);box-shadow:0 0 0 1px var(--solver-accent),0 0 6px var(--solver-accent-glow)}.solver-output{width:0;min-width:100%;padding:var(--space-md);background:var(--color-bg-primary);border:1px solid var(--color-border-subtle);border-radius:8px;box-shadow:inset 0 2px 4px rgb(0 0 0 / 30%);overflow-wrap:break-word;word-break:break-word}.solver-output>*+*{margin-top:var(--space-sm)}.solver-output p{margin:0}.solver-formula-list{display:flex;flex-direction:column;gap:var(--space-sm);margin:0;padding:0;list-style:none}.solver-formula-list li{display:flex;flex-direction:column;gap:2px}.solver-formula-list__name{font-weight:600;color:var(--color-text-secondary);font-size:var(--font-size-sm)}.solver-formula-list__ingredients{color:var(--color-text-primary)}.solver-formula-list__number{color:var(--solver-accent);font-weight:600}.solver-word-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(7rem,1fr));gap:var(--space-xs);max-height:18.75rem;margin:0;padding:0;list-style:none;overflow-y:auto;scrollbar-width:none}.solver-word-list::-webkit-scrollbar{display:none}.solver-word-list li{padding:var(--space-xs) var(--space-sm);background:var(--color-bg-tertiary);border-radius:4px;color:var(--color-text-primary);font-size:var(--font-size-sm);text-align:center}.solver-word-list--empty{color:var(--color-text-muted);font-style:italic;text-align:center}.solver-result-list{display:flex;flex-direction:column;gap:var(--space-xs);margin:0;padding:0;list-style:none}.solver-result-list li{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-xs) var(--space-sm);padding:var(--space-xs) var(--space-sm);background:var(--color-bg-tertiary);border-radius:4px;color:var(--color-text-primary);font-size:var(--font-size-sm)}.solver-result-list__key{font-weight:700;color:var(--solver-accent);font-size:var(--font-size-base)}.solver-result-list__descriptor{flex:1;color:var(--color-text-primary)}.solver-result-list__meta{color:var(--color-text-primary);font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace;font-size:var(--font-size-base)}.solver-result-section+.solver-result-section{margin-top:var(--space-md)}.solver-result-section__heading{margin:0 0 var(--space-xs);color:var(--color-text-secondary);font-size:var(--font-size-sm);font-weight:600;text-transform:uppercase;letter-spacing:.05em}.solver-output.is-centered{display:flex;justify-content:center}.solver-error{width:0;min-width:100%;color:var(--color-danger-text);font-size:var(--font-size-sm);overflow-wrap:break-word;word-break:break-word}@keyframes solver-recalc{from{opacity:.3}to{opacity:1}}.solver-output.is-recalc{animation:solver-recalc .15s ease-out}.solver-debug-panel{width:0;min-width:100%;padding:var(--space-sm) var(--space-md);background:var(--color-bg-secondary);border:1px dashed var(--color-border-medium);border-radius:4px;color:var(--color-text-secondary);font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace;font-size:var(--font-size-sm);line-height:var(--line-height-normal);white-space:pre-wrap;overflow-wrap:break-word;overflow-x:auto}.solver-container--totenreich-reactor{--solver-cols:4;--solver-rows:4;--solver-cell-size:clamp(2.25rem, 16vw, 4.375rem);--solver-cell-gap:3px}.reactor-cell.cell-rod{background:#4a4a52;border-color:#666;box-shadow:inset 0 1px 3px rgb(0 0 0 / 50%)}.reactor-cell.cell-rod:hover{background:#5a5a62;border-color:#666}.reactor-cell.cell-uranium{background:#00c853;border-color:#69f0ae;box-shadow:0 0 8px rgb(0 200 83 / 70%),inset 0 1px 3px rgb(255 255 255 / 20%);cursor:default}.reactor-cell.cell-activated{background:var(--solver-accent);border-color:var(--solver-accent-bright);box-shadow:0 0 6px var(--solver-accent-glow);cursor:default}.solver-container--venom-maze{--solver-cols:6;--solver-rows:6;--solver-cell-size:clamp(2.25rem, 13vw, 3.75rem);--solver-cell-gap:2px}.solver-container--venom-maze .solver-grid.is-framed{--solver-frame-bg:#d4a961;--solver-frame-border:var(--color-bg-primary);--solver-frame-padding:var(--space-sm);--solver-frame-border-width:3px;position:relative}.venom-cell{position:relative;background:#4a9d4a;border:1px solid #2d5f2d;cursor:pointer}.venom-cell.is-target{background:#5aba5a}.venom-canvas{position:absolute;top:0;left:0;pointer-events:none;z-index:10}.venom-piece{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}.venom-piece.is-preview{opacity:.6}.solver-container--floppy .solver-symbol-select.is-grid{--symbol-cols:4;--symbol-size:clamp(2.25rem, 16vw, 4.375rem)}.solver-container--floppy .solver-symbol-select.is-grid button{padding:0;border-width:1.5px}.solver-container--floppy .solver-image-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-sm);flex-wrap:nowrap}.solver-container--floppy .solver-image-row img{width:100%;height:auto;aspect-ratio:1;max-width:var(--solver-cell-size);justify-self:center}.solver-container--mahjong{--mahjong-tile-size:clamp(2.25rem, 9vw, 3rem);--mahjong-tile-gap:2px;--mahjong-meld-gap:var(--space-md);--mahjong-pair-gap:var(--space-xl)}.solver-container--mahjong .solver-symbol-select{justify-content:center;gap:var(--space-sm)}.solver-container--mahjong .solver-symbol-select button{padding:var(--space-xs)}.solver-container--mahjong .solver-symbol-select img{width:var(--mahjong-tile-size);height:var(--mahjong-tile-size)}.mahjong-progress-row{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--mahjong-tile-gap)}.mahjong-tile{width:var(--mahjong-tile-size);height:var(--mahjong-tile-size);object-fit:contain;border-radius:4px;background:var(--color-bg-secondary);cursor:pointer;transition:opacity .15s ease,box-shadow .15s ease}.mahjong-tile:hover{box-shadow:0 0 0 1px var(--solver-accent)}.mahjong-tile-empty{width:var(--mahjong-tile-size);height:var(--mahjong-tile-size);border:1.5px dashed var(--color-border-medium);border-radius:4px}.mahjong-hand{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:var(--mahjong-meld-gap)}.mahjong-meld{display:flex;gap:var(--mahjong-tile-gap)}.mahjong-meld.is-pair{margin-left:calc(var(--mahjong-pair-gap) - var(--mahjong-meld-gap))}.mahjong-meld .mahjong-tile{cursor:default}.mahjong-meld .mahjong-tile:hover{box-shadow:none}.solver-container--statue{--statue-button-size:clamp(2.75rem, 12vw, 3.5rem)}.statue-row{display:flex;flex-direction:column;gap:var(--space-xs);align-items:center}.statue-row__buttons,.statue-row__labels{display:flex;gap:var(--space-md);justify-content:center}.statue-row__buttons .btn--solver{width:var(--statue-button-size);height:var(--statue-button-size);padding:0;font-size:1.5rem;line-height:1}.statue-row__labels span{width:var(--statue-button-size);text-align:center;color:var(--color-text-secondary);font-weight:600;font-size:var(--font-size-sm)}.statue-hint{margin:0;color:var(--color-text-muted);font-size:var(--font-size-sm);font-style:italic;text-align:center}.solver-container--hammer{--statue-button-size:clamp(2.75rem, 12vw, 3.5rem)}.hammer-row{display:flex;flex-direction:column;align-items:center;gap:var(--space-sm)}.hammer-row__item{display:flex;align-items:center;gap:var(--space-md)}.hammer-row__label{width:1.25rem;text-align:right;color:var(--color-text-secondary);font-weight:600;font-size:var(--font-size-base)}.hammer-row__item .btn--solver{width:var(--statue-button-size);height:var(--statue-button-size);padding:0;font-size:1.5rem;line-height:1}.solver-container--beamsmasher .solver-symbol-select.is-grid{--symbol-cols:6;--symbol-size:clamp(2.25rem, 13vw, 3.5rem)}.solver-container--beamsmasher .solver-symbol-select.is-grid button{padding:0;border-width:1.5px}.solver-slot-list{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-sm)}.solver-slot{--slot-half-size:clamp(2rem, 8vw, 2.5rem);display:flex;align-items:stretch;padding:0;background:var(--color-bg-tertiary);border:2px dashed var(--color-border-medium);border-radius:4px;overflow:hidden;color:var(--color-text-muted);transition:border-color .15s ease,background-color .15s ease}.solver-slot.is-filled{border-style:solid;border-color:var(--solver-accent);color:var(--color-text-primary);cursor:pointer}.solver-slot.is-filled:hover{border-color:var(--solver-accent-bright)}.solver-slot__label{width:var(--slot-half-size);height:var(--slot-half-size);display:flex;align-items:center;justify-content:center;font-size:1.125rem;font-weight:700;color:var(--color-text-primary)}.solver-slot__image{display:block;width:var(--slot-half-size);height:var(--slot-half-size);object-fit:contain}.solver-slot__placeholder{width:var(--slot-half-size);height:var(--slot-half-size);display:flex;align-items:center;justify-content:center;font-size:1.125rem;font-weight:600;color:var(--color-text-muted)}.solver-slot.is-text{align-items:center;min-width:12rem;height:auto;padding:var(--space-xs) var(--space-sm);gap:var(--space-sm)}.solver-slot.is-text .solver-slot__label{width:auto;height:auto;flex:0 0 auto}.solver-slot.is-text .solver-slot__text{flex:1;color:var(--color-text-primary);font-size:var(--font-size-sm);font-weight:500}.solver-slot.is-text .solver-slot__placeholder{flex:1;width:auto;height:auto;justify-content:flex-start;font-size:var(--font-size-sm);font-weight:400;font-style:italic}.solver-container--queens{--queens-cell-size:clamp(2rem, 10.5vw, 3rem);--queens-light:#eeeed2;--queens-dark:#769656;--queens-frame:#1a1a1a}.queens-board{display:grid;grid-template-columns:repeat(8,var(--queens-cell-size));grid-template-rows:repeat(8,var(--queens-cell-size));border:4px solid var(--queens-frame);margin:0 auto}.queens-cell{width:var(--queens-cell-size);height:var(--queens-cell-size);cursor:pointer;transition:filter .15s ease;-webkit-tap-highlight-color:transparent}.queens-cell--light{background:var(--queens-light)}.queens-cell--dark{background:var(--queens-dark)}.queens-cell.is-queen{background-image:url("https://upload.wikimedia.org/wikipedia/commons/4/47/Chess_qdt45.svg");background-size:contain;background-repeat:no-repeat;background-position:center}.solver-container--queens[data-phase=setup] .queens-cell:hover{filter:brightness(1.15)}.solver-container--queens[data-phase=solved] .queens-cell{cursor:default}