.building-safe-overlay { padding: 12px; }
.building-safe-panel { max-height: 100%; }
.building-safe-body { padding: 16px; overflow-y: auto; min-height: 0; scrollbar-width: thin; }
.building-safe-body .building-safe-rules { font-size: .86rem; line-height: 1.5; color: #eadfc7; }
.building-safe-body .building-safe-duplicates { margin-top: 8px; }
.building-safe-body .building-safe-cooldown { color: #ffcf9c; font-variant-numeric: tabular-nums; }
.building-safe-body .building-safe-rules-notice { font-size: .85rem; line-height: 1.5; color: #eadfc7; }
.building-safe-body .building-safe-attempts { margin: 16px 0 12px; font-size: .95rem; font-weight: 700; color: #fff7e7; }
.building-safe-digits { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; max-width: 360px; margin: 0 auto; }
.building-safe-slot { display: flex; flex-direction: column; gap: 6px; min-width: 0; text-align: center; font-size: .72rem; color: #eadfc7; }
.building-safe-slot input {
  box-sizing: border-box; width: 100%; min-width: 44px; height: 62px; border: 2px solid #667562;
  border-radius: 10px; padding: 4px; background: #131a17; color: #fff7e7; text-align: center;
  font: 700 1.9rem ui-monospace, monospace; caret-color: #eadfc7;
}
.building-safe-slot input:focus-visible { outline: 3px solid #c7d7a4; outline-offset: 2px; }
.building-safe-slot input[aria-invalid="true"] { border-color: #ef9d8e; background: #36221f; }
.building-safe-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 16px 0 10px; }
.building-safe-actions .btn, .building-safe-retry { min-height: 44px; font-size: .9rem; }
.building-safe-actions .btn { min-width: 0; width: 100%; padding: .62rem .4rem; white-space: nowrap; font-size: clamp(.78rem, 3.5vw, .9rem); }
.building-safe-submit { --accent: #2868b2; --accent-light: #4387ce; --accent-deep: #173d68; --accent-ink: #f2f7ff; }
.building-safe-panel .building-loot-close { width: 44px; height: 44px; flex-basis: 44px; font-size: 1.5rem; }
.building-safe-panel input:disabled, .building-safe-panel button:disabled { opacity: .5; cursor: default; }
.building-safe-body .building-safe-error { color: #ffb3a6; font-size: .86rem; line-height: 1.4; margin: 10px 0; }
.building-safe-error:empty, .building-safe-result:empty { display: none; }
.building-safe-body .building-safe-result { padding: 10px 12px; border: 1px solid #7d9470; border-radius: 8px; color: #c7e7aa; font-size: .9rem; }
.building-safe-overlay.is-failed .building-safe-result { border-color: #b88559; color: #ffcf9c; }
.building-safe-overlay.is-solved .building-safe-panel { animation: building-safe-unlock .5s ease-out; }
.building-safe-body h5 { margin: 18px 0 10px; color: #fff7e7; font-size: .9rem; }
.building-safe-history { list-style: none; padding: 0; margin: 0; max-height: 32dvh; overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; }
.building-safe-guess { display: grid; grid-template-columns: 3ch max-content minmax(0, 1fr); align-items: center; gap: 8px; padding: 6px 8px; margin: 0 0 4px; border: 1px solid #4b554b; border-radius: 6px; background: #1d2520; line-height: 1.35; animation: building-safe-attempt .22s ease-out; }
.building-safe-guess-number { font-size: .75rem; color: #d8ceb9; white-space: nowrap; font-variant-numeric: tabular-nums; }
.building-safe-guess-digits { font: 700 1rem ui-monospace, monospace; letter-spacing: .02em; white-space: nowrap; }
.building-safe-guess-hits { display: flex; justify-content: flex-end; gap: 8px; font-size: .75rem; white-space: nowrap; }
.building-safe-green { color: #b5e39b; }
.building-safe-yellow { color: #ffdc78; }
.building-safe-retry[hidden], .building-safe-history-empty[hidden], .building-safe-cooldown[hidden], .building-safe-rules-notice[hidden] { display: none; }
@keyframes building-safe-attempt { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } }
@keyframes building-safe-unlock { 50% { box-shadow: 0 0 28px rgba(181, 227, 155, .35); } }
@media (prefers-reduced-motion: reduce) { .building-safe-guess, .building-safe-overlay.is-solved .building-safe-panel { animation: none; } }
