/* the wallet grinder (public/js/grind.js) */
.grind { display: grid; gap: 16px; grid-template-columns: minmax(0, 1fr); }
@media (min-width: 980px) { .grind { grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr); } }
.g-set .body { display: grid; gap: 16px; }
.g-pattern { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); align-items: end; gap: 10px; }
.g-in { display: grid; gap: 7px; }
.g-in span { font: 500 10.5px/1 var(--mono); letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
.g-in input { height: auto; font: 600 clamp(26px, 3.4vw, 36px)/1.1 var(--mono); letter-spacing: -.02em; padding: 14px 16px; border-radius: 16px; color: var(--amber); background: rgba(6, 8, 14, .7); border: 1px solid var(--line2); min-width: 0; width: 100%; }
.g-in input:focus { border-color: rgba(255, 181, 71, .6); outline: none; box-shadow: 0 0 0 4px rgba(255, 181, 71, .12); }
.g-in input::placeholder { color: var(--faint); font-weight: 500; }
.g-dots { font: 600 30px/1 var(--mono); color: var(--faint); padding-bottom: 18px; }
.g-opts { gap: 10px 18px; }
.g-opts select { margin-left: auto; }
.g-odds { margin: 0; font: 500 13.5px/1.5 var(--mono); color: var(--ink2); min-height: 20px; }
.g-odds.err { color: var(--bad); }
.g-go { justify-self: start; min-width: 200px; font-size: 16px; padding: 14px 22px; }
.g-go.stop { background: rgba(255, 107, 107, .14); color: var(--bad); border-color: rgba(255, 107, 107, .4); box-shadow: none; }
.g-machine header { display: flex; align-items: center; justify-content: space-between; }
.g-led { width: 9px; height: 9px; border-radius: 50%; background: var(--faint); box-shadow: none; animation: none; }
.g-machine.on .g-led { background: var(--good); box-shadow: 0 0 10px var(--good); animation: pulse 1.2s ease-in-out infinite; }
.g-machine.on { border-color: rgba(255, 181, 71, .35); background: radial-gradient(600px 240px at 100% 0%, rgba(255, 181, 71, .08), transparent 70%), var(--s1); }
.g-nums { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1px; background: var(--line); border: 1px solid var(--line); border-radius: 16px; overflow: hidden; }
.g-nums > div { background: rgba(6, 8, 14, .6); padding: 12px 14px; }
.g-nums .k { font: 500 10px/1.2 var(--mono); letter-spacing: .13em; text-transform: uppercase; color: var(--muted); }
.g-nums .v { font: 600 clamp(18px, 2.4vw, 26px)/1.1 var(--mono); margin-top: 8px; letter-spacing: -.03em; font-variant-numeric: tabular-nums; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.g-chance { display: grid; gap: 8px; margin-top: 14px; font-size: 13px; color: var(--muted); }
.g-chance b { color: var(--ink); font-family: var(--mono); }
.g-bar { height: 10px; border-radius: 999px; background: rgba(255,255,255,.05); border: 1px solid var(--line); overflow: hidden; }
.g-bar i { display: block; height: 100%; width: 0; border-radius: 999px; background: linear-gradient(90deg, var(--amber), var(--good)); transition: width .3s var(--ease); }
.g-stream { margin-top: 14px; display: grid; gap: 4px; min-height: 150px; align-content: start; padding: 12px 14px; border-radius: 14px; background: rgba(6, 8, 14, .55); border: 1px solid var(--line); overflow: hidden; }
.g-try { font: 500 12.5px/1.55 var(--mono); color: var(--faint); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.g-try:first-child { color: var(--ink2); }
.gaddr b.hit { color: var(--amber); font-weight: 700; text-shadow: 0 0 16px rgba(255, 181, 71, .45); }
.gaddr b.near { color: var(--ink); font-weight: 700; }
.g-empty { display: flex; align-items: center; gap: 18px; }
.g-empty img { width: 72px; height: 72px; filter: drop-shadow(0 10px 12px rgba(0,0,0,.5)); animation: breathe 4s ease-in-out infinite; }
.g-empty b { font: 640 18px/1.2 var(--display); }
.g-empty p { margin: 6px 0 0; font-size: 13.5px; max-width: 560px; }
.g-hit { display: grid; gap: 10px; padding: 16px 0; border-top: 1px solid var(--line); animation: hxin .5s var(--ease) both; }
.g-hit:first-child { border-top: 0; padding-top: 4px; }
.g-hit-addr { font: 600 clamp(15px, 2vw, 21px)/1.4 var(--mono); word-break: break-all; color: var(--ink2); }
.g-hit-meta { font-size: 12.5px; }
.g-key { font: 500 12.5px/1.5 var(--mono); word-break: break-all; padding: 10px 12px; border-radius: 12px; background: rgba(255, 107, 107, .06); border: 1px dashed rgba(255, 107, 107, .35); user-select: all; }
.g-out { font-size: 13px; min-height: 18px; }
.g-how .prose p { font-size: 14.5px; }
.g-how code { font-size: 12.5px; }
@media (max-width: 640px) { .g-pattern { grid-template-columns: minmax(0, 1fr); } .g-dots { display: none; } .g-opts select { margin-left: 0; } .g-go { width: 100%; } }
.g-opts select { height: 34px; padding-right: 30px !important; background-position: calc(100% - 16px) 14px, calc(100% - 11px) 14px; font: 500 13px/1 var(--sans); color: var(--ink2); background: rgba(6, 8, 14, .7); border: 1px solid var(--line2); border-radius: 10px; padding: 8px 10px; }
.g-preview { margin-top: 4px; padding: 14px 16px; border-radius: 16px; border: 1px dashed var(--line2); background: rgba(255,255,255,.015); display: grid; gap: 8px; }
.g-preview .k { font: 500 10px/1 var(--mono); letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
#preview { font: 600 clamp(13px, 1.5vw, 16px)/1.4 var(--mono); word-break: break-all; color: var(--faint); letter-spacing: .02em; }
#preview b { color: var(--amber); text-shadow: 0 0 16px rgba(255, 181, 71, .4); }
#preview span { letter-spacing: .12em; opacity: .55; }
