.memory-shell{width:100%;max-width:560px;margin-inline:auto;color:var(--ink,#172125);font-variant-numeric:tabular-nums}
.memory-shell *{box-sizing:border-box}
.memory-info{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:16px;flex-wrap:wrap;font-size:14px;font-weight:650}
.memory-detail{display:flex;gap:12px;color:var(--muted,#4b575c);flex-wrap:wrap}
.memory-prompt{min-height:48px;margin:0 0 16px;text-align:center;font-size:16px;line-height:1.5;text-wrap:pretty}
.memory-body{display:flex;flex-direction:column;align-items:center;gap:16px}
.memory-grid{display:grid;width:100%;max-width:480px;grid-template-columns:repeat(var(--memory-cols),minmax(0,1fr));gap:8px}
.memory-cell{appearance:none;display:flex;align-items:center;justify-content:center;min-height:48px;aspect-ratio:1;border:2px solid var(--line,#dedfda);border-radius:12px;background:var(--surface,#ffffff);color:var(--ink,#172125);font:inherit;font-size:clamp(20px,5vw,32px);font-weight:700;cursor:pointer;touch-action:manipulation;transition:background-color .12s,border-color .12s,transform .12s;user-select:none;-webkit-tap-highlight-color:transparent}
.memory-cell:hover:not(:disabled){border-color:var(--red,#c92d3b);background:var(--red-light,#fbe9e9)}
.memory-cell:active:not(:disabled){transform:translateY(1px)}
.memory-cell:focus-visible,.memory-button:focus-visible,.memory-key:focus-visible,.memory-number-input:focus-visible{outline:3px solid var(--blue,#285bc2);outline-offset:3px}
.memory-cell:disabled{cursor:default;opacity:1}
.memory-cell.is-shown{background:var(--red,#c92d3b);border-color:var(--red,#c92d3b);color:var(--surface,#ffffff)}
.memory-cell.is-correct{background:var(--green-light,#e5f2ec);border-color:var(--green,#12694b);color:var(--green,#12694b)}
.memory-cell.is-wrong{background:var(--red-light,#fbe9e9);border-color:var(--red,#c92d3b);color:var(--red-dark,#9e1c2a)}
.memory-cell.is-empty{visibility:hidden}
.memory-cell.is-face:not(.is-correct){background:var(--blue-light,#e8efff);border-color:var(--blue,#285bc2);color:var(--blue,#285bc2)}
.memory-number{display:flex;align-items:center;justify-content:center;width:100%;min-height:128px;padding:16px 8px;border-radius:16px;background:var(--paper,#faf9f6);font-size:clamp(24px,6vw,40px);font-weight:750;letter-spacing:.08em;overflow-wrap:anywhere;text-align:center}
.memory-number.is-answer{background:var(--blue-light,#e8efff)}
.memory-number-form{display:flex;flex-direction:column;align-items:stretch;width:100%;max-width:320px;gap:12px}
.memory-number-form[hidden]{display:none}
.memory-input-label{font-size:14px;line-height:1.5}
.memory-number-input{display:block;width:100%;min-height:48px;padding:8px 12px;margin-top:4px;border:2px solid var(--line,#dedfda);border-radius:8px;background:var(--surface,#ffffff);color:var(--ink,#172125);font:inherit;font-size:24px;text-align:center;letter-spacing:.08em;box-sizing:border-box}
.memory-keypad{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.memory-key{appearance:none;min-height:48px;border:1px solid var(--line,#dedfda);border-radius:8px;background:var(--surface,#ffffff);color:var(--ink,#172125);font:inherit;font-size:20px;cursor:pointer;touch-action:manipulation}
.memory-key:hover{background:var(--paper,#faf9f6);border-color:var(--ink,#172125)}
.memory-button{appearance:none;min-height:48px;padding:12px 24px;border:2px solid var(--red,#c92d3b);border-radius:12px;background:var(--red,#c92d3b);color:var(--surface,#ffffff);font:inherit;font-weight:650;cursor:pointer;touch-action:manipulation;line-height:1.4}
.memory-button:hover{background:var(--red-dark,#9e1c2a);border-color:var(--red-dark,#9e1c2a)}
.memory-button:active,.memory-key:active{transform:translateY(1px)}
.memory-next{margin-top:8px}
@media(max-width:390px){.memory-grid{gap:4px}.memory-cell{border-radius:8px;font-size:20px}.memory-info{font-size:12px}.memory-prompt{font-size:14px}.memory-number{letter-spacing:.04em}}
@media(prefers-reduced-motion:reduce){.memory-cell{transition:none}.memory-cell:active:not(:disabled),.memory-button:active,.memory-key:active{transform:none}}
/* Preserve the protocol's board geometry; compact only the presentation. */
.memory-grid-wrap{width:100%;overflow-x:auto;padding:4px}
.memory-visual-grid{min-width:0;margin-inline:auto;gap:4px}
.memory-visual-grid .memory-cell{min-height:0;padding:0;aspect-ratio:1;font-size:clamp(12px,3vw,24px);border-radius:clamp(3px,1vw,12px)}
.memory-chimp-grid{max-width:560px;gap:4px;grid-template-columns:repeat(8,minmax(0,1fr))}
.memory-chimp-grid .memory-cell{min-height:44px;aspect-ratio:1;padding:0;font-size:clamp(14px,3.8vw,24px);border-radius:8px;line-height:1}
.memory-board-note{font-size:13px;line-height:1.5;color:var(--muted,#4b575c);margin:16px 0 0}
.memory-number{display:block;align-content:center;word-break:break-all;line-height:1.4;padding:24px 12px}
.memory-flash{background:#172125;color:white;font-size:clamp(22px,6vw,40px);letter-spacing:.02em}
.memory-flash.is-answer{background:var(--blue-light,#e8efff);color:var(--ink,#172125)}
.memory-choices{display:flex;flex-wrap:wrap;justify-content:center;gap:12px}

.memory-score{margin:0;font-size:16px;font-weight:650}
.memory-flash{white-space:nowrap;word-break:normal;overflow-wrap:normal;font-family:ui-monospace,monospace;font-size:clamp(16px,4vw,32px);letter-spacing:0}
