.ocri-backdrop{position:fixed;inset:0;z-index:2147482100;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;padding:16px;box-sizing:border-box}
.ocri-dot{width:8px;height:8px;border-radius:50%;flex:0 0 8px;background:#9ca3af}.ocri-dot-online{background:#4bc563}.ocri-dot-inGame{background:#f97316}.ocri-dot-puzzle{background:#8b5cf6}.ocri-status{font-size:12px;color:#64748b;margin:0;min-width:0;overflow-wrap:anywhere}
.ocri-dialog,.ocri-notice{font-family:system-ui,-apple-system,sans-serif;color:#172033;background:#fff;border:1px solid #cbd5e1;border-radius:14px;box-shadow:0 12px 36px #0003;font-size:15px;line-height:1.45;box-sizing:border-box}
.ocri-dialog{width:min(440px,100%);max-height:min(560px,calc(100vh - 32px));max-height:min(560px,calc(100dvh - 32px));display:flex;flex-direction:column;padding:12px;gap:8px;min-height:0;text-align:left}
.ocri-head{display:flex;align-items:center;gap:8px;justify-content:space-between;flex-shrink:0}.ocri-head h2{font-size:16px;line-height:1.3;margin:0;min-width:0;overflow-wrap:anywhere}.ocri-dialog button,.ocri-notice button{font:inherit;min-height:40px;border:1px solid #cbd5e1;border-radius:8px;padding:6px 12px;background:#fff;color:inherit;cursor:pointer;white-space:normal}
.ocri-dialog .ocri-close{flex:0 0 40px;width:40px;height:40px;padding:0;font-size:24px;line-height:1;border-color:transparent;background:transparent}
.ocri-dialog button:disabled{opacity:.55;cursor:default}.ocri-dialog button:focus-visible,.ocri-notice button:focus-visible{outline:3px solid #60a5fa;outline-offset:2px}.ocri-dialog button.ocri-primary,.ocri-notice button.ocri-primary{background:#2357c7;color:#fff;border-color:#2357c7}
.ocri-list{overflow:auto;overscroll-behavior:contain;min-height:0;flex:0 1 auto;-webkit-overflow-scrolling:touch}.ocri-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid #e2e8f0}.ocri-row:last-child{border-bottom:0}
/* Same square-photo/two-line pattern as Arena player cards and match-ready players. */
.ocri-player{flex:1 1 0;min-width:0;display:grid;grid-template-columns:40px minmax(0,1fr);grid-template-rows:auto auto;column-gap:8px;row-gap:3px;align-items:center}
.ocri-dialog .ocri-photo{grid-column:1;grid-row:1 / span 2;align-self:center;display:block;box-sizing:border-box;width:40px;height:40px;margin:0;border:1px solid rgba(148,163,184,.3);border-radius:4px;background:#e5e7eb;object-fit:cover}
.ocri-identity{grid-column:2;grid-row:1;min-width:0;font-size:14px;line-height:20px}.ocri-dialog .pz-player-cell{display:flex;align-items:center;min-width:0}.ocri-dialog .pz-nick-tip{display:flex;min-width:0;flex:1}.ocri-dialog .pz-id-text{display:flex;align-items:center;min-width:0;max-width:100%;white-space:nowrap;overflow:hidden}.ocri-dialog .ocri-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#254ead;line-height:1.3}
.ocri-meta{grid-column:2;grid-row:2;display:flex;align-items:center;gap:6px;margin:0;line-height:16px;min-width:0}.ocri-rating{font-size:13px;color:#64748b;flex:0 0 auto;font-variant-numeric:tabular-nums}.ocri-row>button{font-size:12px;line-height:1.25;min-width:52px;max-width:30%;padding:6px 9px;flex:0 0 auto}.ocri-foot{display:flex;justify-content:flex-end;flex-shrink:0;padding-top:8px;border-top:1px solid #e2e8f0}.ocri-foot button{font-size:13px}.ocri-error{color:#b91c1c;overflow-wrap:anywhere;font-size:14px}.ocri-error:empty{display:none}
.ocri-notice{position:fixed;z-index:2147482050;top:calc(env(safe-area-inset-top,0px) + 14px);left:50%;transform:translateX(-50%);width:min(460px,calc(100% - 24px));padding:14px;overflow-wrap:anywhere}.ocri-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:10px;flex-wrap:wrap}.ocri-backdrop[hidden],.ocri-notice[hidden]{display:none!important}
.ocri-notice.ocri-inline{position:static;transform:none;width:100%;margin:10px 0 0;box-shadow:none;z-index:auto;padding:10px}.ocri-inline .ocri-actions{margin-top:6px}.ocri-inline button{min-height:34px}
html[data-theme="dark"] .ocri-dialog,html[data-theme="dark"] .ocri-notice,body.dark .ocri-dialog,body.dark .ocri-notice{background:#172033;color:#e5e7eb;border-color:#475569}html[data-theme="dark"] .ocri-dialog button,html[data-theme="dark"] .ocri-notice button{background:#26344c;color:#e5e7eb;border-color:#475569}html[data-theme="dark"] .ocri-row{border-color:#475569}
html.fs-app-theme-dark .ocri-dialog,html.fs-app-theme-dark .ocri-notice{background:var(--fs-app-surface,#172033);color:var(--fs-app-text,#e5e7eb);border-color:var(--fs-app-border,#475569)}html.fs-app-theme-dark .ocri-dialog button,html.fs-app-theme-dark .ocri-notice button{background:#26344c;color:#e5e7eb;border-color:#475569}html.fs-app-theme-dark .ocri-row{border-color:#475569}html.fs-app-theme-dark .ocri-status,html.fs-app-theme-dark .ocri-rating{color:#cbd5e1}
html.fs-app-theme-dark .ocri-dialog .ocri-name,html[data-theme="dark"] .ocri-dialog .ocri-name{color:#93c5fd}html.fs-app-theme-dark .ocri-foot,html[data-theme="dark"] .ocri-foot{border-color:#475569}html.fs-app-theme-dark .ocri-dialog .ocri-close,html[data-theme="dark"] .ocri-dialog .ocri-close{background:transparent;border-color:transparent}html.fs-app-theme-dark .ocri-dialog button.ocri-primary:not(:disabled),html[data-theme="dark"] .ocri-dialog button.ocri-primary:not(:disabled){background:#2357c7;border-color:#2357c7;color:#fff}
/* Readable list text (15–16px) and the online challenge-dialog heading (18px),
   shared by desktop/mobile. Never resize puzzle inline notices or the board. */
  .ocri-dialog{font-size:16px}
  .ocri-dialog .ocri-head h2{font-size:18px}
  .ocri-dialog .ocri-identity,.ocri-dialog .ocri-name{font-size:16px;line-height:21px}
  .ocri-dialog .ocri-rating{font-size:15px}
  .ocri-dialog .ocri-status{font-size:14px}
  .ocri-dialog .ocri-meta{line-height:20px}
  .ocri-dialog .ocri-row>button,.ocri-dialog .ocri-foot button{font-size:15px}
  .ocri-dialog .ocri-player{grid-template-columns:44px minmax(0,1fr)}
  .ocri-dialog .ocri-photo{width:44px;height:44px}
@media(max-width:991px){
  .ocri-dialog .ocri-row>button,.ocri-dialog .ocri-foot button{min-height:44px}
  .ocri-dialog .ocri-close{width:44px;height:44px;flex-basis:44px}
}
