.frequency-decoder-tool{--frequency-decoder-primary: var(--primary-dark,#123b69);--frequency-decoder-brown: #7a3f00;--frequency-decoder-action: #965706;--frequency-decoder-action-soft: #fff6d8;--frequency-decoder-border: #decf7a;--frequency-decoder-border-strong: #cdbb61;--frequency-decoder-surface: #fff8dc;--frequency-decoder-surface-strong: #fff3bf;--frequency-decoder-muted: #7f8fa7;--frequency-decoder-disabled: #f3f0e7;color: var(--frequency-decoder-primary)}.frequency-decoder-description{margin: 0 0 1.1rem;color: var(--frequency-decoder-primary);line-height: 1.6}.frequency-decoder-text-grid{display: grid;grid-template-columns: minmax(0,1fr) minmax(0,1fr);gap: 1rem}.frequency-decoder-card,.frequency-decoder-board,.frequency-decoder-hints{border: 1px solid var(--frequency-decoder-border);border-radius: 8px;background: var(--frequency-decoder-surface);overflow: hidden}.frequency-decoder-card{display: grid;grid-template-rows: auto minmax(13rem,1fr) auto;min-width: 0}.frequency-decoder-card-head,.frequency-decoder-card-foot,.frequency-decoder-board-head{display: flex;align-items: center;gap: .7rem;padding: .75rem}.frequency-decoder-card-head,.frequency-decoder-board-head{justify-content: space-between;border-bottom: 1px solid var(--frequency-decoder-border)}.frequency-decoder-card-foot{justify-content: space-between;min-height: 4.1rem;border-top: 1px solid var(--frequency-decoder-border)}.frequency-decoder-result-foot{justify-content: flex-end}.frequency-decoder-card h2,.frequency-decoder-board h2,.frequency-decoder-hints h2{margin: 0;color: var(--frequency-decoder-brown);font-size: clamp(1rem,.92rem + .22vw,1.18rem);line-height: 1.2}.frequency-decoder-head-actions,.frequency-decoder-foot-actions,.frequency-decoder-board-actions{display: flex;align-items: center;justify-content: flex-end;flex-wrap: wrap;gap: .5rem;flex: 0 0 auto}.frequency-decoder-status{min-width: 0;flex: 1 1 auto;margin: 0;color: var(--frequency-decoder-primary);font-size: .92rem;font-weight: 800;line-height: 1.25;overflow: hidden;text-overflow: ellipsis;white-space: nowrap}.frequency-decoder-action{display: inline-flex;align-items: center;justify-content: center;gap: .45rem;min-height: 2.65rem;padding: .55rem .85rem;border: 1px solid var(--frequency-decoder-border);border-radius: 8px;background: #fffef8;color: var(--frequency-decoder-brown);font: inherit;font-weight: 800;line-height: 1.1;cursor: pointer;transition: transform .12s ease,background-color .12s ease,border-color .12s ease,color .12s ease}.frequency-decoder-action:hover{background: var(--frequency-decoder-action-soft);border-color: var(--frequency-decoder-action)}.frequency-decoder-action:active{transform: translateY(1px)}.frequency-decoder-action:disabled{color: #ad9a78;background: #fffdf4;border-color: #eadfa8;cursor: not-allowed;transform: none}.frequency-decoder-primary-action{background: var(--frequency-decoder-action);border-color: var(--frequency-decoder-action);color: #fff}.frequency-decoder-primary-action:hover{background: #7d4507;color: #fff}.frequency-decoder-primary-action:disabled{background: #c2a176;border-color: #c2a176;color: #fffef8}.frequency-decoder-action-icon{flex: 0 0 auto}.frequency-decoder-textarea{width: 100%;min-width: 0;border: 0;border-radius: 0;padding: .9rem 1rem;resize: vertical;background: #fff;color: var(--frequency-decoder-primary);font: inherit;line-height: 1.55}.frequency-decoder-source-textarea,.frequency-decoder-result-textarea{min-height: 13rem}.frequency-decoder-result-textarea,.frequency-decoder-textarea[readonly]{background: var(--frequency-decoder-disabled);color: color-mix(in srgb,var(--frequency-decoder-primary) 88%,#5f6f84);cursor: default}.frequency-decoder-textarea::placeholder{color: color-mix(in srgb,var(--frequency-decoder-primary) 58%,#fff)}.frequency-decoder-textarea:focus,.frequency-decoder-action:focus-visible,.frequency-decoder-token:focus-visible,.frequency-decoder-slot-button:focus-visible,.frequency-decoder-segmented input:focus-visible + span{outline: 3px solid color-mix(in srgb,var(--frequency-decoder-primary) 35%,#fff);outline-offset: 2px}.frequency-decoder-file{display: none}.frequency-decoder-board,.frequency-decoder-hints{margin-top: 1rem;padding: 0}.frequency-decoder-order-row{display: flex;align-items: center;justify-content: center;flex-wrap: wrap;gap: .7rem;padding: .8rem .85rem 0}.frequency-decoder-order-label{color: var(--frequency-decoder-brown);font-weight: 900}.frequency-decoder-segmented{display: inline-flex;align-items: center;width: max-content;max-width: 100%;padding: .25rem;border: 1px solid var(--frequency-decoder-border);border-radius: 8px;background: #fff}.frequency-decoder-segmented label{display: block;flex: 0 0 auto}.frequency-decoder-segmented input{position: absolute;opacity: 0;pointer-events: none}.frequency-decoder-segmented span{display: flex;align-items: center;justify-content: center;min-height: 2.45rem;padding: .35rem .75rem;border-radius: 7px;color: var(--frequency-decoder-primary);font-weight: 900;cursor: pointer}.frequency-decoder-segmented input:checked + span{background: var(--frequency-decoder-action);color: #fff}.frequency-decoder-grid{display: grid;grid-template-columns: repeat(auto-fit,minmax(5rem,1fr));gap: .55rem;padding: .9rem}.frequency-decoder-cell{display: grid;gap: .35rem;min-width: 0}.frequency-decoder-cipher{display: grid;gap: .05rem;text-align: center}.frequency-decoder-cipher-letter{color: var(--frequency-decoder-brown);font-size: 1.1rem;font-weight: 950}.frequency-decoder-cipher-rate{color: var(--frequency-decoder-primary);font-size: .82rem;font-weight: 800}.frequency-decoder-cell.is-empty{opacity: .58}.frequency-decoder-cell.is-empty .frequency-decoder-slot-button{background: #f3f0e7;border-color: #ddd1a0}.frequency-decoder-cell.is-empty .frequency-decoder-cipher-letter,.frequency-decoder-cell.is-empty .frequency-decoder-cipher-rate{color: #788399}.frequency-decoder-slot-button{display: flex;align-items: center;justify-content: center;min-height: 2.55rem;border: 1px solid var(--frequency-decoder-border);border-radius: 8px;background: #fffef8;color: var(--frequency-decoder-primary);font: inherit;font-size: 1.2rem;font-weight: 950;cursor: pointer;transition: transform .12s ease,background-color .12s ease,border-color .12s ease}.frequency-decoder-slot-button:hover,.frequency-decoder-slot-button.is-selected{border-color: var(--frequency-decoder-action);background: var(--frequency-decoder-surface-strong)}.frequency-decoder-slot-button:active{transform: translateY(1px)}.frequency-decoder-token-panel{margin: 0 .9rem .9rem;padding: .8rem;border: 1px solid var(--frequency-decoder-border);border-radius: 8px;background: #fffaf0}.frequency-decoder-token-panel h3{margin: 0 0 .65rem;color: var(--frequency-decoder-brown);font-size: 1rem;text-align: center}.frequency-decoder-tokens{display: grid;grid-template-columns: repeat(13,minmax(2rem,1fr));gap: .35rem}.frequency-decoder-token{min-height: 2.25rem;border: 1px solid var(--frequency-decoder-border);border-radius: 7px;background: #fff;color: var(--frequency-decoder-primary);font: inherit;font-weight: 950;cursor: pointer;transition: transform .12s ease,background-color .12s ease,border-color .12s ease,color .12s ease}.frequency-decoder-token:hover,.frequency-decoder-token.is-selected{border-color: var(--frequency-decoder-action);background: var(--frequency-decoder-surface-strong)}.frequency-decoder-token.is-used{background: #ece8da;color: #7b879b}.frequency-decoder-token.is-used.is-selected{border-color: var(--frequency-decoder-action);background: #ece8da;color: #6f7890;box-shadow: inset 0 0 0 2px color-mix(in srgb,var(--frequency-decoder-action) 36%,transparent)}.frequency-decoder-token:active{transform: translateY(1px)}.frequency-decoder-export-actions{display: flex;justify-content: center;flex-wrap: wrap;gap: .6rem;padding: 0 .9rem .9rem}.frequency-decoder-hints{padding: .9rem}.frequency-decoder-hints h2{text-align: center;margin-bottom: .75rem}.frequency-decoder-hints-table-wrap{overflow-x: auto}.frequency-decoder-hints-table{width: 100%;border-collapse: collapse;background: #fff;color: var(--frequency-decoder-primary)}.frequency-decoder-hints-table th,.frequency-decoder-hints-table td{border: 1px solid var(--frequency-decoder-border);padding: .65rem .75rem;text-align: center;vertical-align: middle}.frequency-decoder-hints-table th{background: var(--frequency-decoder-surface-strong);color: var(--frequency-decoder-brown)}.frequency-decoder-hints-table td:last-child{font-weight: 900}.frequency-decoder-empty-hints{color: color-mix(in srgb,var(--frequency-decoder-primary) 70%,#fff);font-weight: 800}.frequency-decoder-info-grid{display: grid;grid-template-columns: repeat(3,minmax(0,1fr));gap: 1rem;margin: 1rem 0}.frequency-decoder-info-card,.frequency-decoder-info-note{border: 1px solid var(--frequency-decoder-border,#decf7a);border-radius: 8px;background: var(--frequency-decoder-surface,#fff8dc);padding: 1rem}.frequency-decoder-info-card h3,.frequency-decoder-info-note h3{margin: 0 0 .45rem;color: var(--frequency-decoder-brown,#7a3f00)}.frequency-decoder-info-card p,.frequency-decoder-info-note p{margin: 0}.frequency-decoder-info-table{width: 100%;border-collapse: collapse;margin: 1rem 0}.frequency-decoder-info-table th,.frequency-decoder-info-table td{border: 1px solid var(--frequency-decoder-border,#decf7a);padding: .7rem .8rem;vertical-align: top}.frequency-decoder-info-table th{background: var(--frequency-decoder-surface-strong,#fff3bf);color: var(--frequency-decoder-brown,#7a3f00)}.frequency-decoder-info-table tbody tr:nth-child(even) td{background: #fffaf0}.frequency-decoder-info-link{color: var(--frequency-decoder-brown,#7a3f00);font-weight: 900;text-decoration: underline;cursor: pointer}@media (max-width: 900px){.frequency-decoder-text-grid,.frequency-decoder-info-grid{grid-template-columns: 1fr}}@media (max-width: 640px){.frequency-decoder-card-head,.frequency-decoder-card-foot,.frequency-decoder-board-head{display: grid;justify-items: stretch}.frequency-decoder-head-actions,.frequency-decoder-foot-actions,.frequency-decoder-board-actions{justify-content: stretch}.frequency-decoder-action{width: 100%}.frequency-decoder-segmented{display: grid;width: 100%;grid-template-columns: 1fr 1fr}.frequency-decoder-tokens{grid-template-columns: repeat(7,minmax(2rem,1fr))}}